[climacs-cvs] CVS update: climacs/buffer.lisp
Matthieu Villeneuve
mvilleneuve at common-lisp.net
Thu Jan 13 15:31:16 UTC 2005
Update of /project/climacs/cvsroot/climacs
In directory common-lisp.net:/tmp/cvs-serv6911
Modified Files:
buffer.lisp
Log Message:
Added a (setf buffer-object) method
Date: Thu Jan 13 16:31:12 2005
Author: mvilleneuve
Index: climacs/buffer.lisp
diff -u climacs/buffer.lisp:1.17 climacs/buffer.lisp:1.18
--- climacs/buffer.lisp:1.17 Sun Jan 9 12:54:50 2005
+++ climacs/buffer.lisp Thu Jan 13 16:31:11 2005
@@ -410,6 +410,16 @@
(make-condition 'no-such-offset :offset offset))
(element* (slot-value buffer 'contents) offset))
+(defgeneric (setf buffer-object) (object buffer offset)
+ (:documentation "Set the object at the offset in the buffer. The first object
+has offset 0. If offset is less than zero or greater than or equal to
+the size of the buffer, a no-such-offset condition is signaled."))
+
+(defmethod (setf buffer-object) (object (buffer standard-buffer) offset)
+ (assert (<= 0 offset (1- (size buffer))) ()
+ (make-condition 'no-such-offset :offset offset))
+ (setf (element* (slot-value buffer 'contents) offset) object))
+
(defgeneric buffer-sequence (buffer offset1 offset2)
(:documentation "Return the contents of the buffer starting at offset1 and ending at
offset2-1 as a sequence. If either of the offsets is less than zero
@@ -464,6 +474,14 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Buffer modification protocol
+
+(defmethod (setf buffer-object) :before (object (buffer standard-buffer) offset)
+ (declare (ignore object))
+ (setf (offset (low-mark buffer))
+ (min (offset (low-mark buffer)) offset))
+ (setf (offset (high-mark buffer))
+ (max (offset (high-mark buffer)) offset))
+ (setf (slot-value buffer 'modified) t))
(defmethod insert-buffer-object :before ((buffer standard-buffer) offset object)
(declare (ignore object))
More information about the Climacs-cvs
mailing list