Commit 873ad091 authored by Nathan Froyd's avatar Nathan Froyd
Browse files

add interfaces for writing vectors of values

parent d102838a
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -22,4 +22,11 @@
  ;; 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
           #:write-ub64/le #:write-ub64/be #:write-sb64/be #:write-sb64/le))
           #:write-ub64/le #:write-ub64/be #:write-sb64/be #:write-sb64/le)
  ;; Stream writers for vectors.
  (:export #:write-ub16/le-vector #:write-ub16/be-vector
	   #:write-sb16/le-vector #:write-sb16/le-vector
	   #:write-ub32/le-vector #:write-ub32/be-vector
	   #:write-sb32/le-vector #:write-sb32/be-vector
	   #:write-ub64/le-vector #:write-ub64/be-vector
	   #:write-sb64/le-vector #:write-sb64/be-vector))
+8 −1
Original line number Diff line number Diff line
@@ -58,5 +58,12 @@
		     (let ((vector (make-array n-elements
					       :element-type ',element-type)))
		       (read-into-vector* stream vector 0 n-elements
					  ,n-bytes #',byte-fun))) into forms
					  ,n-bytes #',byte-fun)))
	else
	  collect `(defun ,(stream-vector-fun-name bitsize nil signedp big-endian-p)
		       (vector stream &key (start 0) end)
		     (loop with end = (or end (length vector))
			   for i from start below end 
			   do (,name (aref vector i) stream)
			   finally (return vector))) into forms
        finally (return `(progn ,@forms)))