- (let ((temp-name (gensym)))
- `(progn
- (fli:define-foreign-variable (,temp-name ,foreign-name) :type ,var-type :module ,module)
- (define-symbol-macro ,lisp-name (,temp-name))))
- #-(or allegro cmu scl sbcl lispworks)
+ `(progn
+ (fli:define-foreign-variable (,lisp-name ,foreign-name)
+ :accessor :address-of
+ :type ,var-type
+ :module ,module)
+ (define-symbol-macro ,lisp-name (fli:dereference (,lisp-name)
+ :copy-foreign-object nil)))
+ #+(and openmcl darwinppc-target)
+ (setf foreign-name (concatenate 'string "_" foreign-name))
+ #+openmcl
+ `(define-symbol-macro ,lisp-name
+ (deref-pointer (ccl:foreign-symbol-address ,foreign-name) ,var-type))
+ #-(or allegro cmu scl sbcl lispworks openmcl)