(deftest chptr.1
(let ((native-string "test string"))
(uffi:with-foreign-string (fs native-string)
- (characterp
- (ensure-char-character
- (deref-pointer fs :char)))))
- t)
+ (ensure-char-character
+ (deref-pointer fs :char))))
+ #\t)
(deftest chptr.2
(let ((native-string "test string"))
(uffi:with-foreign-string (fs native-string)
- (characterp
- (ensure-char-character
- (deref-pointer fs :unsigned-char)))))
- t)
+ (ensure-char-character
+ (deref-pointer fs :unsigned-char))))
+ #\t)
(deftest chptr.3
+ (let ((native-string "test string"))
+ (uffi:with-foreign-string (fs native-string)
+ (ensure-char-integer
+ (deref-pointer fs :unsigned-char))))
+ 116)
+
+(deftest chptr.4
(let ((native-string "test string"))
(uffi:with-foreign-string (fs native-string)
(numberp
(deref-pointer fs :byte))))
t)
-
+(deftest chptr.5
+ (let ((fs (uffi:allocate-foreign-object :unsigned-char 128)))
+ (setf (uffi:deref-array fs '(:array :unsigned-char) 0)
+ (uffi:ensure-char-storable #\a))
+ (setf (uffi:deref-array fs '(:array :unsigned-char) 1)
+ (uffi:ensure-char-storable (code-char 0)))
+ (uffi:convert-from-foreign-string fs))
+ "a")
+
+;; This produces an array which needs fli:foreign-aref to access
+;; rather than fli:dereference
+
+#-lispworks
+(deftest chptr.6
+ (uffi:with-foreign-object (fs '(:array :unsigned-char 128))
+ (setf (uffi:deref-array fs '(:array :unsigned-char) 0)
+ (uffi:ensure-char-storable #\a))
+ (setf (uffi:deref-array fs '(:array :unsigned-char) 1)
+ (uffi:ensure-char-storable (code-char 0)))
+ (uffi:convert-from-foreign-string fs))
+ "a")
+
+
+