r9400: use unsigned byte in fast-native-to-string
[uffi.git] / src / objects.lisp
index 42ab3fc334fe0b3266fe477f46a19df2dcdcf3f6..940c941cc42f6d09338c22f90b8bc0d9e45949e0 100644 (file)
@@ -101,12 +101,6 @@ an array of TYPE with size SIZE. The TYPE parameter is evaluated."
   #+mcl `(ccl:%int-to-ptr ,addr)
   )
 
-(defmacro pointer-address (ptr)
-  #+allegro ptr
-  #+(or cmu scl) `(system:sap-int (alien:alien-sap ,ptr))
-  #+sbcl `(sb-sys:sap-int (sb-alien:alien-sap ,ptr))
-  #+lispworks `(fli:pointer-address ,ptr)
-  #+mcl `(ccl:%ptr-to-int ,ptr))
 
 (defmacro char-array-to-pointer (obj)
   #+(or cmu scl) `(alien:cast ,obj (* (alien:unsigned 8)))
@@ -134,25 +128,21 @@ an array of TYPE with size SIZE. The TYPE parameter is evaluated."
 #+mcl
 (defsetf deref-pointer deref-pointer-set)
 
-#+lispworks
 (defmacro ensure-char-character (obj)
+  #+(or (and mcl (not openmcl))) obj
+  #+(or allegro cmu sbcl scl openmcl) `(code-char ,obj)
+  ;; lispworks varies whether deref'ing array vs. slot access of a char
+  #+lispworks
   `(if (characterp ,obj) ,obj (code-char ,obj)))
-
-#+(and mcl (not openmcl)) 
-(defmacro ensure-char-character (obj)
-  obj)
-
-#+(or allegro cmu sbcl scl openmcl)
-(defmacro ensure-char-character (obj)
-  `(code-char ,obj))
   
-#+(or lispworks (and mcl (not openmcl)))
 (defmacro ensure-char-integer (obj)
- `(char-code ,obj))
+  #+(or (and mcl (not openmcl))) `(char-code ,obj)
+  #+(or allegro cmu sbcl scl openmcl) obj
+  `(if (characterp ,obj) (char-code ,obj) ,obj))
 
-#+(or allegro cmu sbcl scl openmcl)
-(defmacro ensure-char-integer (obj)
-  obj)
+(defmacro ensure-char-storable (obj)
+  #+(or lispworks (and mcl (not openmcl))) obj
+  #+(or allegro cmu sbcl scl openmcl) `(char-code ,obj))
 
 (defmacro pointer-address (obj)
   #+(or cmu scl)