Update of /project/elephant/cvsroot/elephant/src/memutil In directory clnet:/tmp/cvs-serv2451/src/memutil
Modified Files: memutil.lisp Log Message: Checkpoint checkin of db-lisp
--- /project/elephant/cvsroot/elephant/src/memutil/memutil.lisp 2007/02/03 14:07:01 1.21 +++ /project/elephant/cvsroot/elephant/src/memutil/memutil.lisp 2007/02/08 23:07:19 1.22 @@ -41,6 +41,8 @@ #:reset-buffer-stream #:buffer-stream-buffer #:buffer-stream-length #:buffer-stream-size
+ #:buffer-read-to-array-offset #:buffer-write-from-array-offset + #:buffer-write-byte #:buffer-write-float #:buffer-write-double #:buffer-write-string #:buffer-write-int32 #:buffer-write-uint32 @@ -700,6 +702,26 @@ (dotimes (i writable bs) (buffer-write-byte (aref bv i) bs))))
+(defun buffer-read-to-array-offset (arry offset bs) + "Buffer relative; read contents of buffer-stream and write them into array at offset" + (declare (type buffer-stream bs) + (type fixnum offset)) + (let* ((position (buffer-stream-position bs)) + (size (buffer-stream-size bs)) + (vlen (- size position))) + (if (>= vlen 0) + (dotimes (i vlen arry) + (setf (aref arry (+ i offset)) + (buffer-read-byte bs)))))) + +(defun buffer-write-from-array-offset (arry offset length bs) + "Buffer relative; write array contents into buffer stream" + (declare (type fixnum offset) + (type buffer-stream bs)) + (dotimes (i length arry) + (buffer-write-byte (aref arry (+ i offset)) bs))) + + ;; ;; Compatibility ;;