Commit c4437f05 authored by Nathan Froyd's avatar Nathan Froyd
Browse files

add READ-SEQUENCE-like interfaces for reading vectors of values

parent 8b50f9f6
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -19,6 +19,13 @@
	   #:read-sb32/le-vector #:read-sb32/be-vector
	   #:read-ub64/le-vector #:read-ub64/be-vector
	   #:read-sb64/le-vector #:read-sb64/be-vector)
  ;; Non-consing variants akin to READ-SEQUENCE.
  (:export #:read-into-ub16/le-vector #:read-into-ub16/be-vector
	   #:read-into-sb16/le-vector #:read-into-sb16/le-vector
	   #:read-into-ub32/le-vector #:read-into-ub32/be-vector
	   #:read-into-sb32/le-vector #:read-into-sb32/be-vector
	   #:read-into-ub64/le-vector #:read-into-ub64/be-vector
	   #:read-into-sb64/le-vector #:read-into-sb64/be-vector)
  ;; Stream writers.
  (:export #:write-ub16/le #:write-ub16/be #:write-sb16/be #:write-sb16/le
           #:write-ub32/le #:write-ub32/be #:write-sb32/be #:write-sb32/le
+7 −0
Original line number Diff line number Diff line
@@ -66,4 +66,11 @@
			   for i from start below end 
			   do (,name (aref vector i) stream)
			   finally (return vector))) into forms
	if readp
	  collect `(defun ,(intern (format nil "READ-INTO-~:[U~;S~]B~D/~:[LE~;BE~]-VECTOR"
					   signedp bitsize big-endian-p))
		       (vector stream &key (start 0) end)
		     (let ((end (or end (length vector))))
		       (read-into-vector* stream vector start (- end start)
					  ,n-bytes #',byte-fun))) into forms
        finally (return `(progn ,@forms)))