everything now compiles fairly cleanly
authorD Herring <dherring@at.tentpost.dot.com>
Thu, 7 Apr 2011 04:47:08 +0000 (00:47 -0400)
committerD Herring <dherring@at.tentpost.dot.com>
Thu, 7 Apr 2011 04:47:08 +0000 (00:47 -0400)
hdf5.asd [new file with mode: 0644]
read-check-macros.lisp
read-functions.lisp
read-open-macros.lisp
types.lisp

diff --git a/hdf5.asd b/hdf5.asd
new file mode 100644 (file)
index 0000000..14862eb
--- /dev/null
+++ b/hdf5.asd
@@ -0,0 +1,9 @@
+(asdf:defsystem :hdf5
+  :depends-on (:cffi)
+  :components
+  ((:file "read-open-macros")
+   (:file "read-check-macros")
+   (:file "read-functions")
+   (:file "read-enums")
+   (:file "types"))
+  :serial t)
index 8d11dbe..7e4197e 100644 (file)
@@ -10,3 +10,6 @@
              (value (read-from-string (subseq line (1+ pos)))))
         (push `(define-symbol-macro ,macro (progn (h5check) ,value))
               code)))))
+
+(defmacro hdf5-check-macros ()
+  (read-check-macros))
index 57ebe41..4a35063 100644 (file)
         ((not line)
          (cons 'progn code))
       (push `(cffi:defctype ,(normal-symbol line) :pointer) code))))
+
+(defmacro hdf5-functions ()
+  (read-functions))
+(defmacro hdf5-function-pointers ()
+  (read-function-pointers))
index 721901a..4dde649 100644 (file)
@@ -29,3 +29,6 @@ Given "H5T_NATIVE_INT64 H5T_NATIVE_INT64_g", expand to
               (append code
                       (list `(cffi:defcvar (,variable ,varname :read-only t) hid-t)
                             `(define-symbol-macro ,macro (progn (h5open) ,variable)))))))))
+
+(defmacro hdf5-open-macros ()
+  (read-open-macros))
index fd16bdc..2b5f4ed 100644 (file)
@@ -1,4 +1,9 @@
 ;; basic API types
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  (cffi:define-foreign-library hdf5
+    (:unix (:or "libhdf5.so.6" "libhdf5.so"))
+    (t (:default "libhdf5")))
+  (cffi:use-foreign-library hdf5)
 (cffi:defctype hid-t :int)
 (cffi:defctype herr-t :int)
 (cffi:defctype hbool-t :unsigned-int)
 (cffi:defctype size-t :uint64) ; definitely platform-specific
 (cffi:defctype ssize-t :int64)
 (cffi:defctype off-t :int64)
+)
+
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  (hdf5-enums))
 
 #|
 # sed -n -e '/^typedef [ ]*[^ ]* [ ]*[^ ]*[ ]*;$/ p' *
@@ -31,7 +40,9 @@ typedef int htri_t;
 typedef int ssize_t;
 typedef long ssize_t;
 |#
-(progn
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  (hdf5-function-pointers)
+
   (cffi:defctype h5e-major-t hid-t)
   (cffi:defctype h5e-minor-t hid-t)
 
@@ -49,6 +60,14 @@ typedef long ssize_t;
 
   (cffi:defctype h5g-link-t h5l-type-t))
 
+
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  (hdf5-open-macros)
+  (hdf5-check-macros))
+
+
+(hdf5-functions)
+
 #|
 On review, H5OPEN and H5CHECK define most of the intersting constants.
 HADDR_UNDEF is returned in a couple places; but knowing it is negative should suffice.