handle the basic API types (e.g. hid_t)
authorD Herring <dherring@at.tentpost.dot.com>
Wed, 6 Apr 2011 01:50:39 +0000 (21:50 -0400)
committerD Herring <dherring@at.tentpost.dot.com>
Wed, 6 Apr 2011 01:50:39 +0000 (21:50 -0400)
read-open-macros.lisp
types.lisp

index f2f7d9c..6af0f79 100644 (file)
@@ -24,5 +24,5 @@ Given "H5T_NATIVE_INT64 H5T_NATIVE_INT64_g", expand to
              (variable (read-from-string hidename)))
         (setf code
               (append code
-                      (list `(cffi:defcvar (,variable ,varname :read-only t) hid_t)
+                      (list `(cffi:defcvar (,variable ,varname :read-only t) hid-t)
                             `(define-symbol-macro ,macro (progn (h5open) ,variable)))))))))
index 2286a5b..6aa5206 100644 (file)
@@ -1,27 +1,10 @@
-;; types to grovel
-hid_t
-herr_t
-hbool_t
-hsize_t
-haddr_t
-htri_t
-
-
-;; enumerations to grovel
-H5_iter_order_t
-H5_index_t
-...
-
-HDF5 headers seem to follow a strict, easily parsed style.
-The following appears to extract all the enums is a parseable format.
-It is plausible to get enum names, members, and even values.
-# sed -n -e '/enum .*{/,/} *H5/ p' * | cpp | sed -e '/#/ d' -e '/^$/ d'
-
-Here is a list of enumerated values.
-# sed -n -e '/enum .*{/,/} *H5/ p' H*public.h | cpp | sed -e '/#/ d' -e '/^$/ d' -e '/typedef/ d' -e '/}/ d' -e 's/^[ \t]*//' -e 's/[ ,].*//'
-
-and an easily parseable form.
-# sed -n -e '/enum .*{/,/} *H5/ p' H*public.h | cpp | sed -e '/#/ d' -e '/^$/ d' -e 's/[(,);=]//g' -e '/typedef/ d' -e 's/}[ \t]*//'
+;; basic API types
+(cffi:defctype hid-t :int)
+(cffi:defctype herr-t :int)
+(cffi:defctype hbool_t :unsigned-int)
+(cffi:defctype hsize_t :unsigned-long-long)
+(cffi:defctype haddr_t :uint64) ; possibly platform-specific -- see H5public.h
+(cffi:defctype htri-t :int)
 
 
 ;; constants