|
@@ -2,37 +2,55 @@
|
|
|
|
|
|
|
|
(defclass trivial-gray-stream-mixin () ())
|
|
(defclass trivial-gray-stream-mixin () ())
|
|
|
|
|
|
|
|
-#+lispworks
|
|
|
|
|
|
|
+(defgeneric stream-read-sequence
|
|
|
|
|
+ (stream sequence start end &key &allow-other-keys))
|
|
|
|
|
+(defgeneric stream-write-sequence
|
|
|
|
|
+ (stream sequence start end &key &allow-other-keys))
|
|
|
|
|
+
|
|
|
|
|
+(defmethod stream-write-string
|
|
|
|
|
+ ((stream trivial-gray-stream-mixin) seq &optional start end)
|
|
|
|
|
+ (stream-write-sequence stream seq (or start 0) (or end (length seq))))
|
|
|
|
|
+
|
|
|
|
|
+#+allegro
|
|
|
|
|
+(progn
|
|
|
|
|
+ (defmethod excl:stream-read-sequence
|
|
|
|
|
+ ((s trivial-gray-stream-mixin) seq &optional start end)
|
|
|
|
|
+ (stream-read-sequence s seq (or start 0) (or end (length seq))))
|
|
|
|
|
+ (defmethod stream:stream-write-sequence
|
|
|
|
|
+ ((s trivial-gray-stream-mixin) seq &optional start end)
|
|
|
|
|
+ (stream-write-sequence s seq (or start 0) (or end (length seq)))))
|
|
|
|
|
+
|
|
|
|
|
+#+cmu
|
|
|
(progn
|
|
(progn
|
|
|
- (defgeneric stream-read-sequence (stream sequence &optional start end))
|
|
|
|
|
- (defgeneric stream-write-sequence (stream sequence &optional start end))
|
|
|
|
|
|
|
+ (defmethod ext:stream-read-sequence
|
|
|
|
|
+ ((s trivial-gray-stream-mixin) seq &optional start end)
|
|
|
|
|
+ (stream-read-sequence s seq (or start 0) (or end (length seq))))
|
|
|
|
|
+ (defmethod ext:stream-write-sequence
|
|
|
|
|
+ ((s trivial-gray-stream-mixin) seq &optional start end)
|
|
|
|
|
+ (stream-write-sequence s seq (or start 0) (or end (length seq)))))
|
|
|
|
|
|
|
|
|
|
+#+lispworks
|
|
|
|
|
+(progn
|
|
|
(defmethod stream:stream-read-sequence
|
|
(defmethod stream:stream-read-sequence
|
|
|
((s trivial-gray-stream-mixin) seq start end)
|
|
((s trivial-gray-stream-mixin) seq start end)
|
|
|
- (stream-read-sequence seq start end))
|
|
|
|
|
|
|
+ (stream-read-sequence s seq start end))
|
|
|
|
|
|
|
|
(defmethod stream:stream-write-sequence
|
|
(defmethod stream:stream-write-sequence
|
|
|
((s trivial-gray-stream-mixin) seq start end)
|
|
((s trivial-gray-stream-mixin) seq start end)
|
|
|
- (stream-read-sequence seq start end)))
|
|
|
|
|
|
|
+ (stream-write-sequence s seq start end)))
|
|
|
|
|
|
|
|
#+openmcl
|
|
#+openmcl
|
|
|
(progn
|
|
(progn
|
|
|
- (defgeneric stream-read-sequence (stream sequence &optional start end))
|
|
|
|
|
- (defgeneric stream-write-sequence (stream sequence &optional start end))
|
|
|
|
|
-
|
|
|
|
|
(defmethod ccl:stream-read-vector
|
|
(defmethod ccl:stream-read-vector
|
|
|
((s trivial-gray-stream-mixin) seq start end)
|
|
((s trivial-gray-stream-mixin) seq start end)
|
|
|
- (stream-read-sequence seq start end))
|
|
|
|
|
|
|
+ (stream-read-sequence s seq start end))
|
|
|
|
|
|
|
|
(defmethod ccl:stream-write-vector
|
|
(defmethod ccl:stream-write-vector
|
|
|
((s trivial-gray-stream-mixin) seq start end)
|
|
((s trivial-gray-stream-mixin) seq start end)
|
|
|
- (stream-write-sequence seq start end)))
|
|
|
|
|
|
|
+ (stream-write-sequence s seq start end)))
|
|
|
|
|
|
|
|
#+clisp
|
|
#+clisp
|
|
|
(progn
|
|
(progn
|
|
|
- (defgeneric stream-read-sequence (stream sequence &optional start end))
|
|
|
|
|
- (defgeneric stream-write-sequence (stream sequence &optional start end))
|
|
|
|
|
-
|
|
|
|
|
(defmethod gray:stream-read-byte-sequence
|
|
(defmethod gray:stream-read-byte-sequence
|
|
|
((s trivial-gray-stream-mixin)
|
|
((s trivial-gray-stream-mixin)
|
|
|
seq
|
|
seq
|
|
@@ -41,7 +59,7 @@
|
|
|
(error "this stream does not support the NO-HANG argument"))
|
|
(error "this stream does not support the NO-HANG argument"))
|
|
|
(when interactive
|
|
(when interactive
|
|
|
(error "this stream does not support the INTERACTIVE argument"))
|
|
(error "this stream does not support the INTERACTIVE argument"))
|
|
|
- (stream-read-sequence seq start end))
|
|
|
|
|
|
|
+ (stream-read-sequence s seq start end))
|
|
|
|
|
|
|
|
(defmethod gray:stream-write-byte-sequence
|
|
(defmethod gray:stream-write-byte-sequence
|
|
|
((s trivial-gray-stream-mixin)
|
|
((s trivial-gray-stream-mixin)
|
|
@@ -51,4 +69,19 @@
|
|
|
(error "this stream does not support the NO-HANG argument"))
|
|
(error "this stream does not support the NO-HANG argument"))
|
|
|
(when interactive
|
|
(when interactive
|
|
|
(error "this stream does not support the INTERACTIVE argument"))
|
|
(error "this stream does not support the INTERACTIVE argument"))
|
|
|
- (stream-write-sequence seq start end)))
|
|
|
|
|
|
|
+ (stream-write-sequence s seq start end)))
|
|
|
|
|
+
|
|
|
|
|
+#+sbcl
|
|
|
|
|
+(progn
|
|
|
|
|
+ (defmethod sb-gray:stream-read-sequence
|
|
|
|
|
+ ((s trivial-gray-stream-mixin) seq &optional start end)
|
|
|
|
|
+ (stream-read-sequence s seq (or start 0) (or end (length seq))))
|
|
|
|
|
+ (defmethod sb-gray:stream-write-sequence
|
|
|
|
|
+ ((s trivial-gray-stream-mixin) seq &optional start end)
|
|
|
|
|
+ (stream-write-sequence s seq (or start 0) (or end (length seq))))
|
|
|
|
|
+ ;; SBCL extension:
|
|
|
|
|
+ (defmethod sb-gray:stream-line-length ((stream trivial-gray-stream-mixin))
|
|
|
|
|
+ 80)
|
|
|
|
|
+ ;; SBCL should provide this default method, but doesn't?
|
|
|
|
|
+ (defmethod stream-terpri ((stream trivial-gray-stream-mixin))
|
|
|
|
|
+ (write-char #\newline stream)))
|