r5500: *** empty log message ***
[uffi.git] / tests / foreign-var.lisp
index e0c323532f96b9f0b970a4ef4d44afb1e2994156..52bceb159221330f1d5e03eaaaf1f8cb7133da4e 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Aug 2003
 ;;;;
-;;;; $Id: foreign-var.lisp,v 1.2 2003/08/14 21:58:44 kevin Exp $
+;;;; $Id: foreign-var.lisp,v 1.3 2003/08/15 02:34:34 kevin Exp $
 ;;;;
 ;;;; *************************************************************************
 
 (deftest fvar.8 double-3-1 3.1d0)
 
 
+(uffi:def-foreign-var ("fvar_addend" *fvar-addend*) :int "uffi_tests")
+
+(uffi:def-struct fvar-struct
+    (i :int)
+  (d :double))
+(uffi:def-foreign-var ("fvar_struct" *fvar-struct*) fvar-struct
+  "uffi_tests")
+
+(uffi:def-function ("fvar_struct_int" fvar-struct-int)
+    ()
+  :returning :int
+  :module "uffi_tests")
+  (uffi:def-function ("fvar_struct_double" fvar-struct-double)
+      ()
+    :returning :double
+    :module "uffi_tests")
+(deftest fvarst.1 *fvar-addend* 3)
+(deftest fvarst.2 (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i) 42)
+(deftest fvarst.3 (= (+ *fvar-addend*
+                       (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i))
+                    (fvar-struct-int))
+  t)
+(deftest fvarst.4 (uffi:get-slot-value *fvar-struct* 'fvar-struct 'd) 3.2d0)
+(deftest fvarst.5 (= (uffi:get-slot-value *fvar-struct* 'fvar-struct 'd)
+                    (fvar-struct-double))
+  t)
+
+(deftest fvarst.6 
+    (let ((orig *fvar-addend*))
+      (incf *fvar-addend* 3)
+      (prog1
+         *fvar-addend*
+       (setf *fvar-addend* orig)))
+  6)
+
+(deftest fvarst.7 
+    (let ((orig *fvar-addend*))
+      (incf *fvar-addend* 3)
+      (prog1
+         (fvar-struct-int)
+       (setf *fvar-addend* orig)))
+  48)
+
+;;(decf (uffi:get-slot-value *fvar-struct* 'fvar-struct 'i) 10)
+;;(deftest fvarst.8 (fvar-struct-int) 38)