From 287edcebd3b3cca0be25c07954d57d17e7116e61 Mon Sep 17 00:00:00 2001 From: Stas Boukarev Date: Fri, 10 Feb 2012 17:37:04 +0400 Subject: [PATCH] Add pathname type. --- disk.lisp | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/disk.lisp b/disk.lisp index 64d2680..de1775e 100644 --- a/disk.lisp +++ b/disk.lisp @@ -24,7 +24,8 @@ character simple-vector array - hash-table))) + hash-table + pathname))) (defvar *statistics* ()) (defun collect-stats (code) @@ -443,6 +444,32 @@ (code-char (read-n-bytes +char-length+ stream)))) string)) +;;; Pathname + +(defmethod object-size ((pathname pathname)) + (+ 1 + (object-size (pathname-name pathname)) + (object-size (pathname-directory pathname)) + (object-size (pathname-device pathname)) + (object-size (pathname-type pathname)) + (object-size (pathname-version pathname)))) + +(defmethod write-object ((pathname pathname) stream) + (write-n-bytes #.(type-code 'pathname) 1 stream) + (write-object (pathname-name pathname) stream) + (write-object (pathname-directory pathname) stream) + (write-object (pathname-device pathname) stream) + (write-object (pathname-type pathname) stream) + (write-object (pathname-version pathname) stream)) + +(defreader pathname (stream) + (make-pathname + :name (read-next-object stream) + :directory (read-next-object stream) + :device (read-next-object stream) + :type (read-next-object stream) + :version (read-next-object stream))) + ;;; Cons (defmethod object-size ((list cons))