From scaekenberghe at common-lisp.net Fri Jan 21 09:02:36 2005 From: scaekenberghe at common-lisp.net (Sven Van Caekenberghe) Date: Fri, 21 Jan 2005 01:02:36 -0800 (PST) Subject: [cl-prevalence-cvs] CVS update: cl-prevalence/src/package.lisp Message-ID: <20050121090236.B143E88027@common-lisp.net> Update of /project/cl-prevalence/cvsroot/cl-prevalence/src In directory common-lisp.net:/tmp/cvs-serv30121 Modified Files: package.lisp Log Message: added exports for index-related api Date: Fri Jan 21 01:02:36 2005 Author: scaekenberghe Index: cl-prevalence/src/package.lisp diff -u cl-prevalence/src/package.lisp:1.5 cl-prevalence/src/package.lisp:1.6 --- cl-prevalence/src/package.lisp:1.5 Mon Oct 4 07:25:13 2004 +++ cl-prevalence/src/package.lisp Fri Jan 21 01:02:35 2005 @@ -1,6 +1,6 @@ ;;;; -*- Mode: LISP -*- ;;;; -;;;; $Id: package.lisp,v 1.5 2004/10/04 14:25:13 scaekenberghe Exp $ +;;;; $Id: package.lisp,v 1.6 2005/01/21 09:02:35 scaekenberghe Exp $ ;;;; ;;;; Package definitions for the CL-PREVALENCE project ;;;; @@ -74,6 +74,9 @@ #:get-preference #:all-preferences-keys #:tx-set-preference + #:index-on + #:drop-index-on + #:find-object-with-slot #:start-master-client #:stop-master-client From scaekenberghe at common-lisp.net Fri Jan 21 09:05:02 2005 From: scaekenberghe at common-lisp.net (Sven Van Caekenberghe) Date: Fri, 21 Jan 2005 01:05:02 -0800 (PST) Subject: [cl-prevalence-cvs] CVS update: cl-prevalence/src/serialization.lisp Message-ID: <20050121090502.CD23188027@common-lisp.net> Update of /project/cl-prevalence/cvsroot/cl-prevalence/src In directory common-lisp.net:/tmp/cvs-serv30145 Modified Files: serialization.lisp Log Message: implemented sbcl versions of platform dependent mop code (thx to Peter Scott) Date: Fri Jan 21 01:05:02 2005 Author: scaekenberghe Index: cl-prevalence/src/serialization.lisp diff -u cl-prevalence/src/serialization.lisp:1.6 cl-prevalence/src/serialization.lisp:1.7 --- cl-prevalence/src/serialization.lisp:1.6 Mon Oct 4 08:13:15 2004 +++ cl-prevalence/src/serialization.lisp Fri Jan 21 01:05:01 2005 @@ -1,6 +1,6 @@ ;;;; -*- mode: Lisp -*- ;;;; -;;;; $Id: serialization.lisp,v 1.6 2004/10/04 15:13:15 scaekenberghe Exp $ +;;;; $Id: serialization.lisp,v 1.7 2005/01/21 09:05:01 scaekenberghe Exp $ ;;;; ;;;; XML and S-Expression based Serialization for Common Lisp and CLOS ;;;; @@ -121,6 +121,8 @@ (mapcar #'car (if (symbolp (caar slots)) slots (cdr slots)))) #+cmu (mapcar #'pcl:slot-definition-name (pcl:class-slots (class-of object))) + #+sbcl + (mapcar #'sb-pcl:slot-definition-name (sb-pcl:class-slots (class-of object))) #+lispworks (structure:structure-class-slot-names (class-of object)) #+allegro @@ -138,6 +140,8 @@ (class-of object))) #+cmu (mapcar #'pcl:slot-definition-name (pcl:class-slots (class-of object))) + #+sbcl + (mapcar #'sb-pcl:slot-definition-name (sb-pcl:class-slots (class-of object))) #+lispworks (mapcar #'hcl:slot-definition-name (hcl:class-slots (class-of object))) #+allegro From scaekenberghe at common-lisp.net Sat Jan 22 19:23:55 2005 From: scaekenberghe at common-lisp.net (Sven Van Caekenberghe) Date: Sat, 22 Jan 2005 11:23:55 -0800 (PST) Subject: [cl-prevalence-cvs] CVS update: cl-prevalence/ChangeLog Message-ID: <20050122192355.A90938802B@common-lisp.net> Update of /project/cl-prevalence/cvsroot/cl-prevalence In directory common-lisp.net:/tmp/cvs-serv5673 Added Files: ChangeLog Log Message: added serialization support for characters (suggested by ian eslick) Date: Sat Jan 22 11:23:53 2005 Author: scaekenberghe From scaekenberghe at common-lisp.net Sat Jan 22 19:24:00 2005 From: scaekenberghe at common-lisp.net (Sven Van Caekenberghe) Date: Sat, 22 Jan 2005 11:24:00 -0800 (PST) Subject: [cl-prevalence-cvs] CVS update: cl-prevalence/src/serialization.lisp Message-ID: <20050122192400.B15558802B@common-lisp.net> Update of /project/cl-prevalence/cvsroot/cl-prevalence/src In directory common-lisp.net:/tmp/cvs-serv5673/src Modified Files: serialization.lisp Log Message: added serialization support for characters (suggested by ian eslick) Date: Sat Jan 22 11:23:55 2005 Author: scaekenberghe Index: cl-prevalence/src/serialization.lisp diff -u cl-prevalence/src/serialization.lisp:1.7 cl-prevalence/src/serialization.lisp:1.8 --- cl-prevalence/src/serialization.lisp:1.7 Fri Jan 21 01:05:01 2005 +++ cl-prevalence/src/serialization.lisp Sat Jan 22 11:23:54 2005 @@ -1,6 +1,6 @@ ;;;; -*- mode: Lisp -*- ;;;; -;;;; $Id: serialization.lisp,v 1.7 2005/01/21 09:05:01 scaekenberghe Exp $ +;;;; $Id: serialization.lisp,v 1.8 2005/01/22 19:23:54 scaekenberghe Exp $ ;;;; ;;;; XML and S-Expression based Serialization for Common Lisp and CLOS ;;;; @@ -204,6 +204,12 @@ (s-xml:print-string-xml object stream) (write-string "" stream)) +(defmethod serialize-xml-internal ((object character) stream serialization-state) + (declare (ignore serialization-state)) + (write-string "" stream) + (s-xml:print-string-xml (princ-to-string object) stream) + (write-string "" stream)) + (defmethod serialize-xml-internal ((object symbol) stream serialization-state) (declare (ignore serialization-state)) (write-string "" stream) @@ -222,6 +228,10 @@ (declare (ignore serialization-state)) (prin1 object stream)) +(defmethod serialize-sexp-internal ((object character) stream serialization-state) + (declare (ignore serialization-state)) + (prin1 object stream)) + (defmethod serialize-sexp-internal ((object symbol) stream serialization-state) (declare (ignore serialization-state)) (print-symbol object stream)) @@ -457,6 +467,7 @@ (:null nil) (:true t) (:string (or seed "")) + (:character (char seed 0)) (:key (car seed)) (:value (car seed)) (:entry (nreverse seed)) From scaekenberghe at common-lisp.net Sat Jan 22 19:24:06 2005 From: scaekenberghe at common-lisp.net (Sven Van Caekenberghe) Date: Sat, 22 Jan 2005 11:24:06 -0800 (PST) Subject: [cl-prevalence-cvs] CVS update: cl-prevalence/test/test-serialization.lisp Message-ID: <20050122192406.B94D9884BF@common-lisp.net> Update of /project/cl-prevalence/cvsroot/cl-prevalence/test In directory common-lisp.net:/tmp/cvs-serv5673/test Modified Files: test-serialization.lisp Log Message: added serialization support for characters (suggested by ian eslick) Date: Sat Jan 22 11:24:00 2005 Author: scaekenberghe Index: cl-prevalence/test/test-serialization.lisp diff -u cl-prevalence/test/test-serialization.lisp:1.2 cl-prevalence/test/test-serialization.lisp:1.3 --- cl-prevalence/test/test-serialization.lisp:1.2 Mon Oct 4 07:52:52 2004 +++ cl-prevalence/test/test-serialization.lisp Sat Jan 22 11:24:00 2005 @@ -1,6 +1,6 @@ ;;;; -*- mode: Lisp -*- ;;;; -;;;; $Id: test-serialization.lisp,v 1.2 2004/10/04 14:52:52 scaekenberghe Exp $ +;;;; $Id: test-serialization.lisp,v 1.3 2005/01/22 19:24:00 scaekenberghe Exp $ ;;;; ;;;; Testing XML and S-Expression based Serialization for Common Lisp and CLOS ;;;; @@ -111,6 +111,22 @@ (assert (equal (serialize-and-deserialize-sexp "") "")) + +(assert + (equal (serialize-and-deserialize-xml #\A) + #\A)) + +(assert + (equal (serialize-and-deserialize-sexp #\A) + #\A)) + +(assert + (equal (serialize-and-deserialize-xml #\<) + #\<)) + +(assert + (equal (serialize-and-deserialize-sexp #\<) + #\<)) (assert (equal (serialize-and-deserialize-xml "Hello & !") From scaekenberghe at common-lisp.net Mon Jan 24 10:04:15 2005 From: scaekenberghe at common-lisp.net (Sven Van Caekenberghe) Date: Mon, 24 Jan 2005 02:04:15 -0800 (PST) Subject: [cl-prevalence-cvs] CVS update: cl-prevalence/ChangeLog Message-ID: <20050124100415.D75BC8802B@common-lisp.net> Update of /project/cl-prevalence/cvsroot/cl-prevalence In directory common-lisp.net:/tmp/cvs-serv28019 Modified Files: ChangeLog Log Message: added support for unprintable symbols in serialization Date: Mon Jan 24 02:04:15 2005 Author: scaekenberghe Index: cl-prevalence/ChangeLog diff -u cl-prevalence/ChangeLog:1.1 cl-prevalence/ChangeLog:1.2 --- cl-prevalence/ChangeLog:1.1 Sat Jan 22 11:23:51 2005 +++ cl-prevalence/ChangeLog Mon Jan 24 02:04:14 2005 @@ -1,5 +1,6 @@ 2005-01-22 Sven Van Caekenberghe * added serialization support for characters (suggested by ian eslick) + * added support for unprintable symbols From scaekenberghe at common-lisp.net Mon Jan 24 10:04:18 2005 From: scaekenberghe at common-lisp.net (Sven Van Caekenberghe) Date: Mon, 24 Jan 2005 02:04:18 -0800 (PST) Subject: [cl-prevalence-cvs] CVS update: cl-prevalence/src/serialization.lisp Message-ID: <20050124100418.B95F58802B@common-lisp.net> Update of /project/cl-prevalence/cvsroot/cl-prevalence/src In directory common-lisp.net:/tmp/cvs-serv28019/src Modified Files: serialization.lisp Log Message: added support for unprintable symbols in serialization Date: Mon Jan 24 02:04:16 2005 Author: scaekenberghe Index: cl-prevalence/src/serialization.lisp diff -u cl-prevalence/src/serialization.lisp:1.8 cl-prevalence/src/serialization.lisp:1.9 --- cl-prevalence/src/serialization.lisp:1.8 Sat Jan 22 11:23:54 2005 +++ cl-prevalence/src/serialization.lisp Mon Jan 24 02:04:15 2005 @@ -1,6 +1,6 @@ ;;;; -*- mode: Lisp -*- ;;;; -;;;; $Id: serialization.lisp,v 1.8 2005/01/22 19:23:54 scaekenberghe Exp $ +;;;; $Id: serialization.lisp,v 1.9 2005/01/24 10:04:15 scaekenberghe Exp $ ;;;; ;;;; XML and S-Expression based Serialization for Common Lisp and CLOS ;;;; @@ -91,28 +91,36 @@ (setf (gethash object (get-hashtable serialization-state)) (incf (get-counter serialization-state)))) +;; when printing symbols we always add the package and treat the symbol as internal +;; so that the serialization is independent of future change in export status +;; we handling symbols in the common-lisp and keyword package more efficiently +;; some hacking to handle unprintable symbols is involved + (defconstant +cl-package+ (find-package :cl)) (defconstant +keyword-package+ (find-package :keyword)) (defun print-symbol-xml (symbol stream) (let ((package (symbol-package symbol)) - (name (symbol-name symbol))) + (name (prin1-to-string symbol))) (cond ((eq package +cl-package+) (write-string "CL:" stream)) ((eq package +keyword-package+) (write-char #\: stream)) (t (s-xml:print-string-xml (package-name package) stream) (write-string "::" stream))) - (s-xml:print-string-xml name stream))) + (if (char= (char name (1- (length name))) #\|) + (s-xml:print-string-xml name stream :start (position #\| name)) + (s-xml:print-string-xml name stream :start (1+ (or (position #\: name :from-end t) -1)))))) (defun print-symbol (symbol stream) (let ((package (symbol-package symbol)) - (name (symbol-name symbol))) + (name (prin1-to-string symbol))) (cond ((eq package +cl-package+) (write-string "CL:" stream)) ((eq package +keyword-package+) (write-char #\: stream)) - (t (write-string (package-name package) stream) + (t (s-xml:print-string-xml (package-name package) stream) (write-string "::" stream))) - ;; this is *NOT* correct for unprintable symbols !! - (write-string name stream))) + (if (char= (char name (1- (length name))) #\|) + (write-string name stream :start (position #\| name)) + (write-string name stream :start (1+ (or (position #\: name :from-end t) -1)))))) (defmethod serializable-slots ((object structure-object)) #+openmcl From scaekenberghe at common-lisp.net Mon Jan 24 10:04:21 2005 From: scaekenberghe at common-lisp.net (Sven Van Caekenberghe) Date: Mon, 24 Jan 2005 02:04:21 -0800 (PST) Subject: [cl-prevalence-cvs] CVS update: cl-prevalence/test/test-serialization.lisp Message-ID: <20050124100421.3D8698802B@common-lisp.net> Update of /project/cl-prevalence/cvsroot/cl-prevalence/test In directory common-lisp.net:/tmp/cvs-serv28019/test Modified Files: test-serialization.lisp Log Message: added support for unprintable symbols in serialization Date: Mon Jan 24 02:04:20 2005 Author: scaekenberghe Index: cl-prevalence/test/test-serialization.lisp diff -u cl-prevalence/test/test-serialization.lisp:1.3 cl-prevalence/test/test-serialization.lisp:1.4 --- cl-prevalence/test/test-serialization.lisp:1.3 Sat Jan 22 11:24:00 2005 +++ cl-prevalence/test/test-serialization.lisp Mon Jan 24 02:04:18 2005 @@ -1,6 +1,6 @@ ;;;; -*- mode: Lisp -*- ;;;; -;;;; $Id: test-serialization.lisp,v 1.3 2005/01/22 19:24:00 scaekenberghe Exp $ +;;;; $Id: test-serialization.lisp,v 1.4 2005/01/24 10:04:18 scaekenberghe Exp $ ;;;; ;;;; Testing XML and S-Expression based Serialization for Common Lisp and CLOS ;;;; @@ -95,6 +95,14 @@ (assert (eq (serialize-and-deserialize-sexp 'room) 'room)) + +(assert + (eq (serialize-and-deserialize-xml '|Unprintable|) + '|Unprintable|)) + +(assert + (eq (serialize-and-deserialize-sexp '|Unprintable|) + '|Unprintable|)) (assert (equal (serialize-and-deserialize-xml "Hello")