r10373: 2005-04-03 Kevin Rosenberg (kevin@rosenberg.net)
[uffi.git] / src / objects.lisp
index 0e2d908f45fe9edea2b6709e2f4ed28a1a455c02..1510d246ccb5a6a139bd6361dbd8e59ad1570afe 100644 (file)
@@ -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,41 +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)))))
-
-#-(or sbcl cmu)
-(defun convert-from-foreign-usb8 (s len)
-  (declare (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0))
-          (fixnum len))
-  (let ((a (make-array len :element-type '(unsigned-byte 8))))
-    (dotimes (i len a)
-      (declare (fixnum i))
-      (setf (aref a i) (uffi:deref-array s '(:array :unsigned-byte) i)))))
-
-#+sbcl
-(defun convert-from-foreign-usb8 (s len)
-  (declare (type sb-sys:system-area-pointer sap))
-  (locally
-      (declare (optimize (speed 3) (safety 0)))
-    (let ((result (make-array len :element-type '(unsiged-byte 8))))
-      (sb-kernel:copy-from-system-area s 0
-                                      result (* sb-vm:vector-data-offset
-                                                sb-vm:n-word-bits)
-                                      (* len sb-vm:n-byte-bits))
-      result)))
-
-#+cmu
-(defun convert-from-foreign-usb8 (s le)
-  (declare (type system:system-area-pointer sap))
-  (locally
-      (declare (optimize (speed 3) (safety 0)))
-    (let ((result (make-array len :element-type '(unsiged-byte 8))))
-      (kernel:copy-from-system-area s 0
-                                   result (* vm:vector-data-offset
-                                             vm:word-bits)
-                                   (* len vm:byte-bits))
-      result)))
-