|
|
@@ -0,0 +1,54 @@
|
|
|
+(in-package :trivial-gray-streams)
|
|
|
+
|
|
|
+(defclass trivial-gray-stream-mixin () ())
|
|
|
+
|
|
|
+#+lispworks
|
|
|
+(progn
|
|
|
+ (defgeneric stream-read-sequence (stream sequence &optional start end))
|
|
|
+ (defgeneric stream-write-sequence (stream sequence &optional start end))
|
|
|
+
|
|
|
+ (defmethod stream:stream-read-sequence
|
|
|
+ ((s trivial-gray-stream-mixin) seq start end)
|
|
|
+ (stream-read-sequence seq start end))
|
|
|
+
|
|
|
+ (defmethod stream:stream-write-sequence
|
|
|
+ ((s trivial-gray-stream-mixin) seq start end)
|
|
|
+ (stream-read-sequence seq start end)))
|
|
|
+
|
|
|
+#+openmcl
|
|
|
+(progn
|
|
|
+ (defgeneric stream-read-sequence (stream sequence &optional start end))
|
|
|
+ (defgeneric stream-write-sequence (stream sequence &optional start end))
|
|
|
+
|
|
|
+ (defmethod ccl:stream-read-vector
|
|
|
+ ((s trivial-gray-stream-mixin) seq start end)
|
|
|
+ (stream-read-sequence seq start end))
|
|
|
+
|
|
|
+ (defmethod ccl:stream-write-vector
|
|
|
+ ((s trivial-gray-stream-mixin) seq start end)
|
|
|
+ (stream-write-sequence seq start end)))
|
|
|
+
|
|
|
+#+clisp
|
|
|
+(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
|
|
|
+ ((s trivial-gray-stream-mixin)
|
|
|
+ seq
|
|
|
+ &optional start end no-hang interactive)
|
|
|
+ (when no-hang
|
|
|
+ (error "this stream does not support the NO-HANG argument"))
|
|
|
+ (when interactive
|
|
|
+ (error "this stream does not support the INTERACTIVE argument"))
|
|
|
+ (stream-read-sequence seq start end))
|
|
|
+
|
|
|
+ (defmethod gray:stream-write-byte-sequence
|
|
|
+ ((s trivial-gray-stream-mixin)
|
|
|
+ seq
|
|
|
+ &optional start end no-hang interactive)
|
|
|
+ (when no-hang
|
|
|
+ (error "this stream does not support the NO-HANG argument"))
|
|
|
+ (when interactive
|
|
|
+ (error "this stream does not support the INTERACTIVE argument"))
|
|
|
+ (stream-write-sequence seq start end)))
|