summaryrefslogtreecommitdiff
path: root/Lisp/type-conversion.lisp
diff options
context:
space:
mode:
authorMatthias Benkard <code@mail.matthias.benkard.de>2007-08-14 16:03:51 +0200
committerMatthias Benkard <code@mail.matthias.benkard.de>2007-08-14 16:03:51 +0200
commitf9408631aa030926fad625ecf4d18f08b478fc1d (patch)
tree3b7662585b47e60873c6b165c82fd20dfd560dd5 /Lisp/type-conversion.lisp
parent6895fb365446fb98b76e2f94d27afa0a7fa18133 (diff)
Add some type declarations to improve type safety.
darcs-hash:80f199b54225eed3b79fb36bbd49a0745e9033af
Diffstat (limited to 'Lisp/type-conversion.lisp')
-rw-r--r--Lisp/type-conversion.lisp10
1 files changed, 10 insertions, 0 deletions
diff --git a/Lisp/type-conversion.lisp b/Lisp/type-conversion.lisp
index 9e8e94f..858538b 100644
--- a/Lisp/type-conversion.lisp
+++ b/Lisp/type-conversion.lisp
@@ -2,6 +2,9 @@
;;; (@* "Low-level Data Conversion")
+(declaim (ftype (function (*)
+ (values foreign-pointer &rest nil))
+ obj-data->lisp))
(defun lisp->obj-data (value)
(let ((obj-data (foreign-alloc 'obj-data))
(type-name (lisp-value->type-name value)))
@@ -20,6 +23,11 @@
obj-data))
+(declaim (ftype (function (foreign-pointer)
+ (values (or number string symbol selector id
+ objc-class boolean foreign-pointer)
+ &rest nil))
+ obj-data->lisp))
(defun obj-data->lisp (obj-data)
(with-foreign-slots ((type data) obj-data obj-data)
(let* ((type-name (type-id->type-name (foreign-string-to-lisp type)))
@@ -59,6 +67,8 @@
bindings))))
+(declaim (ftype (function (foreign-pointer) (values string &rest nil))
+ foreign-string-to-lisp/dealloc))
(defun foreign-string-to-lisp/dealloc (foreign-string)
"Convert a (possibly freshly allocated) C string into a Lisp string
and free the C string afterwards."