-#|
-(defmacro allocate-byte-array (nsize)
- #+cmu
- `(alien:make-alien (alien:unsigned 8) ,nsize)
- #+lispworks
- `(fli:allocate-foreign-object :type :byte :nelems ,nsize)
- #+allegro
- `(ff:allocate-fobject (array :byte ,nsize))
-)
+;; Simple first pass. Will later create optimized routines for
+;; various platforms.
+(defmacro with-foreign-object ((var type &rest etc) &rest body)
+ (let ((result (gensym)))
+ `(let* ((,var (allocate-foreign-object ,type ,@etc))
+ (,result (progn ,@body)))
+ (free-foreign-object ,var)
+ ,result)))