(defclass character-output-stream (fundamental-character-output-stream)
((lisp-stream :initarg :lisp-stream
- :accessor character-output-stream-lisp-stream)))
+ :accessor character-output-stream-lisp-stream)
+ (position :initform 42 :accessor character-output-stream-position)))
(defclass character-input-stream (fundamental-character-input-stream)
((lisp-stream :initarg :lisp-stream
(defmethod stream-clear-output ((stream character-output-stream))
(clear-output (character-output-stream-lisp-stream stream)))
+
+(defmethod stream-file-position ((stream character-output-stream) &optional new-value)
+ (if new-value
+ (setf (character-output-stream-position stream) new-value)
+ (character-output-stream-position stream)))
\f
;;;; example character input stream encapsulating a lisp-stream
((eq byte :eof))
(write-byte byte our-bin-to-char-output))))
test-string))))
+
\f
-;;;; Voila!
-(quit :unix-status 104) ; success
+;;; Minimal test of file-position
+(let ((stream (make-instance 'character-output-stream)))
+ (assert (= (file-position stream) 42))
+ (assert (file-position stream 50))
+ (assert (= (file-position stream) 50)))