[gsharp-cvs] CVS update: gsharp/Flexichain/rtester.lisp gsharp/Flexichain/stupid.lisp gsharp/Flexichain/flexicursor.lisp
Robert Strandh
rstrandh at common-lisp.net
Wed Sep 1 05:55:14 UTC 2004
Update of /project/gsharp/cvsroot/gsharp/Flexichain
In directory common-lisp.net:/tmp/cvs-serv10291
Modified Files:
flexicursor.lisp
Added Files:
rtester.lisp stupid.lisp
Log Message:
Added a stupid (but straightforward) implementation of the flexichain
protocol. The idea is to generate random test cases and compare the
result to that obtained with the stupid implementation.
Added a random tester facility that uses the normal and the stupid
implementations.
Fixed a problem in the flexicursor implementation that made clone-cursor
do the wrong thing. Added initarg :position for creating flexicursors.
Date: Wed Sep 1 07:55:11 2004
Author: rstrandh
Index: gsharp/Flexichain/flexicursor.lisp
diff -u gsharp/Flexichain/flexicursor.lisp:1.5 gsharp/Flexichain/flexicursor.lisp:1.6
--- gsharp/Flexichain/flexicursor.lisp:1.5 Sun Aug 22 07:01:02 2004
+++ gsharp/Flexichain/flexicursor.lisp Wed Sep 1 07:55:11 2004
@@ -144,29 +144,25 @@
(defclass right-sticky-flexicursor (standard-flexicursor) ())
(defmethod initialize-instance :after ((cursor left-sticky-flexicursor)
- &rest initargs)
+ &rest initargs &key (position 0))
(declare (ignore initargs))
(with-slots (index chain) cursor
- (setf index (slot-value chain 'data-start))
+ (setf index (position-index chain (1- position)))
(with-slots (cursors) chain
(push (make-wp cursor) (skiplist-find cursors index)))))
(defmethod initialize-instance :after ((cursor right-sticky-flexicursor)
- &rest initargs)
+ &rest initargs &key (position 0))
(declare (ignore initargs))
(with-slots (index chain) cursor
- (setf index (position-index chain 0))
+ (setf index (position-index chain position))
(with-slots (cursors) chain
(push (make-wp cursor) (skiplist-find cursors index)))))
(defmethod clone-cursor ((cursor standard-flexicursor))
- (with-slots (index) cursor
- (let ((result (make-instance (class-of cursor)
- :chain (chain cursor))))
- (setf (slot-value result 'index) index)
- (with-slots (cursors) (chain cursor)
- (push (make-wp result) (skiplist-find cursors index)))
- result)))
+ (make-instance (class-of cursor)
+ :chain (chain cursor)
+ :position (cursor-pos cursor)))
(defmethod cursor-pos ((cursor left-sticky-flexicursor))
(1+ (index-position (chain cursor) (slot-value cursor 'index))))
@@ -274,7 +270,7 @@
'at-beginning-error :cursor cursor)
(element* (chain cursor) (1- (cursor-pos cursor))))
-(defmethod (setf element>) (object (cursor standard-flexicursor))
+(defmethod (setf element<) (object (cursor standard-flexicursor))
(assert (not (at-beginning-p cursor)) ()
'at-beginning-error :cursor cursor)
(setf (element* (chain cursor) (1- (cursor-pos cursor)))
More information about the Gsharp-cvs
mailing list