Update of /project/gsharp/cvsroot/gsharp/Flexichain In directory clnet:/tmp/cvs-serv3429
Modified Files: flexirank.lisp utilities.lisp Log Message: Weak pointers for Allegro Common Lisp. Yes, I know this isn't the preferred repository for Flexichains anymore
--- /project/gsharp/cvsroot/gsharp/Flexichain/flexirank.lisp 2005/11/28 21:27:02 1.4 +++ /project/gsharp/cvsroot/gsharp/Flexichain/flexirank.lisp 2006/03/06 20:46:48 1.5 @@ -75,5 +75,5 @@ (defmethod insert-vector* :after ((chain flexirank-mixin) position vector) (loop for elem across vector for pos from position - do (setf (index elem) (position-index pos) + do (setf (index elem) (position-index chain pos) (chain elem) chain))) --- /project/gsharp/cvsroot/gsharp/Flexichain/utilities.lisp 2005/01/15 08:43:50 1.3 +++ /project/gsharp/cvsroot/gsharp/Flexichain/utilities.lisp 2006/03/06 20:46:48 1.4 @@ -40,8 +40,11 @@ ;;; ;;; TODO: check other CL implementations behavior wrt. return values (defclass weak-pointer-container-mixin () - (#+openmcl - (weak-hash :initform (make-hash-table :test #'eq :weak :value))) + (#+(or openmcl allegro) + (weak-hash :initform (make-hash-table :test #'eq + ;; Get it together guys! + #+openmcl :weak #+openmcl :value + #+allegro :values #+allegro :weak))) (:documentation "Support for weak references, if needed"))
(defgeneric make-weak-pointer (object container)) @@ -52,7 +55,7 @@ #+cmu (extensions:make-weak-pointer object) #+sbcl (sb-ext:make-weak-pointer object))
-#+openmcl +#+(or openmcl allegro) (defmethod make-weak-pointer (object (container weak-pointer-container-mixin)) (let ((key (cons nil nil))) (setf (gethash key (slot-value container 'weak-hash)) object) @@ -66,15 +69,15 @@ #+cmu (extensions:weak-pointer-value weak-pointer) #+sbcl (sb-ext:weak-pointer-value weak-pointer))
-#+openmcl +#+(or openmcl allegro) (defmethod weak-pointer-value (weak-pointer (container weak-pointer-container-mixin)) (gethash weak-pointer (slot-value container 'weak-hash) nil))
-#-(or sbcl cmu openmcl) +#-(or sbcl cmu openmcl allegro) (progn (eval-when (:evaluate :compile-toplevel :load-toplevel) - (warning "No support for weak pointers in this implementation. Things may + (warn "No support for weak pointers in this implementation. Things may get big and slow") ) (defmethod make-weak-pointer (object container)