Update of /project/gsharp/cvsroot/gsharp/Flexichain In directory common-lisp.net:/tmp/cvs-serv2937
Modified Files: flexirank.lisp Log Message: Fixed a bug in the flexirank code. Or, rather, compensated for a quirk in flexichain.lisp that calls move-elements on sentinels. The best way would be to avoid this quirk, but I am not willing to modify the basic flexichain code right now.
Date: Mon Nov 28 01:25:59 2005 Author: rstrandh
Index: gsharp/Flexichain/flexirank.lisp diff -u gsharp/Flexichain/flexirank.lisp:1.2 gsharp/Flexichain/flexirank.lisp:1.3 --- gsharp/Flexichain/flexirank.lisp:1.2 Mon Nov 28 00:43:50 2005 +++ gsharp/Flexichain/flexirank.lisp Mon Nov 28 01:25:59 2005 @@ -52,10 +52,12 @@ ;;; this class must be mixed into a flexichain that contains ranked elements (defclass flexirank-mixin () ())
-(defmethod move-elements :after ((chain flexirank-mixin) to from start1 start2 end2) +(defmethod move-elements :before ((chain flexirank-mixin) to from start1 start2 end2) (loop for old from start2 below end2 for new from start1 - do (setf (index (aref from old)) new))) + do (let ((element (aref from old))) + (when (typep element 'element-rank-mixin) + (setf (index element) new)))))
(defmethod insert* :after ((chain flexirank-mixin) position (object element-rank-mixin)) (setf (index object) (position-index chain position)