(defmacro with-cvlab-foreign-pointers ((pointers-var npointers-var cvlab-objects-form) &body forms) (let ((cvlab-objects (gensym "CVLAB-OBJECTS")) (i (gensym "I")) (object (gensym "OBJECT"))) `(let* ((,cvlab-objects ,cvlab-objects-form) (,npointers-var (length ,cvlab-objects)) (,i 0)) (with-foreign-objects ((,pointers-var :pointer ,npointers-var)) (map nil (lambda (,object) (setf (mem-aref ,pointers-var :pointer ,i) (slot-value ,object 'pointer)) (incf ,i)) ,cvlab-objects) ,@forms))))