[elephant-cvs] CVS update: elephant/src/elephant.lisp

blee at common-lisp.net blee at common-lisp.net
Sun Aug 29 07:53:28 UTC 2004


Update of /project/elephant/cvsroot/elephant/src
In directory common-lisp.net:/tmp/cvs-serv32168/src

Modified Files:
	elephant.lisp 
Log Message:
updates, split off utils.lisp, sbcl imports for MOP

Date: Sun Aug 29 09:53:27 2004
Author: blee

Index: elephant/src/elephant.lisp
diff -u elephant/src/elephant.lisp:1.4 elephant/src/elephant.lisp:1.5
--- elephant/src/elephant.lisp:1.4	Sat Aug 28 08:40:18 2004
+++ elephant/src/elephant.lisp	Sun Aug 29 09:53:27 2004
@@ -1,6 +1,6 @@
 ;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
 ;;;
-;;; elephant.lisp -- package definition and utilities
+;;; elephant.lisp -- package definition
 ;;; 
 ;;; Initial version 8/26/2004 by Ben Lee
 ;;; <blee at common-lisp.net>
@@ -41,33 +41,90 @@
   (:use common-lisp sleepycat)
   (:shadow with-transaction)
   (:export *store-controller* *current-transaction* *auto-commit*
+	   open-store close-store
 	   store-controller open-controller close-controller 
 	   with-open-controller controller-path controller-environment
-	   controller-db controller-root
-	   add-to-root get-from-root	   
+	   controller-db controller-root add-to-root get-from-root	   
 	   persistent persistent-object persistent-metaclass
 	   persistent-collection btree get-value remove-kv
 	   db-transaction-begin db-transaction-abort db-transaction-commit
 	   with-transaction
+	   db-env-set-lock-detect db-env-get-lock-detect
+	   db-transaction-id db-env-lock-id db-env-lock-id-free
+	   db-env-lock-get db-env-lock-put with-lock
 	   db-env-set-timeout db-env-get-timeout
 	   db-env-set-flags db-env-get-flags
-	   db-env-set-lock-detect db-env-get-lock-detect
+	   run-elephant-thread
 	   )
   #+cmu  
   (:import-from :pcl
+		validate-superclass
 		slot-definition-name
+		standard-slot-definition
+		standard-direct-slot-definition
+		standard-effective-slot-definition
+		initialize-internal-slot-functions
+		direct-slot-definition-class
+		compute-effective-slot-definition-initargs
+		effective-slot-definition-class
+		slot-definition-name
+		slot-definition-reader-function
+		slot-definition-writer-function
+		compute-effective-slot-definition
+		class-slots
+		slot-value-using-class
+		slot-definition-allocation
 		compute-slots)                                
-  ;; Hopefully SBCL = CMUCL except for package names (both using Gerd's PCL)
+  #+cmu  
+  (:import-from :ext
+		make-weak-pointer weak-pointer-value finalize)
+
   #+sbcl 
   (:import-from :sb-mop 
+		validate-superclass
 		slot-definition-name
-		compute-slots)
-  #+openmcl 
-  (:import-from :openmcl-mop
+		standard-slot-definition
+		standard-direct-slot-definition
+		standard-effective-slot-definition
+		direct-slot-definition-class
+		effective-slot-definition-class
 		slot-definition-name
-		compute-slots)
+		compute-effective-slot-definition
+		class-slots
+		slot-value-using-class
+		slot-definition-allocation
+		compute-slots)                                
+  #+sbcl
+  (:import-from :sb-pcl
+		initialize-internal-slot-functions
+		compute-effective-slot-definition-initargs
+		slot-definition-reader-function
+		slot-definition-writer-function)
+  #+sbcl
+  (:import-from :sb-ext
+		make-weak-pointer weak-pointer-value finalize)
+
   #+allegro
   (:import-from :clos
+		validate-superclass
+		slot-definition-name
+		standard-slot-definition
+		slot-definition-initargs
+		standard-direct-slot-definition
+		standard-effective-slot-definition
+		direct-slot-definition-class
+		effective-slot-definition-class
+		slot-definition-name
+		compute-effective-slot-definition
+		class-slots
+		slot-value-using-class
+		slot-definition-allocation
+		compute-slots)
+  #+allegro
+  (:import-from :excl
+		compute-effective-slot-definition-initargs)
+  #+openmcl 
+  (:import-from :openmcl-mop
 		slot-definition-name
 		compute-slots)
   #+lispworks  
@@ -77,68 +134,4 @@
 
   )
 
-(in-package "ELEPHANT")
-
-;; Thread-local specials which control Elephant
-
-(defparameter *store-controller* nil 
-  "The store controller which persistent objects talk to.")
-(defvar *auto-commit* T)
-
-
-;; Portable value-weak hash-tables for the cache: when the
-;; values are collected, the entries (keys) should be
-;; flushed from the table too
-
-(defun make-cache-table (&rest args)
-  #+(or cmu sbcl scl)
-  (apply #'make-hash-table args)
-  #+allegro
-  (apply #'make-hash-table :values :weak args)
-  #+lispworks
-  (apply #'make-hash-table :weak-kind :value args)
-  #-(or cmu sbcl scl allegro lispworks)
-  (apply #'make-hash-table args)
-  )
-
-(defun get-cache (key cache)
-  #+(or cmu sbcl scl)
-  (let ((val (gethash key cache)))
-    (if val (values (ext:weak-pointer-value val) t)
-	(values nil nil)))
-  #-(or cmu sbcl scl)
-  (gethash key cache)
-  )
-
-(defun setf-cache (key cache value)
-  #+(or cmu sbcl scl)
-  (let ((w (ext:make-weak-pointer value)))
-    (ext:finalize value #'(lambda () (remhash key cache)))
-    (setf (gethash key cache) w)
-    value)
-  #+allegro
-  (progn
-    (excl:schedule-finalization value #'(lambda () (remhash key cache)))
-    (setf (gethash key cache) value))
-  #-(or cmu sbcl scl allegro)
-  (setf (gethash key cache) value)
-  )
-
-(defsetf get-cache setf-cache)
-
-;; Good defaults for elephant
-(defmacro with-transaction ((&key transaction 
-				  (environment (controller-environment
-						*store-controller*))
-				  (parent '*current-transaction*)
-				  dirty-read txn-nosync
-				  txn-nowait txn-sync)
-			    &body body)
-  `(sleepycat:with-transaction (:transaction ,transaction
-				:environment ,environment
-				:parent ,parent
-				:dirty-read ,dirty-read
-				:txn-nosync ,txn-nosync
-				:txn-nowait ,txn-nowait
-				:txn-sync ,txn-sync)
-    , at body))
+(in-package "ELE")
\ No newline at end of file





More information about the Elephant-cvs mailing list