projects
/
uffi.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
r9396: add ensure-char-storage function, new tests
[uffi.git]
/
src
/
objects.lisp
diff --git
a/src/objects.lisp
b/src/objects.lisp
index f154990cef415047cc7aadb1cf46aed85b0d5961..940c941cc42f6d09338c22f90b8bc0d9e45949e0 100644
(file)
--- a/
src/objects.lisp
+++ b/
src/objects.lisp
@@
-128,25
+128,21
@@
an array of TYPE with size SIZE. The TYPE parameter is evaluated."
#+mcl
(defsetf deref-pointer deref-pointer-set)
#+mcl
(defsetf deref-pointer deref-pointer-set)
-#+lispworks
(defmacro ensure-char-character (obj)
(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)))
`(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)
(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)
(defmacro pointer-address (obj)
#+(or cmu scl)