1 ;;;; cross-compiler-only versions of I/O-related stuff
3 ;;;; This software is part of the SBCL system. See the README file for
6 ;;;; This software is derived from the CMU CL system, which was
7 ;;;; written at Carnegie Mellon University and released into the
8 ;;;; public domain. The software is in the public domain and is
9 ;;;; provided with absolutely no warranty. See the COPYING and CREDITS
10 ;;;; files for more information.
12 (in-package "SB!FASL")
14 ;;;; fast-read operations
16 ;;;; (Portable versions of these are needed at cross-compile time because
17 ;;;; genesis implements some of its cold fops by cloning ordinary fop
18 ;;;; implementations, and the ordinary fop implementations are defined in terms
19 ;;;; of fast-read operations.)
21 (defmacro with-fast-read-byte
((type stream
&optional
(eof-error-p t
) eof-value
)
23 (let ((f-stream (gensym "STREAM"))
24 (f-eof-error-p (gensym "EOF-ERROR-P"))
25 (f-eof-value (gensym "EOF-VALUE")))
26 `(let ((,f-stream
,stream
)
27 (,f-eof-error-p
,eof-error-p
)
28 (,f-eof-value
,eof-value
))
29 (flet ((fast-read-byte ()
30 (the ,type
(read-byte ,f-stream
,f-eof-error-p
,f-eof-value
))))
33 ;; FORM-TRACKING-STREAM is one our ANSI-STREAM subtypes,
34 ;; and can't really have an (easy) implementation in the host.
35 (defun form-tracking-stream-p (x)
38 (macrolet ((def-stub (name)
39 `(defun ,name
(&rest args
)
40 (declare (ignore args
))
41 (error "stub called"))))
42 (def-stub sb
!c
::make-form-tracking-stream-observer
)
43 (def-stub form-tracking-stream-form-start-char-pos
)
44 (def-stub form-tracking-stream-form-start-byte-pos
)
45 (def-stub line
/col-from-charpos
)
46 (def-stub (setf form-tracking-stream-form-start-char-pos
))
47 (def-stub (setf form-tracking-stream-observer
)))