1.1--- a/lisp/std/alien.lisp Tue Sep 17 22:19:19 2024 -0400
1.2+++ b/lisp/std/alien.lisp Wed Sep 18 21:48:06 2024 -0400
1.3@@ -99,17 +99,26 @@
1.4 (push c-string reversed-result)
1.5 (return (nreverse reversed-result)))))))
1.6
1.7-(defmacro clone-octets-to-alien (lispa aliena)
1.8- (with-gensyms (i)
1.9- `(loop for ,i from 0 below (length ,lispa)
1.10- do (setf (deref ,aliena ,i)
1.11- (aref ,lispa ,i)))))
1.12+(defun clone-octets-to-alien (lispa aliena)
1.13+ (declare (optimize (speed 3)))
1.14+ (loop for i from 0 below (length lispa)
1.15+ do (setf (deref aliena i)
1.16+ (aref lispa i)))
1.17+ aliena)
1.18
1.19-(defmacro clone-octets-from-alien (aliena lispa len)
1.20- (with-gensyms (i)
1.21- `(loop for ,i from 0 below ,len
1.22- do (setf (aref ,lispa ,i)
1.23- (deref ,aliena ,i)))))
1.24+(defmacro octets-to-alien (lispa)
1.25+ (with-gensyms (a)
1.26+ `(with-alien ((,a (array (unsigned 8) ,(length lispa))))
1.27+ (clone-octets-to-alien ,lispa ,a))))
1.28+
1.29+(defun clone-octets-from-alien (aliena lispa &optional len)
1.30+ (declare (optimize (speed 3))
1.31+ (array lispa))
1.32+ (unless len (setf len (length lispa)))
1.33+ (loop for i from 0 below len
1.34+ do (setf (aref lispa i)
1.35+ (deref aliena i)))
1.36+ lispa)
1.37
1.38 (defun foreign-int-to-integer (buffer size)
1.39 "Check SIZE of int BUFFER. return BUFFER."