]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - irrlicht/util.scm
define-foreign syntax
[guile-irrlicht.git] / irrlicht / util.scm
index 8c5b9e4eb4651465c38ffda5b64d101a8623c4e6..afc3cb85b69d01d250c7ad41c2d530f51e3b941f 100644 (file)
 
 
 (define-module (irrlicht util)
+  #:use-module (system foreign)
   #:export (bool->integer
-            integer->bool))
+            integer->bool
+            define-foreign))
 
 (define (bool->integer var)
   (if var 1 0))
 
 (define (integer->bool var)
   (if (= var 0) #f #t))
+
+;; Based on guile-sdl2 function, thanks a lot
+(define irrlicht-func
+  (let ((cirr (dynamic-link "libCIrrlicht")))
+    (lambda (return-type function-name arg-types)
+      (pointer->procedure return-type
+                          (dynamic-func function-name cirr)
+                          arg-types))))
+
+(define-syntax-rule (define-foreign name return-type func-name arg-types)
+  (define-public name
+    (irrlicht-func return-type func-name arg-types)))