#+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)