3 ;;; This code is in the public domain.
5 ;;; The cmucl implementation of simple-streams was done by Paul Foley,
6 ;;; who placed the code in the public domain. Sbcl port by Rudi
10 (defpackage sb-simple-streams
12 (:import-from
#:sb-kernel
#:ansi-stream
#:charpos
#:line-length
)
13 (:import-from
#:sb-gray
#:fundamental-stream
)
14 (:import-from
#:sb-impl
15 #:in-stream-from-designator
#:out-stream-from-designator
)
16 ;; FIXME: Using deffoo! or equivalent might be nicer.
17 (:implement
#:common-lisp
#:sb-impl
)
18 (:export
;; Stream classes
22 #:SINGLE-CHANNEL-SIMPLE-STREAM
23 #:DIRECT-SIMPLE-STREAM
24 #:BUFFER-INPUT-SIMPLE-STREAM
25 #:BUFFER-OUTPUT-SIMPLE-STREAM
28 #:MAPPED-FILE-SIMPLE-STREAM
29 #:DUAL-CHANNEL-SIMPLE-STREAM
30 #:TERMINAL-SIMPLE-STREAM
31 #:SOCKET-SIMPLE-STREAM
32 #:SOCKET-BASE-SIMPLE-STREAM
33 #:HIPER-SOCKET-SIMPLE-STREAM
34 #:STRING-SIMPLE-STREAM
36 #:STRING-INPUT-SIMPLE-STREAM
37 #:STRING-OUTPUT-SIMPLE-STREAM
38 #:FILL-POINTER-OUTPUT-SIMPLE-STREAM
39 #:LIMITED-STRING-OUTPUT-SIMPLE-STREAM
41 #:ANNOTATION-OUTPUT-SIMPLE-STREAM
43 #:*STANDARD-INPUT
* #:*STANDARD-OUTPUT
* #:*ERROR-OUTPUT
*
44 #:*QUERY-IO
* #:*DEBUG-IO
* #:*TRACE-OUTPUT
* #:*TERMINAL-IO
*
46 #:STREAM-INPUT-HANDLE
#:STREAM-OUTPUT-HANDLE
48 ;; Device-level functions
49 #:DEVICE-OPEN
#:DEVICE-CLOSE
#:DEVICE-BUFFER-LENGTH
50 #:DEVICE-FILE-POSITION
#:DEVICE-FILE-LENGTH
#:DEVICE-READ
51 #:DEVICE-CLEAR-INPUT
#:DEVICE-WRITE
#:DEVICE-CLEAR-OUTPUT
52 #:DEVICE-EXTEND
#:DEVICE-FINISH-RECORD
53 ;; Implementation functions/macros
54 #:WITH-STREAM-CLASS
#:SM
#:FUNCALL-STM-HANDLER
55 #:FUNCALL-STM-HANDLER-2
#:ADD-STREAM-INSTANCE-FLAGS
56 #:REMOVE-STREAM-INSTANCE-FLAGS
57 ;; User-level functions (mostly reexported from COMMON-LISP)
58 #:PARSE-FILESPEC
#:DEFINE-FILESPEC
#:DEFAULT-OPEN-CLASS
#:OPEN
59 #:CLOSE
#:READ-BYTE
#:READ-CHAR
#:READ-CHAR-NO-HANG
#:UNREAD-CHAR
60 #:PEEK-CHAR
#:LISTEN
#:READ-LINE
#:READ-SEQUENCE
#:CLEAR-INPUT
61 #:WRITE-BYTE
#:WRITE-CHAR
#:WRITE-STRING
#:WRITE-SEQUENCE
#:TERPRI
62 #:FRESH-LINE
#:FINISH-OUTPUT
#:FORCE-OUTPUT
#:CLEAR-OUTPUT
63 #:FILE-POSITION
#:FILE-LENGTH
#:LINE-LENGTH
#:CHARPOS
64 #:STREAM-ELEMENT-TYPE
#:STREAM-EXTERNAL-FORMAT
#:STREAMP
65 #:OPEN-STREAM-P
#:INPUT-STREAM-P
#:OUTPUT-STREAM-P
66 #:INTERACTIVE-STREAM-P
#:READ-VECTOR
#:WRITE-VECTOR
#:READ-OCTETS
67 #:WRITE-OCTETS
#:DEF-STREAM-CLASS
#:WAIT-FOR-INPUT-AVAILABLE
68 ;; higher level things (reexported from COMMON-LISP)
69 #:WITH-OPEN-FILE
#:WITH-OPEN-STREAM
#:FORMAT
#:PPRINT
#:PRIN1
70 #:PRIN1-TO-STRING
#:PRINC
#:PRINC-TO-STRING
#:PRINT
#:READ
71 #:READ-DELIMITED-LIST
#:READ-FROM-STRING
#:WRITE
#:WRITE-LINE
72 #:WRITE-TO-STRING
#:READ-PRESERVING-WHITESPACE
))
73 (eval-when (:compile-toplevel
:load-toplevel
:execute
)
74 (setf (sb-int:system-package-p
(find-package "SB-SIMPLE-STREAMS")) t
))
78 (defgeneric stream-file-position
(stream &optional position
))
79 (defgeneric stream-file-length
(stream))
80 (export '(stream-file-position stream-file-length
))