Changeset 5409
- Timestamp:
- Oct 23, 2006, 7:27:06 AM (18 years ago)
- File:
-
- 1 edited
-
trunk/ccl/level-1/l1-streams.lisp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/level-1/l1-streams.lisp
r5406 r5409 4099 4099 (defglobal *fill-pointer-string-output-stream-class* (make-built-in-class 'fill-pointer-string-output-stream 'string-output-stream)) 4100 4100 4101 (def-standard-initial-binding %string-output-stream-ioblocks% (%cons-pool nil)) 4102 4103 ;;; Should only be used for a stream whose class is exactly 4104 ;;; *string-output-stream-class* 4105 (defun %close-string-output-stream (stream ioblock) 4106 (when (eq (basic-stream.class stream) 4107 *string-output-stream-class*) 4108 (without-interrupts 4109 (setf (ioblock-stream ioblock) (pool.data %string-output-stream-ioblocks%) 4110 (pool.data %string-output-stream-ioblocks%) ioblock)))) 4111 4112 (defun create-string-output-stream-ioblock (&rest keys &key stream &allow-other-keys) 4113 (declare (dynamic-extent keys)) 4114 (let* ((recycled (and stream 4115 (eq (basic-stream.class stream) 4116 *string-output-stream-class*) 4117 (without-interrupts 4118 (let* ((data (pool.data %string-output-stream-ioblocks%))) 4119 (when data 4120 (setf (pool.data %string-output-stream-ioblocks%) 4121 (ioblock-stream data) 4122 (ioblock-stream data) stream 4123 (string-output-stream-ioblock-index data) 0)) 4124 data))))) 4125 (or recycled (apply #'make-string-output-stream-ioblock keys)))) 4126 4127 4128 4101 4129 (defun %%make-string-output-stream (class string write-char-function write-string-function) 4102 4130 (let* ((stream (allocate-basic-stream class))) 4103 4131 (initialize-basic-stream stream :element-type 'character) 4104 (let* ((ioblock ( make-string-output-stream-ioblock4132 (let* ((ioblock (create-string-output-stream-ioblock 4105 4133 :stream stream 4106 4134 :device nil … … 4111 4139 :write-simple-string-function write-string-function 4112 4140 :force-output-function #'false 4113 :close-function #' false)))4141 :close-function #'%close-string-output-stream))) 4114 4142 (setf (basic-stream.state stream) ioblock) 4115 4143 stream))) … … 4231 4259 (defun make-simple-string-output-stream () 4232 4260 (%%make-string-output-stream *string-output-stream-class* 4233 (make-string 10)4261 (make-string 40) 4234 4262 'string-output-stream-ioblock-write-char 4235 4263 'string-output-stream-ioblock-write-simple-string))
Note:
See TracChangeset
for help on using the changeset viewer.
