X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;ds=inline;f=src%2Fobjects.lisp;h=1510d246ccb5a6a139bd6361dbd8e59ad1570afe;hb=6bd6231f953702ae8d2e949860ee30285d0f3f2a;hp=57611321ff93a71458ce00d1db6a5ed621063a45;hpb=38bdd9ccd063be4b3e0658a880a705ccb0cfdeb1;p=uffi.git diff --git a/src/objects.lisp b/src/objects.lisp index 5761132..1510d24 100644 --- a/src/objects.lisp +++ b/src/objects.lisp @@ -121,11 +121,11 @@ an array of TYPE with size SIZE. The TYPE parameter is evaluated." #+mcl `(ccl:pref ,ptr ,(convert-from-uffi-type type :deref)) ) -#+mcl +#+(and mcl (not openmcl)) (defmacro deref-pointer-set (ptr type value) `(setf (ccl:pref ,ptr ,(convert-from-uffi-type type :deref)) ,value)) -#+mcl +#+(and mcl (not openmcl)) (defsetf deref-pointer deref-pointer-set) (defmacro ensure-char-character (obj) @@ -238,9 +238,9 @@ an array of TYPE with size SIZE. The TYPE parameter is evaluated." `(let ((,binding-name ,pointer)) ,@body)) -#-(or lispworks cmu scl sbcl allegro) +#-(or lispworks cmu scl sbcl allegro openmcl) (defmacro with-cast-pointer ((binding-name pointer type) &body body) - (declare (ignore binding-name pointer type)) + (declare (ignore binding-name pointer type body)) '(error "WITH-CAST-POINTER not (yet) implemented for ~A" (lisp-implementation-type))) @@ -266,7 +266,12 @@ an array of TYPE with size SIZE. The TYPE parameter is evaluated." :module ,module) (define-symbol-macro ,lisp-name (fli:dereference (,lisp-name) :copy-foreign-object nil))) - #-(or allegro cmu scl sbcl lispworks) + #+(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) `(define-symbol-macro ,lisp-name '(error "DEF-FOREIGN-VAR not (yet) defined for ~A" (lisp-implementation-type)))))