(FILECREATED "29-Sep-86 17:52:16" {ERIS}<LISPCORE>SOURCES>CLSTREAMS.;7 49355        changes to:  (VARS CLSTREAMSCOMS)                   (FNS %%BROADCAST-STREAM-DEVICE-OPENFILE %%CONCATENATED-STREAM-DEVICE-OPENFILE                         %%SYNONYM-STREAM-DEVICE-OPENFILE %%TWO-WAY-STREAM-DEVICE-OPENFILE)                   (FUNCTIONS OPEN INTERLISP-ACCESS WITH-OPEN-FILE)      previous date: "18-Sep-86 12:21:25" {ERIS}<LISPCORE>SOURCES>CLSTREAMS.;4)(* Copyright (c) 1985, 1986 by Xerox Corporation. All rights reserved.)(PRETTYCOMPRINT CLSTREAMSCOMS)(RPAQQ CLSTREAMSCOMS ((* ;;;                       "Implements a number of stream functions from CommonLisp.  See CLtL chapter 21"                         )                      (COMS (* ;; "documented functions and macros")                            (FUNCTIONS OPEN CLOSE)                            (FUNCTIONS STREAM-ELEMENT-TYPE INPUT-STREAM-P OUTPUT-STREAM-P)                            (FUNCTIONS FILE-STREAM-POSITION)                            (FUNCTIONS MAKE-SYNONYM-STREAM MAKE-BROADCAST-STREAM                                    MAKE-CONCATENATED-STREAM MAKE-TWO-WAY-STREAM MAKE-ECHO-STREAM                                    MAKE-STRING-INPUT-STREAM)                            (FUNCTIONS %%MAKE-INITIAL-STRING-STREAM-CONTENTS)                            (DECLARE: DOCOPY (FUNCTIONS WITH-OPEN-STREAM WITH-INPUT-FROM-STRING                                                     WITH-OUTPUT-TO-STRING WITH-OPEN-FILE))                            (FUNCTIONS MAKE-STRING-OUTPUT-STREAM MAKE-FILL-POINTER-OUTPUT-STREAM                                    GET-OUTPUT-STREAM-STRING \STRING-STREAM-OUTCHARFN                                    \ADJUSTABLE-STRING-STREAM-OUTCHARFN))                      (COMS (* ;; "helpers")                            (FUNCTIONS %%NEW-FILE PREDICT-NAME)                            (DECLARE: DOEVAL@LOAD DONTCOPY (FUNCTIONS INTERLISP-ACCESS)))                      (COMS (* ;; "methods for the special devices")                            (FNS %%BROADCAST-STREAM-DEVICE-BOUT %%BROADCAST-STREAM-DEVICE-OUTCHARFN                                  %%BROADCAST-STREAM-DEVICE-CLOSEFILE                                  %%BROADCAST-STREAM-DEVICE-FORCEOUTPUT                                  %%BROADCAST-STREAM-DEVICE-OPENFILE)                            (FNS %%CONCATENATED-STREAM-DEVICE-BIN                                  %%CONCATENATED-STREAM-DEVICE-CLOSEFILE                                  %%CONCATENATED-STREAM-DEVICE-EOFP                                  %%CONCATENATED-STREAM-DEVICE-OPENFILE                                  %%CONCATENATED-STREAM-DEVICE-PEEKBIN)                            (FNS %%ECHO-STREAM-DEVICE-BIN)                            (FNS %%SYNONYM-STREAM-DEVICE-BIN %%SYNONYM-STREAM-DEVICE-BOUT                                  %%SYNONYM-STREAM-DEVICE-OUTCHARFN %%SYNONYM-STREAM-DEVICE-CLOSEFILE                                  %%SYNONYM-STREAM-DEVICE-EOFP %%SYNONYM-STREAM-DEVICE-FORCEOUTPUT                                  %%SYNONYM-STREAM-DEVICE-GETFILEINFO %%SYNONYM-STREAM-DEVICE-OPENFILE                                  %%SYNONYM-STREAM-DEVICE-PEEKBIN %%SYNONYM-STREAM-DEVICE-READP                                  %%SYNONYM-STREAM-DEVICE-BACKFILEPTR                                  %%SYNONYM-STREAM-DEVICE-SETFILEINFO)                            (FNS %%TWO-WAY-STREAM-DEVICE-BIN %%TWO-WAY-STREAM-DEVICE-BOUT                                  %%TWO-WAY-STREAM-DEVICE-OUTCHARFN %%TWO-WAY-STREAM-DEVICE-CLOSEFILE                                  %%TWO-WAY-STREAM-DEVICE-EOFP %%TWO-WAY-STREAM-DEVICE-BACKFILEPTR                                  %%TWO-WAY-STREAM-DEVICE-FORCEOUTPUT %%TWO-WAY-STREAM-DEVICE-OPENFILE                                  %%TWO-WAY-STREAM-DEVICE-PEEKBIN)                            (FUNCTIONS %%FILL-POINTER-STREAM-DEVICE-CLOSEFILE                                    %%FILL-POINTER-STREAM-DEVICE-GETFILEPTR))                      (COMS (* ;; "helper stuff")                            (FNS %%SYNONYM-STREAM-DEVICE-GET-STREAM))                      (COMS (* ;; "package initialization")                            (VARIABLES *TRACE-OUTPUT* *DEBUG-IO* *QUERY-IO* *TERMINAL-IO*                                    *ERROR-OUTPUT* *STANDARD-OUTPUT* *STANDARD-INPUT*)                            (FUNCTIONS %%INITIALIZE-STANDARD-STREAMS)                            (FNS %%INITIALIZE-CLSTREAM-TYPES)                            (DECLARE: DONTEVAL@LOAD DOCOPY (*)                                   (P (%%INITIALIZE-CLSTREAM-TYPES)                                      (%%INITIALIZE-STANDARD-STREAMS))))                      (PROP FILETYPE CLSTREAMS)                      (SETFS FILE-STREAM-POSITION)))(* ;;; "Implements a number of stream functions from CommonLisp.  See CLtL chapter 21")(* ;; "documented functions and macros")(DEFUN OPEN (FILENAME &KEY (DIRECTION :INPUT)                   (ELEMENT-TYPE (QUOTE STRING-CHAR))                   (IF-EXISTS NIL EXISTS-P)                   (IF-DOES-NOT-EXIST NIL DOES-NOT-EXIST-P))                                                   (* ;;; "Return a stream which reads from or writes to Filename.  Defined keywords: :direction (one of :input, :output or :probe :element-type), Type of object to read or write, default String-Char, :if-exists (one of :error, :new-version, :overwrite, :append or nil), :if-does-not-exist (one of :error, :create or nil). See the manual for details.")   (CL:UNLESS (MEMQ DIRECTION (QUOTE (:INPUT :OUTPUT :IO :PROBE)))          (CL:ERROR "~S isn't a valid direction for open." DIRECTION))   (CL:UNLESS (MEMQ ELEMENT-TYPE (QUOTE (STRING-CHAR UNSIGNED-BYTE CHARACTER :DEFAULT)))          (CL:ERROR "~S isn't an implemented element-type for open." ELEMENT-TYPE))   (LET ((PATHNAME (PATHNAME FILENAME))         (FOR-INPUT (MEMQ DIRECTION (QUOTE (:IO :INPUT))))         (FOR-OUTPUT (MEMQ DIRECTION (QUOTE (:IO :OUTPUT))))         (ACCESS (INTERLISP-ACCESS DIRECTION))         (STREAM NIL))                            (* ;;;                                  "Do hairy defaulting of :if-exists and :if-does-not-exist keywords.")        (CL:UNLESS EXISTS-P (SETQ IF-EXISTS (CL:IF (EQ (PATHNAME-VERSION PATHNAME)                                                       :NEWEST)                                                   :NEW-VERSION :ERROR)))        (CL:UNLESS DOES-NOT-EXIST-P (SETQ IF-DOES-NOT-EXIST (COND                                                               ((OR (MEMQ IF-EXISTS                                                                          (QUOTE (:OVERWRITE :APPEND)                                                                                 ))                                                                    (EQ DIRECTION :INPUT))                                                                :ERROR)                                                               ((EQ DIRECTION :PROBE)                                                                NIL)                                                               (T :CREATE))))        (LOOP                                     (* ;                                         "See if the file exists and handle the existential keywords.")              (LET* ((NAME (PREDICT-NAME PATHNAME))                     (NAMESTRING (MKSTRING NAME)))                    (if NAME                        then                                 (* ; "file exists")                             (if FOR-OUTPUT                                 then                        (* ;; "open for output/both")                                      (CASE IF-EXISTS (:ERROR (CERROR "write it anyway."                                                                      "File ~A already exists."                                                                      NAMESTRING)                                                             (SETQ STREAM (OPENSTREAM NAMESTRING                                                                                  ACCESS))                                                             (RETURN NIL))                                            ((:NEW-VERSION :SUPERSEDE :RENAME :RENAME-AND-DELETE)                                             (SETQ STREAM (OPENSTREAM NAMESTRING ACCESS (QUOTE NEW)))                                             (RETURN NIL))                                            (:OVERWRITE (SETQ STREAM (OPENSTREAM NAMESTRING ACCESS                                                                            (QUOTE OLD)))                                                   (RETURN NIL))                                            (:APPEND (SETQ STREAM (OPENSTREAM NAMESTRING (QUOTE                                                                                          APPEND)                                                                         (QUOTE OLD)))                                                   (RETURN NIL))                                            ((NIL)                                             (RETURN-FROM OPEN NIL))                                            (T (CL:ERROR "~S is not a valid value for :if-exists."                                                       IF-EXISTS)))                               elseif FOR-INPUT                                 then                        (* ;; "open for input/both")                                      (SETQ STREAM (OPENSTREAM NAMESTRING ACCESS (QUOTE OLD)))                                      (RETURN NIL)                               else                          (* ;; "open for probe")                                    (SETQ STREAM (create STREAM                                                        FULLFILENAME _ (FULLNAME NAMESTRING)))                                    (RETURN NIL))                      else                                   (* ;; "file does not exist")                           (if FOR-OUTPUT                               then (CASE IF-DOES-NOT-EXIST (:ERROR (CERROR "prompt for a new name."                                                                            "File ~A does not exist."                                                                            PATHNAME)                                                                   (FORMAT *QUERY-IO*                                                                           "~&New file name: ")                                                                   (SETQ PATHNAME (PATHNAME                                                                                   (READ-LINE                                                                                           *QUERY-IO*)                                                                                   )))                                          (:CREATE (SETQ STREAM (OPENSTREAM PATHNAME ACCESS                                                                       (QUOTE NEW)))                                                 (RETURN NIL))                                          ((NIL)                                           (RETURN-FROM OPEN NIL))                                          (T (CL:ERROR                                                     "~S is not a valid value for :if-does-not-exist."                                                     IF-DOES-NOT-EXIST)))                             elseif FOR-INPUT                               then (CASE IF-DOES-NOT-EXIST (:ERROR (CERROR "prompt for a new name."                                                                            "File ~A does not exist."                                                                            PATHNAME)                                                                   (FORMAT *QUERY-IO*                                                                           "~&New file name: ")                                                                   (SETQ PATHNAME (PATHNAME                                                                                   (READ-LINE                                                                                           *QUERY-IO*)                                                                                   )))                                          (:CREATE (%%NEW-FILE PATHNAME))                                          ((NIL)                                           (RETURN-FROM OPEN NIL))                                          (T (CL:ERROR                                                     "~S is not a valid value for :if-does-not-exist."                                                     IF-DOES-NOT-EXIST)))                             else                            (* ; "Open for probe.")                                  (RETURN NIL)))))        STREAM))(DEFUN CLOSE (STREAM &KEY ABORT)                     (* * "Close a stream.  If ABORT, then don't keep the file") (if (STREAMP STREAM)     then (if (OPENP STREAM)              then                     (* * "determine 'deletability' of stream's file before closing, as that trashes the info")                   (LET ((ABORTABLE (AND (DIRTYABLE STREAM)                                         (NOT (APPENDONLY STREAM)))))                        (CLOSEF STREAM)                        (if (AND ABORT ABORTABLE)                            then                             (*        "eventually we will change device CLOSEF methods to take an ABORT arg.  For now, simulate it.")                                 (DELFILE (NAMESTRING STREAM)))))   else (ERROR "Closing a non-stream" STREAM)) T)(DEFUN STREAM-ELEMENT-TYPE (STREAM) (QUOTE UNSIGNED-BYTE))(DEFUN INPUT-STREAM-P (STREAM) (CL:WHEN (NOT (STREAMP STREAM))                                      (\ILLEGAL.ARG STREAM))                    (* * "we return T instead of the stream because Symbolics does")                               (AND (\IOMODEP STREAM (QUOTE INPUT)                                           T)                                    T))(DEFUN OUTPUT-STREAM-P (STREAM) (CL:WHEN (NOT (STREAMP STREAM))                                       (\ILLEGAL.ARG STREAM))                    (* * "we return T instead of the stream because Symbolics does")                                (AND (\IOMODEP STREAM (QUOTE OUTPUT)                                            T)                                     T))(DEFUN FILE-STREAM-POSITION (STREAM) (GETFILEPTR STREAM))(DEFUN MAKE-SYNONYM-STREAM (SYMBOL)                     (* * "A CommonLisp function for shadowing a stream.  See CLtL p.  329") (OPENSTREAM (QUOTE {SYNONYM-STREAM-DEVICE})        (QUOTE BOTH)        NIL NIL (BQUOTE ((SYMBOL (\, SYMBOL))))))(DEFUN MAKE-BROADCAST-STREAM (&REST STREAMS)                     (* * "CommonLisp function to make a `splitter' stream.  See CLtL p329") (OPENSTREAM (QUOTE {BROADCAST-STREAM-DEVICE})        (QUOTE OUTPUT)        NIL NIL (BQUOTE ((STREAMS (\, STREAMS))))        NIL))(DEFUN MAKE-CONCATENATED-STREAM (&REST STREAMS)                     (* * A CommonLisp function for concatenating several input streams together.          See CLtL p. 329) (OPENSTREAM (QUOTE {CONCATENATED-STREAM-DEVICE})        (QUOTE INPUT)        NIL NIL (BQUOTE ((STREAMS (\, STREAMS))))        NIL))(DEFUN MAKE-TWO-WAY-STREAM (INPUT-STREAM OUTPUT-STREAM)                     (* * "A CommonLisp function for splicing together two streams.  See CLtL p.  329") (OPENSTREAM (QUOTE {TWO-WAY-STREAM-DEVICE})        (QUOTE BOTH)        NIL NIL (BQUOTE ((INPUT-STREAM (\, INPUT-STREAM))                         (OUTPUT-STREAM (\, OUTPUT-STREAM))))))(DEFUN MAKE-ECHO-STREAM (INPUT-STREAM OUTPUT-STREAM)                     (* * "A CommonLisp function for splicing together two streams.  See CLtL p.  329") (OPENSTREAM (QUOTE {ECHO-STREAM-DEVICE})        (QUOTE BOTH)        NIL NIL (BQUOTE ((INPUT-STREAM (\, INPUT-STREAM))                         (OUTPUT-STREAM (\, OUTPUT-STREAM))))))(DEFUN MAKE-STRING-INPUT-STREAM (STRING &OPTIONAL (START 0 STARTP)                                       (END NIL ENDP))                     (* * "A CommonLisp function for producing a stream from a string.  See CLtL p.  330") (OPENSTRINGSTREAM (if (OR STARTP ENDP)                       then (SUBSEQ STRING START (if ENDP                                                     then END                                                   else (CL:LENGTH STRING)))                     else STRING)        (QUOTE INPUT)))(DEFUN %%MAKE-INITIAL-STRING-STREAM-CONTENTS NIL (MAKE-ARRAY 128 :ELEMENT-TYPE (QUOTE STRING-CHAR)                                                        :ADJUSTABLE T :FILL-POINTER 0))(DECLARE: DOCOPY (DEFMACRO WITH-OPEN-STREAM ((VAR STREAM)                            &BODY                            (BODY DECLS)) (LET ((ABORTP (GENSYM)))                                               (BQUOTE (LET (((\, VAR)                                                              (\, STREAM))                                                             ((\, ABORTP)                                                              T))                                                            (\,@ DECLS)                                                            (UNWIND-PROTECT                                                             (MULTIPLE-VALUE-PROG1                                                              (PROGN (\,@ BODY))                                                              (SETQ (\, ABORTP)                                                               NIL))                                                             (CLOSE (\, VAR)                                                                    :ABORT                                                                    (\, ABORTP)))))))(DEFMACRO WITH-INPUT-FROM-STRING ((VAR STRING &KEY (INDEX NIL INDEXP)                                       (START 0 STARTP)                                       (END NIL ENDP))                                  &BODY                                  (BODY DECLS))   (BQUOTE (LET (((\, VAR)                  (MAKE-STRING-INPUT-STREAM (\, STRING)                         (\,@ (if STARTP                                  then (if ENDP                                           then (LIST START END)                                         else (LIST START))                                else (if ENDP                                         then (LIST NIL END)))))))                (\,@ DECLS)                (UNWIND-PROTECT (PROG1 (PROGN (\,@ BODY))                                       (\,@ (if INDEXP                                                then (BQUOTE ((SETF (\, INDEX)                                                                    (+ (\, START)                                                                       (GETFILEPTR (\, VAR))))))                                              else NIL)))                       (CLOSE (\, VAR))))))(DEFMACRO WITH-OUTPUT-TO-STRING ((VAR &OPTIONAL (STRING NIL STRINGP))                                 &BODY                                 (FORMS DECLS))   (if STRINGP       then (BQUOTE (LET (((\, VAR)                           (MAKE-FILL-POINTER-OUTPUT-STREAM (\, STRING))))                         (\,@ DECLS)                         (UNWIND-PROTECT (PROGN (\,@ FORMS))                                (CLOSE (\, VAR)))))     else (BQUOTE (LET (((\, VAR)                         (MAKE-STRING-OUTPUT-STREAM)))                       (\,@ DECLS)                       (UNWIND-PROTECT (PROGN (\,@ FORMS)                                              (GET-OUTPUT-STREAM-STRING (\, VAR)))                              (CLOSE (\, VAR)))))))(DEFMACRO WITH-OPEN-FILE ((VAR &REST OPEN-ARGS)                          &BODY                          (FORMS DECLS))          (* ;;; "The file whose name is File-Name is opened using the OPEN-ARGS and bound to the variable VAR. The Forms are executed, and when they terminate, normally or otherwise, the file is closed.")   (LET ((ABORTP (GENSYM)))        (BQUOTE (LET (((\, VAR)                       (OPEN (\,@ OPEN-ARGS)))                      ((\, ABORTP)                       T))                     (\,@ DECLS)                     (UNWIND-PROTECT (MULTIPLE-VALUE-PROG1 (PROGN (\,@ FORMS))                                            (SETQ (\, ABORTP)                                             NIL))                            (CLOSE (\, VAR)                                   :ABORT                                   (\, ABORTP))))))))(DEFUN MAKE-STRING-OUTPUT-STREAM NIL                     (* * "A function for producing a string stream. See also the function get-output-stream-string.  Also, see CLtL p.  330")                                     (MAKE-FILL-POINTER-OUTPUT-STREAM))(DEFUN MAKE-FILL-POINTER-OUTPUT-STREAM (&OPTIONAL (STRING (%%MAKE-INITIAL-STRING-STREAM-CONTENTS)))   (DECLARE (GLOBALVARS \FILL-POINTER-STREAM-DEVICE))   (if (NOT (ARRAY-HAS-FILL-POINTER-P STRING))       then (\ILLEGAL.ARG STRING)     else (LET ((STREAM (create STREAM                               DEVICE _ \FILL-POINTER-STREAM-DEVICE                               F1 _ STRING                               ACCESS _ (QUOTE OUTPUT))))               (STREAMPROP STREAM (QUOTE STRING-OUTPUT-STREAM)                      T)               (replace (STREAM OUTCHARFN) of STREAM with (if (ADJUSTABLE-ARRAY-P STRING)                                                              then (FUNCTION                                                                   \ADJUSTABLE-STRING-STREAM-OUTCHARFN                                                                    )                                                            else (FUNCTION \STRING-STREAM-OUTCHARFN))                      )               (replace (STREAM STRMBOUTFN) of STREAM with (FUNCTION \OUTCHAR))               STREAM)))(DEFUN GET-OUTPUT-STREAM-STRING (STRING-OUTPUT-STREAM)                     (* * "A CommonLisp function for getting the contents of the buffer created by a call to make-string-output-stream.  See CLtL p.  330") (if (NOT (STREAMPROP STRING-OUTPUT-STREAM (QUOTE STRING-OUTPUT-STREAM)))     then (ERROR "Stream not a string-output-stream" STRING-OUTPUT-STREAM)   else (PROG1 (fetch (STREAM F1) of STRING-OUTPUT-STREAM)               (replace (STREAM F1) of STRING-OUTPUT-STREAM with (                                                                %%MAKE-INITIAL-STRING-STREAM-CONTENTS                                                                  )))))(DEFUN \STRING-STREAM-OUTCHARFN (STREAM CHAR) (IF (EQ CHAR (CHARCODE EOL))                                                  THEN (REPLACE (STREAM CHARPOSITION) OF STREAM                                                          WITH 0)                                                ELSE (ADD (FETCH (STREAM CHARPOSITION) OF STREAM)                                                          1))                                              (VECTOR-PUSH (CL:CHARACTER CHAR)                                                     (FETCH (STREAM F1) OF STREAM)))(DEFUN \ADJUSTABLE-STRING-STREAM-OUTCHARFN (STREAM CHAR) (IF (EQ CHAR (CHARCODE EOL))                                                             THEN (REPLACE (STREAM CHARPOSITION)                                                                     OF STREAM WITH 0)                                                           ELSE (ADD (FETCH (STREAM CHARPOSITION)                                                                        OF STREAM)                                                                     1))                                                         (VECTOR-PUSH-EXTEND (CL:CHARACTER CHAR)                                                                (FETCH (STREAM F1) OF STREAM)))(* ;; "helpers")(DEFUN %%NEW-FILE (FILENAME) (CLOSEF (OPENSTREAM FILENAME (QUOTE OUTPUT)                                            (QUOTE NEW))))(DEFUN PREDICT-NAME (PATHNAME) (LET ((PATH (PROBE-FILE PATHNAME)))                                    (IF PATH                                        THEN (NAMESTRING PATH))))(DECLARE: DOEVAL@LOAD DONTCOPY (DEFMACRO INTERLISP-ACCESS (DIRECTION) (BQUOTE (CASE (\, DIRECTION)                                                     (:INPUT (QUOTE INPUT))                                                     (:OUTPUT (QUOTE OUTPUT))                                                     (:IO (QUOTE BOTH))                                                     NIL))))(* ;; "methods for the special devices")(DEFINEQ(%%BROADCAST-STREAM-DEVICE-BOUT  [LAMBDA (STREAM BYTE)                                      (* hdj "17-Apr-86 18:08")                    (* * The BOUT method for the broadcast-stream device)    (for S in (fetch F1 of STREAM) do (\BOUT S BYTE))    BYTE])(%%BROADCAST-STREAM-DEVICE-OUTCHARFN  (LAMBDA (STREAM CHARCODE)                                  (* hdj "18-Sep-86 11:29")                                                            (* ;; "outcharfn for broadcast streams")    (for S in (fetch (STREAM F1) of STREAM) do (\OUTCHAR S CHARCODE))    CHARCODE))(%%BROADCAST-STREAM-DEVICE-CLOSEFILE  [LAMBDA (STREAM)                                                         (* hdj                                                                            "26-Mar-86 16:28")                        (* * The CLOSEFILE method for the broadcast-stream device)    (replace ACCESS of STREAM with NIL)    (replace F1 of STREAM with NIL)    STREAM])(%%BROADCAST-STREAM-DEVICE-FORCEOUTPUT  [LAMBDA (stream waitForFinish?)                            (* smL "14-Aug-85 15:55")          (* * The FORCEOUTPUT method for the broadcast-stream device)    (for s in (fetch F1 of stream) do (FORCEOUTPUT s waitForFinish?])(%%BROADCAST-STREAM-DEVICE-OPENFILE  (LAMBDA (NAME ACCESS RECOG PARAMETERS DEVICE)              (* hdj "29-Sep-86 17:46")                                                  (* ;;;                                                 "The OPENFILE method for the broadcast-stream device")    (SELECTQ ACCESS        ((INPUT BOTH APPEND)              NIL)        (create STREAM               DEVICE _ DEVICE               F1 _ (CADR (ASSOC (QUOTE STREAMS)                                 PARAMETERS))               OUTCHARFN _ (FUNCTION %%BROADCAST-STREAM-DEVICE-OUTCHARFN)               CHARSET _ 255)))))(DEFINEQ(%%CONCATENATED-STREAM-DEVICE-BIN  [LAMBDA (stream)                                           (* smL "14-Aug-85 16:52")          (* * The BIN method for the concatenated-stream device)    (while (fetch F1 of stream) do [if (EOFP (CAR (fetch F1 of stream)))				       then (CLOSEF (pop (fetch F1 of stream)))				     else (RETURN (\BIN (CAR (fetch F1 of stream]       finally                                               (* the EOF case)	       (\EOF.ACTION stream])(%%CONCATENATED-STREAM-DEVICE-CLOSEFILE  [LAMBDA (stream)                                           (* smL "14-Aug-85 16:53")          (* * The CLOSEFILE method for the concatenated-stream device)    (replace ACCESS of stream with NIL)    (for s in (fetch F1 of stream) do (CLOSEF s))    (replace F1 of stream with NIL)    stream])(%%CONCATENATED-STREAM-DEVICE-EOFP  [LAMBDA (stream)                                           (* smL "14-Aug-85 16:53")          (* * The EOFP method for the concatenated-stream device)    (while (fetch F1 of stream) do (if (EOFP (CAR (fetch F1 of stream)))				       then (CLOSEF (pop (fetch F1 of stream)))				     else (RETURN NIL))       finally                                               (* the EOF case)	       (RETURN T])(%%CONCATENATED-STREAM-DEVICE-OPENFILE  (LAMBDA (NAME ACCESS RECOG PARAMETERS DEVICE)              (* hdj "29-Sep-86 17:46")                                                  (* ;;;                                              "The OPENFILE method for the concatenated-stream device")    (SELECTQ ACCESS        ((OUTPUT BOTH APPEND)              NIL)        (create STREAM               DEVICE _ DEVICE               F1 _ (CADR (ASSOC (QUOTE STREAMS)                                 PARAMETERS))               CHARSET _ 255))))(%%CONCATENATED-STREAM-DEVICE-PEEKBIN  [LAMBDA (stream noErrorFlg?)                               (* smL "14-Aug-85 16:53")          (* * The PEEKBIN method for the concatenated-stream device)    (while (fetch F1 of stream) do [if (EOFP (CAR (fetch F1 of stream)))				       then (CLOSEF (pop (fetch F1 of stream)))				     else (RETURN (\PEEKBIN (CAR (fetch F1 of stream]       finally                                               (* the EOF case)	       (if noErrorFlg?		   then (RETURN NIL)		 else (\EOF.ACTION stream]))(DEFINEQ(%%ECHO-STREAM-DEVICE-BIN  [LAMBDA (STREAM)                                           (* hdj "21-Apr-86 18:33")                    (* * The BIN method for the echo-stream device)    (LET ((BYTE (%%TWO-WAY-STREAM-DEVICE-BIN STREAM)))         (\BOUT STREAM BYTE)     BYTE]))(DEFINEQ(%%SYNONYM-STREAM-DEVICE-BIN  [LAMBDA (STREAM)                                                         (* hdj                                                                            "19-Mar-86 17:19")                        (* * The BIN method for the synonym-stream device.)    (\BIN (%%SYNONYM-STREAM-DEVICE-GET-STREAM STREAM])(%%SYNONYM-STREAM-DEVICE-BOUT  [LAMBDA (STREAM BYTE)                                                    (* hdj                                                                            "19-Mar-86 17:20")                        (* * The BOUT method for the synonym-stream device.)    (\BOUT (%%SYNONYM-STREAM-DEVICE-GET-STREAM STREAM)           BYTE])(%%SYNONYM-STREAM-DEVICE-OUTCHARFN  (LAMBDA (STREAM CHARCODE)                                  (* hdj "17-Sep-86 14:04")                                                             (* ;; " OUTCHARFN for synonym streams")    (\OUTCHAR (%%SYNONYM-STREAM-DEVICE-GET-STREAM STREAM)           CHARCODE)))(%%SYNONYM-STREAM-DEVICE-CLOSEFILE  [LAMBDA (STREAM)                                                         (* hdj                                                                            "19-Mar-86 17:14")                        (* * the CLOSEFILE method for the synonym-stream device)    (replace F1 of STREAM with NIL)    STREAM])(%%SYNONYM-STREAM-DEVICE-EOFP  [LAMBDA (STREAM)                                                         (* hdj                                                                            "19-Mar-86 17:20")                        (* * The EOFP method for the synonym-stream device.)    (\EOFP (%%SYNONYM-STREAM-DEVICE-GET-STREAM STREAM])(%%SYNONYM-STREAM-DEVICE-FORCEOUTPUT  [LAMBDA (STREAM WAITFORFINISH)                                           (* hdj                                                                            "19-Mar-86 17:09")                        (* * The FORCEOUTPUT method for the synonym-stream device.)    (FORCEOUTPUT (%%SYNONYM-STREAM-DEVICE-GET-STREAM STREAM)           WAITFORFINISH])(%%SYNONYM-STREAM-DEVICE-GETFILEINFO  [LAMBDA (STREAM ATTRIBUTE DEVICE)                                        (* hdj                                                                            "19-Mar-86 17:10")                        (* * The GETFILEINFO method for the synonym-stream device.)    (GETFILEINFO (%%SYNONYM-STREAM-DEVICE-GET-STREAM STREAM)           ATTRIBUTE])(%%SYNONYM-STREAM-DEVICE-OPENFILE  (LAMBDA (NAME ACCESS RECOG PARAMETERS DEVICE)              (* hdj "29-Sep-86 17:44")                                                  (* ;;;                                                   "the OPENFILE method for the synonym-stream device")    (create STREAM           DEVICE _ DEVICE           F1 _ (CADR (ASSOC (QUOTE SYMBOL)                             PARAMETERS))           OUTCHARFN _ (FUNCTION %%SYNONYM-STREAM-DEVICE-OUTCHARFN)           CHARSET _ 255)))(%%SYNONYM-STREAM-DEVICE-PEEKBIN  [LAMBDA (STREAM NOERRORFLG?)                                             (* hdj                                                                            "19-Mar-86 17:12")                        (* * The PEEKBIN method for the synonym-stream device)    (\PEEKBIN (%%SYNONYM-STREAM-DEVICE-GET-STREAM STREAM)           NOERRORFLG?])(%%SYNONYM-STREAM-DEVICE-READP  (LAMBDA (STREAM FLG)    (READP (%%SYNONYM-STREAM-DEVICE-GET-STREAM STREAM)           FLG)))(%%SYNONYM-STREAM-DEVICE-BACKFILEPTR  (LAMBDA (STREAM)                                           (* hdj "26-Aug-86 17:35")    (\BACKFILEPTR (%%SYNONYM-STREAM-DEVICE-GET-STREAM STREAM))))(%%SYNONYM-STREAM-DEVICE-SETFILEINFO  [LAMBDA (STREAM ATTRIBUTE VALUE DEVICE)                                  (* hdj                                                                            "19-Mar-86 17:17")                        (* * The SETFILEINFO method for the synonym-stream device.)    (SETFILEINFO (%%SYNONYM-STREAM-DEVICE-GET-STREAM STREAM)           ATTRIBUTE VALUE]))(DEFINEQ(%%TWO-WAY-STREAM-DEVICE-BIN  [LAMBDA (stream)                                           (* smL "14-Aug-85 16:44")          (* * The BIN method for the two-way-stream device)    (\BIN (fetch F1 of stream])(%%TWO-WAY-STREAM-DEVICE-BOUT  (LAMBDA (STREAM BYTE)                                      (* hdj "17-Sep-86 15:28")                                                       (* ;; " the BOUT method for two-way streams")    (\BOUT (fetch F2 of STREAM)           BYTE)))(%%TWO-WAY-STREAM-DEVICE-OUTCHARFN  (LAMBDA (STREAM CHARCODE)                                  (* hdj "17-Sep-86 15:26")                                                             (* ;; "outcharfn for two-way streams")    (\OUTCHAR (fetch (STREAM F2) of STREAM)           CHARCODE)))(%%TWO-WAY-STREAM-DEVICE-CLOSEFILE  [LAMBDA (stream)                                           (* smL "14-Aug-85 17:02")          (* * The CLOSEFILE method for the two-way-stream device)    (replace ACCESS of stream with NIL)    (CLOSEF? (fetch F1 of stream))    (replace F1 of stream with NIL)    (CLOSEF? (fetch F2 of stream))    (replace F2 of stream with NIL)    stream])(%%TWO-WAY-STREAM-DEVICE-EOFP  [LAMBDA (stream)                                           (* smL "14-Aug-85 16:47")          (* * The EOFP method for the two-way-stream device)    (\EOFP (fetch F1 of stream])(%%TWO-WAY-STREAM-DEVICE-BACKFILEPTR  (LAMBDA (STREAM)                                           (* hdj "15-Sep-86 15:02")    (\BACKFILEPTR (fetch (STREAM F1) of STREAM))))(%%TWO-WAY-STREAM-DEVICE-FORCEOUTPUT  [LAMBDA (stream waitForFinish?)                            (* smL "14-Aug-85 16:49")          (* * the FORCEOUTPUT method for the two-way-stream device)    (FORCEOUTPUT (fetch F2 of stream)		 waitForFinish?])(%%TWO-WAY-STREAM-DEVICE-OPENFILE  (LAMBDA (NAME ACCESS RECOG PARAMETERS DEVICE)              (* hdj "29-Sep-86 17:45")                                                  (* ;;;                                                   "The OPENFILE method for the two-way-stream device")    (SELECTQ ACCESS        ((INPUT OUTPUT APPEND)              NIL)        (create STREAM               DEVICE _ DEVICE               F1 _ (CADR (ASSOC (QUOTE INPUT-STREAM)                                 PARAMETERS))               F2 _ (CADR (ASSOC (QUOTE OUTPUT-STREAM)                                 PARAMETERS))               OUTCHARFN _ (FUNCTION %%TWO-WAY-STREAM-DEVICE-OUTCHARFN)               CHARSET _ 255))))(%%TWO-WAY-STREAM-DEVICE-PEEKBIN  [LAMBDA (stream noErrorFlg?)                               (* smL "14-Aug-85 16:46")          (* * The PEEKBIN method for the two-way-stream device)    (\PEEKBIN (fetch F1 of stream)	      noErrorFlg?]))(DEFUN %%FILL-POINTER-STREAM-DEVICE-CLOSEFILE (STREAM)                     (* * "the CLOSEFILE method for the fill-pointer-string-stream device") (replace F1 of STREAM with NIL) STREAM)(DEFUN %%FILL-POINTER-STREAM-DEVICE-GETFILEPTR (STREAM) (CL:LENGTH (fetch (STREAM F1) of STREAM)))(* ;; "helper stuff")(DEFINEQ(%%SYNONYM-STREAM-DEVICE-GET-STREAM  [LAMBDA (stream)                                                         (* hdj                                                                            "19-Mar-86 14:59")                        (* * given a synonym-stream, find out what it is currently tracking)                        (* * this should be a macro)    (SYMBOL-VALUE (fetch (STREAM F1) of stream]))(* ;; "package initialization")(DEFVAR *TRACE-OUTPUT* )(DEFVAR *DEBUG-IO* )(DEFVAR *QUERY-IO* )(DEFVAR *TERMINAL-IO* )(DEFVAR *ERROR-OUTPUT* )(DEFVAR *STANDARD-OUTPUT* )(DEFVAR *STANDARD-INPUT* )(DEFUN %%INITIALIZE-STANDARD-STREAMS NIL                     (*)                                         (SETQ *QUERY-IO* (MAKE-TWO-WAY-STREAM (MAKE-SYNONYM-STREAM                                                                                (QUOTE \LINEBUF.OFD))                                                                 (MAKE-SYNONYM-STREAM (QUOTE                                                                                             \TERM.OFD                                                                                             ))))                                         (SETQ *DEBUG-IO* *QUERY-IO*)                                         (SETQ *TERMINAL-IO* *QUERY-IO*)                                         (SETQ *ERROR-OUTPUT* (MAKE-SYNONYM-STREAM (QUOTE \TERM.OFD))                                          )                                         (SETQ *STANDARD-OUTPUT* (MAKE-SYNONYM-STREAM (QUOTE                                                                                          \PRIMOUT.OFD                                                                                             )))                                         (SETQ *STANDARD-INPUT* (MAKE-SYNONYM-STREAM (QUOTE                                                                                           \PRIMIN.OFD                                                                                            )))                                         (SETQ *TRACE-OUTPUT* (MAKE-SYNONYM-STREAM (QUOTE \TERM.OFD))                                          ))(DEFINEQ(%%INITIALIZE-CLSTREAM-TYPES  (LAMBDA NIL                                                (* hdj "15-Sep-86 15:11")                    (* * "Initialize the CLSTREAMS package.  This sets up some file devices for the functions make-two-way-stream-device, etc.  See CLtL chapter 21")    (DECLARE (GLOBALVARS \FILL-POINTER-STREAM-DEVICE))    (\DEFINEDEVICE (QUOTE BROADCAST-STREAM-DEVICE)           (create FDEV                  DEVICENAME _ (QUOTE BROADCAST-STREAM-DEVICE)                  RESETABLE _ NIL                  RANDOMACCESSP _ NIL                  NODIRECTORIES _ T                  BUFFERED _ NIL                  PAGEMAPPED _ NIL                  FDBINABLE _ NIL                  FDBOUTABLE _ NIL                  FDEXTENDABLE _ NIL                  DEVICEINFO _ NIL                  HOSTNAMEP _ (FUNCTION NILL)                  EVENTFN _ (FUNCTION NILL)                  DIRECTORYNAMEP _ (FUNCTION NILL)                  OPENFILE _ (FUNCTION %%BROADCAST-STREAM-DEVICE-OPENFILE)                  REOPENFILE _ (FUNCTION NILL)                  CLOSEFILE _ (FUNCTION %%BROADCAST-STREAM-DEVICE-CLOSEFILE)                  GETFILENAME _ (FUNCTION NILL)                  DELETEFILE _ (FUNCTION NILL)                  GENERATEFILES _ (FUNCTION \GENERATENOFILES)                  RENAMEFILE _ (FUNCTION NILL)                  BIN _ (FUNCTION NILL)                  BOUT _ (FUNCTION %%BROADCAST-STREAM-DEVICE-BOUT)                  PEEKBIN _ (FUNCTION NILL)                  READP _ (FUNCTION NILL)                  EOFP _ (FUNCTION TRUE)                  BLOCKIN _ (FUNCTION \GENERIC.BINS)                  BLOCKOUT _ (FUNCTION NILL)                  FORCEOUTPUT _ (FUNCTION %%BROADCAST-STREAM-DEVICE-FORCEOUTPUT)                  GETFILEINFO _ (FUNCTION NILL)                  SETFILEINFO _ (FUNCTION NILL)))    (\DEFINEDEVICE (QUOTE CONCATENATED-STREAM-DEVICE)           (create FDEV                  DEVICENAME _ (QUOTE CONCATENATED-STREAM-DEVICE)                  RESETABLE _ NIL                  RANDOMACCESSP _ NIL                  NODIRECTORIES _ T                  BUFFERED _ NIL                  PAGEMAPPED _ NIL                  FDBINABLE _ NIL                  FDBOUTABLE _ NIL                  FDEXTENDABLE _ NIL                  DEVICEINFO _ NIL                  HOSTNAMEP _ (FUNCTION NILL)                  EVENTFN _ (FUNCTION NILL)                  DIRECTORYNAMEP _ (FUNCTION NILL)                  OPENFILE _ (FUNCTION %%CONCATENATED-STREAM-DEVICE-OPENFILE)                  REOPENFILE _ (FUNCTION NILL)                  CLOSEFILE _ (FUNCTION %%CONCATENATED-STREAM-DEVICE-CLOSEFILE)                  GETFILENAME _ (FUNCTION NILL)                  DELETEFILE _ (FUNCTION NILL)                  GENERATEFILES _ (FUNCTION \GENERATENOFILES)                  RENAMEFILE _ (FUNCTION NILL)                  BIN _ (FUNCTION %%CONCATENATED-STREAM-DEVICE-BIN)                  BOUT _ (FUNCTION NILL)                  PEEKBIN _ (FUNCTION %%CONCATENATED-STREAM-DEVICE-PEEKBIN)                  READP _ (FUNCTION \GENERIC.READP)                  EOFP _ (FUNCTION %%CONCATENATED-STREAM-DEVICE-EOFP)                  BLOCKIN _ (FUNCTION \GENERIC.BINS)                  BLOCKOUT _ (FUNCTION NILL)                  FORCEOUTPUT _ (FUNCTION NILL)                  GETFILEINFO _ (FUNCTION NILL)                  SETFILEINFO _ (FUNCTION NILL)))    (\DEFINEDEVICE (QUOTE TWO-WAY-STREAM-DEVICE)           (create FDEV                  DEVICENAME _ (QUOTE TWO-WAY-STREAM-DEVICE)                  RESETABLE _ NIL                  RANDOMACCESSP _ NIL                  NODIRECTORIES _ T                  BUFFERED _ NIL                  PAGEMAPPED _ NIL                  FDBINABLE _ NIL                  FDBOUTABLE _ NIL                  FDEXTENDABLE _ NIL                  DEVICEINFO _ NIL                  HOSTNAMEP _ (FUNCTION NILL)                  EVENTFN _ (FUNCTION NILL)                  DIRECTORYNAMEP _ (FUNCTION NILL)                  OPENFILE _ (FUNCTION %%TWO-WAY-STREAM-DEVICE-OPENFILE)                  REOPENFILE _ (FUNCTION NILL)                  CLOSEFILE _ (FUNCTION %%TWO-WAY-STREAM-DEVICE-CLOSEFILE)                  GETFILENAME _ (FUNCTION NILL)                  DELETEFILE _ (FUNCTION NILL)                  GENERATEFILES _ (FUNCTION \GENERATENOFILES)                  RENAMEFILE _ (FUNCTION NILL)                  BIN _ (FUNCTION %%TWO-WAY-STREAM-DEVICE-BIN)                  BOUT _ (FUNCTION %%TWO-WAY-STREAM-DEVICE-BOUT)                  PEEKBIN _ (FUNCTION %%TWO-WAY-STREAM-DEVICE-PEEKBIN)                  READP _ (FUNCTION \GENERIC.READP)                  BACKFILEPTR _ (FUNCTION %%TWO-WAY-STREAM-DEVICE-BACKFILEPTR)                  EOFP _ (FUNCTION %%TWO-WAY-STREAM-DEVICE-EOFP)                  BLOCKIN _ (FUNCTION \GENERIC.BINS)                  BLOCKOUT _ (FUNCTION \GENERIC.BOUTS)                  FORCEOUTPUT _ (FUNCTION %%TWO-WAY-STREAM-DEVICE-FORCEOUTPUT)                  GETFILEINFO _ (FUNCTION NILL)                  SETFILEINFO _ (FUNCTION NILL)))    (\DEFINEDEVICE (QUOTE ECHO-STREAM-DEVICE)           (create FDEV using (\GETDEVICEFROMNAME (QUOTE TWO-WAY-STREAM-DEVICE))                              DEVICENAME _ (QUOTE ECHO-STREAM-DEVICE)                              BIN _ (FUNCTION %%ECHO-STREAM-DEVICE-BIN)))    (\DEFINEDEVICE (QUOTE SYNONYM-STREAM-DEVICE)           (create FDEV                  DEVICENAME _ (QUOTE SYNONYM-STREAM-DEVICE)                  RESETABLE _ NIL                  RANDOMACCESSP _ NIL                  NODIRECTORIES _ T                  BUFFERED _ NIL                  PAGEMAPPED _ NIL                  FDBINABLE _ NIL                  FDBOUTABLE _ NIL                  FDEXTENDABLE _ NIL                  DEVICEINFO _ NIL                  HOSTNAMEP _ (FUNCTION NILL)                  EVENTFN _ (FUNCTION NILL)                  DIRECTORYNAMEP _ (FUNCTION NILL)                  OPENFILE _ (FUNCTION %%SYNONYM-STREAM-DEVICE-OPENFILE)                  REOPENFILE _ (FUNCTION NILL)                  CLOSEFILE _ (FUNCTION %%SYNONYM-STREAM-DEVICE-CLOSEFILE)                  GETFILENAME _ (FUNCTION NILL)                  DELETEFILE _ (FUNCTION NILL)                  GENERATEFILES _ (FUNCTION \GENERATENOFILES)                  RENAMEFILE _ (FUNCTION NILL)                  BIN _ (FUNCTION %%SYNONYM-STREAM-DEVICE-BIN)                  BOUT _ (FUNCTION %%SYNONYM-STREAM-DEVICE-BOUT)                  PEEKBIN _ (FUNCTION %%SYNONYM-STREAM-DEVICE-PEEKBIN)                  READP _ (FUNCTION %%SYNONYM-STREAM-DEVICE-READP)                  BACKFILEPTR _ (FUNCTION %%SYNONYM-STREAM-DEVICE-BACKFILEPTR)                  EOFP _ (FUNCTION %%SYNONYM-STREAM-DEVICE-EOFP)                  BLOCKIN _ (FUNCTION \GENERIC.BINS)                  BLOCKOUT _ (FUNCTION \GENERIC.BOUTS)                  FORCEOUTPUT _ (FUNCTION %%SYNONYM-STREAM-DEVICE-FORCEOUTPUT)                  GETFILEINFO _ (FUNCTION %%SYNONYM-STREAM-DEVICE-GETFILEINFO)                  SETFILEINFO _ (FUNCTION %%SYNONYM-STREAM-DEVICE-SETFILEINFO)))    (SETQ \FILL-POINTER-STREAM-DEVICE     (create FDEV            DEVICENAME _ (QUOTE FILL-POINTER-STREAM-DEVICE)            RESETABLE _ NIL            RANDOMACCESSP _ NIL            NODIRECTORIES _ T            BUFFERED _ NIL            PAGEMAPPED _ NIL            FDBINABLE _ NIL            FDBOUTABLE _ NIL            FDEXTENDABLE _ NIL            DEVICEINFO _ NIL            HOSTNAMEP _ (FUNCTION NILL)            EVENTFN _ (FUNCTION NILL)            DIRECTORYNAMEP _ (FUNCTION NILL)            OPENFILE _ (FUNCTION NILL)            REOPENFILE _ (FUNCTION NILL)            CLOSEFILE _ (FUNCTION %%FILL-POINTER-STREAM-DEVICE-CLOSEFILE)            GETFILENAME _ (FUNCTION NILL)            DELETEFILE _ (FUNCTION NILL)            GENERATEFILES _ (FUNCTION \GENERATENOFILES)            RENAMEFILE _ (FUNCTION NILL)            BIN _ (FUNCTION \ILLEGAL.DEVICEOP)            BOUT _ (FUNCTION NILL)            PEEKBIN _ (FUNCTION \ILLEGAL.DEVICEOP)            READP _ (FUNCTION \ILLEGAL.DEVICEOP)            EOFP _ (FUNCTION NILL)            BLOCKIN _ (FUNCTION \ILLEGAL.DEVICEOP)            BLOCKOUT _ (FUNCTION \GENERIC.BOUTS)            FORCEOUTPUT _ (FUNCTION NILL)            GETFILEPTR _ (FUNCTION %%FILL-POINTER-STREAM-DEVICE-GETFILEPTR)            SETFILEINFO _ (FUNCTION \ILLEGAL.DEVICEOP))))))(DECLARE: DONTEVAL@LOAD DOCOPY (%%INITIALIZE-CLSTREAM-TYPES)(%%INITIALIZE-STANDARD-STREAMS))(PUTPROPS CLSTREAMS FILETYPE COMPILE-FILE)(DEFSETF FILE-STREAM-POSITION SETFILEPTR)(PUTPROPS CLSTREAMS COPYRIGHT ("Xerox Corporation" 1985 1986))(DECLARE: DONTCOPY  (FILEMAP (NIL (25493 27524 (%%BROADCAST-STREAM-DEVICE-BOUT 25503 . 25798) (%%BROADCAST-STREAM-DEVICE-OUTCHARFN 25800 . 26149) (%%BROADCAST-STREAM-DEVICE-CLOSEFILE 26151 . 26578) (%%BROADCAST-STREAM-DEVICE-FORCEOUTPUT 26580 . 26885) (%%BROADCAST-STREAM-DEVICE-OPENFILE 26887 . 27522)) (27525 30275 (%%CONCATENATED-STREAM-DEVICE-BIN 27535 . 28115) (%%CONCATENATED-STREAM-DEVICE-CLOSEFILE 28117 . 28517) (%%CONCATENATED-STREAM-DEVICE-EOFP 28519 . 29049) (%%CONCATENATED-STREAM-DEVICE-OPENFILE 29051 . 29616) (%%CONCATENATED-STREAM-DEVICE-PEEKBIN 29618 . 30273)) (30276 30586 (%%ECHO-STREAM-DEVICE-BIN 30286 . 30584)) (30587 34903 (%%SYNONYM-STREAM-DEVICE-BIN 30597 . 30955) (%%SYNONYM-STREAM-DEVICE-BOUT 30957 . 31335) (%%SYNONYM-STREAM-DEVICE-OUTCHARFN 31337 . 31664) (%%SYNONYM-STREAM-DEVICE-CLOSEFILE 31666 . 32037) (%%SYNONYM-STREAM-DEVICE-EOFP 32039 . 32400) (%%SYNONYM-STREAM-DEVICE-FORCEOUTPUT 32402 . 32809) (%%SYNONYM-STREAM-DEVICE-GETFILEINFO 32811 . 33214) (%%SYNONYM-STREAM-DEVICE-OPENFILE 33216 . 33753) (%%SYNONYM-STREAM-DEVICE-PEEKBIN 33755 . 34148) (%%SYNONYM-STREAM-DEVICE-READP 34150 . 34284) (%%SYNONYM-STREAM-DEVICE-BACKFILEPTR 34286 . 34490) (%%SYNONYM-STREAM-DEVICE-SETFILEINFO 34492 . 34901)) (34904 37948 (%%TWO-WAY-STREAM-DEVICE-BIN 34914 . 35149) (%%TWO-WAY-STREAM-DEVICE-BOUT 35151 . 35447) (%%TWO-WAY-STREAM-DEVICE-OUTCHARFN 35449 . 35765) (%%TWO-WAY-STREAM-DEVICE-CLOSEFILE 35767 . 36225) (%%TWO-WAY-STREAM-DEVICE-EOFP 36227 . 36461) (%%TWO-WAY-STREAM-DEVICE-BACKFILEPTR 36463 . 36657) (%%TWO-WAY-STREAM-DEVICE-FORCEOUTPUT 36659 . 36936) (%%TWO-WAY-STREAM-DEVICE-OPENFILE 36938 . 37677) (%%TWO-WAY-STREAM-DEVICE-PEEKBIN 37679 . 37946)) (38302 38752 (%%SYNONYM-STREAM-DEVICE-GET-STREAM 38312 . 38750)) (40589 49079 (%%INITIALIZE-CLSTREAM-TYPES 40599 . 49077)))))STOP