| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- (in-package :trivial-gray-streams)
- (defclass trivial-gray-stream-mixin () ())
- (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))))
- ;; Implementations should provide this default method, I believe, but
- ;; at least sbcl and allegro don't.
- (defmethod stream-terpri ((stream trivial-gray-stream-mixin))
- (write-char #\newline stream))
- #+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
- (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
- ((s trivial-gray-stream-mixin) seq start end)
- (stream-read-sequence s seq start end))
- (defmethod stream:stream-write-sequence
- ((s trivial-gray-stream-mixin) seq start end)
- (stream-write-sequence s seq start end)))
- #+openmcl
- (progn
- (defmethod ccl:stream-read-vector
- ((s trivial-gray-stream-mixin) seq start end)
- (stream-read-sequence s seq start end))
- (defmethod ccl:stream-write-vector
- ((s trivial-gray-stream-mixin) seq start end)
- (stream-write-sequence s seq start end)))
- #+clisp
- (progn
- (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 s 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 s seq start end))
- (defmethod gray:stream-read-char-sequence
- ((s trivial-gray-stream-mixin) seq &optional start end)
- (stream-read-sequence s seq start end))
- (defmethod gray:stream-write-char-sequence
- ((s trivial-gray-stream-mixin) seq &optional 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))
|