type-specific wrapping and unwrapping of scheme values
[clinton/guile-figl.git] / figl / glx / types.scm
index 37f972e..f8c46b8 100644 (file)
 ;;; Code:
 
 (define-module (figl glx types)
-  #:use-module (system foreign)
-  #:re-export (int unsigned-long)
-  #:export (Bool
+  #:use-module ((system foreign) #:renamer (symbol-prefix-proc 'ffi:))
+  #:use-module (figl runtime)
+  #:export (int
+            unsigned-long
+            Bool
             Display-*
             Font
             GLXContext
 (module-use! (module-public-interface (current-module))
              (resolve-interface '(figl gl types)))
 
-(define Bool int)
-(define Display-* '*)
-(define Font unsigned-long)
-(define GLXContext '*)
-(define const-GLXContext '*)
-(define GLXContextID '*)
-(define GLXDrawable unsigned-long)
-(define GLXFBConfig '*)
-(define GLXFBConfig-* '*)
-(define GLXFBConfig-* '*)
-(define GLXPbuffer unsigned-long)
-(define GLXPixmap unsigned-long)
-(define GLXWindow unsigned-long)
-(define Pixmap unsigned-long)
-(define Window unsigned-long)
-(define XVisualInfo* '*)
-(define XVisualInfo-* '*)
-(define const-char-* '*)
-(define const-int-* '*)
-(define int-* '*)
-(define unsigned-int-* '*)
-(define unsigned-long-* '*)
+(define-simple-foreign-type int ffi:int)
+(define-simple-foreign-type unsigned-long ffi:unsigned-long)
+(define-simple-foreign-type Bool ffi:int)
+(define-simple-foreign-type Display-* '*)
+(define-simple-foreign-type Font ffi:unsigned-long)
+(define-simple-foreign-type GLXContext '*)
+(define-simple-foreign-type const-GLXContext '*)
+(define-simple-foreign-type GLXContextID '*)
+(define-simple-foreign-type GLXDrawable ffi:unsigned-long)
+(define-simple-foreign-type GLXFBConfig '*)
+(define-simple-foreign-type GLXFBConfig-* '*)
+(define-simple-foreign-type GLXFBConfig-* '*)
+(define-simple-foreign-type GLXPbuffer ffi:unsigned-long)
+(define-simple-foreign-type GLXPixmap ffi:unsigned-long)
+(define-simple-foreign-type GLXWindow ffi:unsigned-long)
+(define-simple-foreign-type Pixmap ffi:unsigned-long)
+(define-simple-foreign-type Window ffi:unsigned-long)
+(define-simple-foreign-type XVisualInfo* '*)
+(define-simple-foreign-type XVisualInfo-* '*)
+(define-simple-foreign-type const-char-* '*)
+(define-simple-foreign-type const-int-* '*)
+(define-simple-foreign-type int-* '*)
+(define-simple-foreign-type unsigned-int-* '*)
+(define-simple-foreign-type unsigned-long-* '*)
 ;; void(*)()
-(define #{void\x28;*\x29;\x28;\x29;}# '*)
+(define-simple-foreign-type #{void\x28;*\x29;\x28;\x29;}# '*)