[elephant-cvs] CVS update: elephant/src/serializer.lisp
blee at common-lisp.net
blee at common-lisp.net
Thu Sep 16 04:20:42 UTC 2004
Update of /project/elephant/cvsroot/elephant/src
In directory common-lisp.net:/tmp/cvs-serv25896/src
Modified Files:
serializer.lisp
Log Message:
doc-strings
buffer-streamified
sanified type tags
Date: Thu Sep 16 06:20:42 2004
Author: blee
Index: elephant/src/serializer.lisp
diff -u elephant/src/serializer.lisp:1.8 elephant/src/serializer.lisp:1.9
--- elephant/src/serializer.lisp:1.8 Sat Sep 4 10:59:40 2004
+++ elephant/src/serializer.lisp Thu Sep 16 06:20:41 2004
@@ -51,30 +51,46 @@
;; Constants
-(defconstant +fixnum+ (char-code #\f))
-(defconstant +nil+ (char-code #\N))
-(defconstant +symbol+ (char-code #\S))
-(defconstant +string+ (char-code #\s))
-(defconstant +persistent+ (char-code #\P))
-(defconstant +single-float+ (char-code #\F))
-(defconstant +double-float+ (char-code #\D))
-(defconstant +char+ (char-code #\c))
-(defconstant +pathname+ (char-code #\p))
-(defconstant +positive-bignum+ (char-code #\B))
-(defconstant +negative-bignum+ (char-code #\b))
-(defconstant +rational+ (char-code #\r))
-(defconstant +cons+ (char-code #\C))
-(defconstant +hash-table+ (char-code #\H))
-(defconstant +object+ (char-code #\O))
+(defconstant +fixnum+ 1)
+(defconstant +char+ 2)
+(defconstant +single-float+ 3)
+(defconstant +double-float+ 4)
+(defconstant +negative-bignum+ 5)
+(defconstant +positive-bignum+ 6)
+(defconstant +rational+ 7)
+
+(defconstant +nil+ 8)
+
+;; 8-bit
+#-(or lispworks (and allegro ics))
+(defconstant +symbol+ 9)
+#-(or lispworks (and allegro ics))
+(defconstant +string+ 10)
+#-(or lispworks (and allegro ics))
+(defconstant +pathname+ 11)
+
+;; 16-bit
+#+(or lispworks (and allegro ics))
+(defconstant +symbol+ 12)
+#+(or lispworks (and allegro ics))
+(defconstant +string+ 13)
+#+(or lispworks (and allegro ics))
+(defconstant +pathname+ 14)
+
+(defconstant +persistent+ 15)
+(defconstant +cons+ 16)
+(defconstant +hash-table+ 17)
+(defconstant +object+ 18)
+(defconstant +array+ 19)
-(defconstant +array+ (char-code #\A))
-
-(defconstant +fill-pointer-p+ #x40)
-(defconstant +adjustable-p+ #x80)
+(defconstant +fill-pointer-p+ #x40)
+(defconstant +adjustable-p+ #x80)
(defun serialize (frob bs)
- (declare (optimize (speed 3) (safety 0)))
+ "Serialize a lisp value into a buffer-stream."
+ (declare (optimize (speed 3) (safety 0))
+ (type buffer-stream bs))
(setq *lisp-obj-id* 0)
(clrhash *circularity-hash*)
(labels
@@ -207,7 +223,7 @@
(%serialize (row-major-aref frob i)))))))
)))
(%serialize frob)
- (finish-buffer bs)))
+ bs))
(defun slots-and-values (o)
(declare (optimize (speed 3) (safety 0)))
@@ -222,14 +238,10 @@
(push slot-name ret))
finally (return ret)))
-(defun deserialize (buf)
+(defun deserialize (buf-str)
+ "Deserialize a lisp value from a buffer-stream."
(declare (optimize (speed 3) (safety 0))
- (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)
- (clrhash *circularity-hash*)
+ (type (or null buffer-stream) buf-str))
(labels
((%deserialize (bs)
(declare (optimize (speed 3) (safety 0))
@@ -325,7 +337,12 @@
(setf (row-major-aref a i) (%deserialize bs)))
a))))
(t (error "deserialize fubar!"))))))
- (%deserialize *in-buf*)))
+ (etypecase buf-str
+ (null (return-from deserialize nil))
+ (buffer-stream
+ (setq *lisp-obj-id* 0)
+ (clrhash *circularity-hash*)
+ (%deserialize buf-str)))))
(defun deserialize-bignum (bs length positive)
(declare (optimize (speed 3) (safety 0))
@@ -387,9 +404,9 @@
(defun int-byte-spec (position)
(declare (optimize (speed 3) (safety 0))
(type (unsigned-byte 24) position))
- #+(or cmu scl sbcl allegro)
+ #+(or cmu sbcl allegro)
(progn (setf (cdr *resourced-byte-spec*) (* 32 position))
*resourced-byte-spec*)
- #-(or cmu scl sbcl allegro)
+ #-(or cmu sbcl allegro)
(byte 32 (* 32 position))
)
More information about the Elephant-cvs
mailing list