module: streams-internals Synopsis: Copy-down methods for speed Author: Toby Weinberg, Scott McKay, Marc Ferguson, Eliot Miranda Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. All rights reserved. License: Functional Objects Library Public License Version 1.0 Dual-license: GNU Lesser General Public License Warranty: Distributed WITHOUT WARRANTY OF ANY KIND define macro copy-down-stream-definer { define copy-down-stream ?:name element ?elt:name sequence ?seq:name } => { define sealed domain do-get-input-buffer (?name); define sealed domain do-next-input-buffer (?name); define sealed domain do-release-input-buffer (?name); define sealed domain do-get-output-buffer (?name); define sealed domain do-next-output-buffer (?name); define sealed domain do-release-output-buffer (?name); define sealed domain coerce-to-element (?name, , ); define sealed domain coerce-from-element (?name, , , ); define sealed domain coerce-to-sequence (?name, , , ?seq, , ); define sealed domain coerce-from-sequence (?name, , , ?seq, , ); define sealed domain write (?name, ?seq); define sealed domain peek (?name); define sealed domain read (?name, ); define sealed domain read-into!(?name, , ?seq); define sealed copy-down-method write-element (stream :: ?name, elt :: ?elt) => (); define sealed copy-down-method write (stream :: ?name, elements :: ?seq, #key start: _start :: = 0, end: _end = #f) => (); define sealed copy-down-method write-line (stream :: ?name, elements :: ?seq, #key start: _start :: = 0, end: _end = #f) => (); define sealed copy-down-method write-text (stream :: ?name, elements :: ?seq, #key start: _start :: = 0, end: _end = #f) => (); define sealed copy-down-method read-element (stream :: ?name, #key on-end-of-stream = unsupplied()) => (element-or-eof); define sealed copy-down-method peek (stream :: ?name, #key on-end-of-stream = unsupplied()) => (element-or-eof); define sealed copy-down-method read (stream :: ?name, n :: , #key on-end-of-stream = unsupplied()) => (elements); define sealed copy-down-method read-into! (stream :: ?name, n :: , seq :: ?seq, #key start :: = 0, on-end-of-stream = unsupplied()) => (n-read); define sealed copy-down-method read-text (stream :: ?name, n :: , #key on-end-of-stream = unsupplied()) => (elements); define sealed copy-down-method read-text-into! (stream :: ?name, n :: , seq :: ?seq, #key start :: = 0, on-end-of-stream = unsupplied()) => (n-read) } end macro; define copy-down-stream element sequence ; /* define copy-down-method coerce-to-element (stream :: ?name, sb :: , index :: ) => (res :: ?elt); define copy-down-method coerce-from-element (stream :: ?name, sb :: , index :: , elt :: ) => (res :: ?elt); define copy-down-method coerce-to-sequence (stream :: ?name, sb :: , buf-start :: , sequence :: ?seq, seq-start :: , count :: ) => (); define copy-down-method coerce-from-sequence (stream :: ?name, sb :: , buf-start :: , sequence :: ?seq, seq-start :: , count :: ) => (); */