"Converts a string from a c-call. Same as convert-from-foreign-string, except
that LW/CMU automatically converts strings from c-calls."
#+(or cmu sbcl lispworks scl) obj
"Converts a string from a c-call. Same as convert-from-foreign-string, except
that LW/CMU automatically converts strings from c-calls."
#+(or cmu sbcl lispworks scl) obj
- `(let ((,cstring ,lisp-string)) ,@body)
+ `(let ((,cstring ,lisp-string)) ,@body)
(alien:sap-alien (system:int-sap 0) (* (alien:unsigned 8))))
(string
(let* ((,size (length ,stored-obj))
(alien:sap-alien (system:int-sap 0) (* (alien:unsigned 8))))
(string
(let* ((,size (length ,stored-obj))
(sb-alien:sap-alien (sb-sys:int-sap 0) (* (sb-alien:unsigned 8))))
(string
(let* ((,size (length ,stored-obj))
(sb-alien:sap-alien (sb-sys:int-sap 0) (* (sb-alien:unsigned 8))))
(string
(let* ((,size (length ,stored-obj))
,@(when length (list :length length))
:truncate (not ,null-terminated-p)))))))
#+lispworks
,@(when length (list :length length))
:truncate (not ,null-terminated-p)))))))
#+lispworks
,stored-obj
,@(when length (list :length length))
:null-terminated-p ,null-terminated-p
,stored-obj
,@(when length (list :length length))
:null-terminated-p ,null-terminated-p
#+ignore
(let ((array-def (gensym)))
`(let ((,array-def (list 'alien:array 'c-call:char ,size)))
#+ignore
(let ((array-def (gensym)))
`(let ((,array-def (list 'alien:array 'c-call:char ,size)))
(defun fast-native-to-string (s len)
(declare (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0))
(type char-ptr-def s))
(let* ((len (or len (strlen s)))
(str (make-string len)))
(declare (fixnum len)
(defun fast-native-to-string (s len)
(declare (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0))
(type char-ptr-def s))
(let* ((len (or len (strlen s)))
(str (make-string len)))
(declare (fixnum len)
(defun fast-native-to-string (s len)
(declare (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0))
(type char-ptr-def s))
(defun fast-native-to-string (s len)
(declare (optimize (speed 3) (space 0) (safety 0) (compilation-speed 0))
(type char-ptr-def s))