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")