Update of /project/elephant/cvsroot/elephant/src In directory common-lisp.net:/tmp/cvs-serv22143/src
Modified Files: serializer.lisp Log Message: deserialize can take nil
Date: Sat Aug 28 08:41:00 2004 Author: blee
Index: elephant/src/serializer.lisp diff -u elephant/src/serializer.lisp:1.3 elephant/src/serializer.lisp:1.4 --- elephant/src/serializer.lisp:1.3 Fri Aug 27 19:32:51 2004 +++ elephant/src/serializer.lisp Sat Aug 28 08:41:00 2004 @@ -56,9 +56,9 @@ ;; Constants
(defconstant +fixnum+ (char-code #\f)) +(defconstant +nil+ (char-code #\N)) (defconstant +symbol+ (char-code #\S)) (defconstant +string+ (char-code #\s)) -(defconstant +nil+ (char-code #\N)) (defconstant +persistent+ (char-code #\P)) (defconstant +single-float+ (char-code #\F)) (defconstant +double-float+ (char-code #\D)) @@ -107,6 +107,8 @@ (fixnum (buffer-write-byte +fixnum+ bs) (buffer-write-int frob bs)) + (null + (buffer-write-byte +nil+ bs)) (symbol (let ((s (symbol-name frob))) (declare (type string s) (dynamic-extent s)) @@ -117,8 +119,6 @@ (buffer-write-byte +string+ bs) (buffer-write-int (byte-length frob) bs) (buffer-write-string frob bs)) - (null - (buffer-write-byte +nil+ bs)) (persistent (buffer-write-byte +persistent+ bs) (buffer-write-int (oid frob) bs) @@ -238,7 +238,8 @@
(defun deserialize (buf) (declare (optimize (speed 3) (safety 0)) - (type array-or-pointer-char buf)) + (type (or null array-or-pointer-char) buf)) + (unless buf (return-from deserialize nil)) (setf (buffer-stream-buffer *in-buf*) buf) (setf (buffer-stream-position *in-buf*) 0) (setq *lisp-obj-id* 0) @@ -249,14 +250,14 @@ (type buffer-stream bs)) (let ((tag (buffer-read-byte bs))) (declare (type foreign-char tag)) - (cond + (cond ((= tag +fixnum+) (buffer-read-fixnum bs)) + ((= tag +nil+) nil) ((= tag +symbol+) (intern (or (buffer-read-string bs (buffer-read-fixnum bs)) ""))) ((= tag +string+) (buffer-read-string bs (buffer-read-fixnum bs))) - ((= tag +nil+) nil) ((= tag +persistent+) (get-cached-instance *store-controller* (buffer-read-fixnum bs)