Update of /project/cl-store/cvsroot/cl-store In directory common-lisp.net:/tmp/cvs-serv19698
Modified Files: ChangeLog README cl-store.asd default-backend.lisp tests.lisp Log Message: Changelog 2004-10-01
Date: Fri Oct 1 10:49:46 2004 Author: sross
Index: cl-store/ChangeLog diff -u cl-store/ChangeLog:1.8 cl-store/ChangeLog:1.9 --- cl-store/ChangeLog:1.8 Mon Sep 27 13:24:18 2004 +++ cl-store/ChangeLog Fri Oct 1 10:49:46 2004 @@ -1,3 +1,7 @@ +2004-10-01 Sean Ross sdr@jhb.ucs.co.za + * lispworks/custom.lisp: Lispworks support for inifinite floats from Alain Picard. + * tests.lisp: Infite float tests for lispworks. + 2004-09-27 Sean Ross sdr@jhb.ucs.co.za * plumbing.lisp: Slightly nicer error handling (I think). All conditions caught in store and restore are resignalled
Index: cl-store/README diff -u cl-store/README:1.6 cl-store/README:1.7 --- cl-store/README:1.6 Mon Aug 30 17:10:20 2004 +++ cl-store/README Fri Oct 1 10:49:46 2004 @@ -1,7 +1,7 @@ README for Package CL-STORE. Author: Sean Ross Homepage: http://www.common-lisp.net/project/cl-store/ -Version: 0.2 +Version: 0.2.5
0. About. CL-STORE is an portable serialization package which @@ -34,8 +34,8 @@ The two main entry points are - cl-store:store (obj place &optional (backend *default-backend*)) i => obj - Where place is a path designator, stream or socket and - backend is one of the registered backend. + Where place is a path designator or stream and + backend is one of the registered backends.
- cl-store:restore (place &optional (backend *default-backend*)) => restored-obj @@ -81,6 +81,11 @@ Two backends are in releases now, a default backend which is much what cl-store used to be (pre 0.2) and an xml backend which writes out xml to character streams. + + NOTE: As of 0.2.5 the xml backend isn't actively being developed. + It's turning out to more of a pain than it's worth. It is now + only there as an example. + Store and Restore now take an optional backend argument which currently can be one of *default-backend* or *xml-backend*.
@@ -90,7 +95,7 @@
5. Issues - There are a number of issues with CL-STORE as it stands (0.2). + There are a number of issues with CL-STORE as it stands (0.2.5).
- Functions, closures and anything remotely funcallable is unserializable. - MOP classes are largely unsupported at the moment.
Index: cl-store/cl-store.asd diff -u cl-store/cl-store.asd:1.8 cl-store/cl-store.asd:1.9 --- cl-store/cl-store.asd:1.8 Mon Sep 27 13:24:18 2004 +++ cl-store/cl-store.asd Fri Oct 1 10:49:46 2004 @@ -39,7 +39,7 @@ :name "CL-STORE" :author "Sean Ross sdr@jhb.ucs.co.za" :maintainer "Sean Ross sdr@jhb.ucs.co.za" - :version "0.2.3" + :version "0.2.5" :description "Serialization package" :long-description "Portable CL Package to serialize data types" :licence "MIT"
Index: cl-store/default-backend.lisp diff -u cl-store/default-backend.lisp:1.6 cl-store/default-backend.lisp:1.7 --- cl-store/default-backend.lisp:1.6 Mon Sep 27 13:24:18 2004 +++ cl-store/default-backend.lisp Fri Oct 1 10:49:46 2004 @@ -46,7 +46,11 @@ (defconstant +array-code+ (register-code 19 'array)) (defconstant +simple-vector-code+ (register-code 20 'simple-vector)) (defconstant +package-code+ (register-code 21 'package)) -(defconstant +function-code+ (register-code 22 'function)) + +;; Used by lispworks +(defconstant +positive-infinity-code+ (register-code 22 'positive-infinity)) +(defconstant +negative-infinity-code+ (register-code 23 'negative-infinity)) +
;; setups for type code mapping (defun output-type-code (code stream) @@ -148,6 +152,7 @@ ;; Is integer-decode-float the Right Thing, or should we ;; be using something like sb-kernel:single-float-bits ;; and sb-kernel:make-single-float +#-lispworks (defstore-cl-store (obj float stream) (output-type-code +float-code+ stream) (multiple-value-bind (significand exponent sign) @@ -158,11 +163,10 @@ (store-object sign stream)))
(defrestore-cl-store (float stream) - (let ((type (get-float-type (read-byte stream))) - (significand (restore-object stream)) - (exponent (restore-object stream)) - (sign (restore-object stream))) - (float (* (* significand (* 1.0d0 (expt 2 exponent))) sign) type))) + (float (* (get-float-type (read-byte stream)) + (* (restore-object stream) + (* 1.0d0 (expt 2 (restore-object stream)))) + (restore-object stream))))
;; ratio (defstore-cl-store (obj ratio stream) @@ -178,22 +182,18 @@ (output-type-code +character-code+ stream) (store-object (char-code obj) stream))
- (defrestore-cl-store (character stream) (code-char (restore-object stream)))
;; complex (defstore-cl-store (obj complex stream) (output-type-code +complex-code+ stream) - (let ((real (realpart obj)) - (imag (imagpart obj))) - (store-object real stream) - (store-object imag stream))) + (store-object (realpart obj) stream) + (store-object (imagpart obj) stream))
(defrestore-cl-store (complex stream) - (let ((real (restore-object stream)) - (imag (restore-object stream))) - (complex real imag))) + (complex (restore-object stream) + (restore-object stream)))
;; symbols (defstore-cl-store (obj symbol stream) @@ -208,7 +208,6 @@ (let ((package (restore-simple-standard-string stream)) (name (restore-simple-standard-string stream))) (values (intern name package)))) -
;; lists (defstore-cl-store (obj cons stream)
Index: cl-store/tests.lisp diff -u cl-store/tests.lisp:1.5 cl-store/tests.lisp:1.6 --- cl-store/tests.lisp:1.5 Mon Aug 30 17:10:20 2004 +++ cl-store/tests.lisp Fri Oct 1 10:49:46 2004 @@ -61,6 +61,13 @@ (deftestit double-float.5 most-positive-double-float) (deftestit double-float.6 most-negative-double-float)
+;; infinite floats +#+lispworks +(deftestit infinite-float.1 cl-store::+negative-infinity+) +#+lispworks +(deftestit infinite-float.2 cl-store::+positive-infinity+) + + ;; characters (deftestit char.1 #\Space) (deftestit char.2 #\f ) @@ -426,7 +433,7 @@
(defclass random-obj () ((size :accessor size :initarg :size)))
-(defvar *random-obj-code* (register-code 22 'random-obj)) +(defvar *random-obj-code* (register-code 100 'random-obj))
(defstore-cl-store (obj random-obj buff) (output-type-code *random-obj-code* buff) @@ -452,9 +459,6 @@ (defun run-tests () (format t "~&RUNNING TESTS USING CL-STORE-BACKEND~%") (with-backend (cl-store) - (regression-test:do-tests)) - (format t "~&RUNNING TESTS USING XML-BACKEND~%") - (with-backend (xml) (regression-test:do-tests)) (when (probe-file *test-file*) (delete-file *test-file*)))