Commit a1029999ece6416852be312f4182982b5ee285ee

Thomas de Grivel 2018-04-17T15:54:39

update buffered output stream

diff --git a/buffered-output-stream.lisp b/buffered-output-stream.lisp
index 6823b0d..38bde37 100644
--- a/buffered-output-stream.lisp
+++ b/buffered-output-stream.lisp
@@ -62,15 +62,12 @@ MAKE-STREAM-OUTPUT-BUFFER to create it if needed."))
 
 (defgeneric stream-write-element-to-buffer (stream element))
 
-(defmethod make-stream-output-buffer ((stream buffered-output-stream))
-  (make-array `(,(stream-output-buffer-size stream))
-              :element-type (stream-element-type stream)))
-
 (defmethod stream-clear-output ((stream buffered-output-stream))
-  (setf (stream-output-buffer stream) nil))
+  (setf (stream-output-index stream) 0
+        (stream-output-length stream) 0))
 
 (defmethod stream-close :before ((stream buffered-output-stream))
-  (flush stream))
+  (stream-flush stream))
 
 (defmethod stream-close :after ((stream buffered-output-stream))
   (stream-discard-output-buffer stream))
@@ -80,6 +77,9 @@ MAKE-STREAM-OUTPUT-BUFFER to create it if needed."))
 (defmethod stream-discard-output-buffer ((s buffered-output-stream))
   (setf (stream-output-buffer s) nil))
 
+(defmethod stream-element-type ((s buffered-output-stream))
+  (slot-value s 'element-type))
+
 (defmethod stream-finish-output ((stream buffered-output-stream))
   "Flushes the output buffer of BUFFERED-OUTPUT-STREAM
 by repeatedly calling STREAM-FLUSH-OUTPUT until empty. Returns
@@ -106,13 +106,6 @@ by repeatedly calling STREAM-FLUSH-OUTPUT until empty. Returns
 (defmethod (setf stream-output-buffer) (value (stream buffered-output-stream))
   (setf (slot-value stream 'output-buffer) value))
 
-(defmethod stream-write-element-to-buffer ((stream buffered-output-stream)
-                                           element)
-  (setf (aref (stream-output-buffer stream) (stream-output-length stream))
-        element)
-  (incf (stream-output-length stream))
-  nil)
-
 (defmethod stream-write ((stream buffered-output-stream) element)
   (check-if-open stream)
   (assert (typep element (stream-element-type stream)))