]> git.jsancho.org Git - guile-assimp.git/blobdiff - src/low-level.scm
Resolve VM Stack Overflow when reading mesh vertices
[guile-assimp.git] / src / low-level.scm
index 53bb39eb4d83906996191061a09dc729fc9f573d..d604789712e14939ca66c66fa64c3a1cb4baf6b3 100644 (file)
   (cond ((= (pointer-address root) 0)
         '())
        (else
-        (let loop ((i 0))
-          (cond ((= i size)
-                 '())
-                (else
-                 (cons (element-proc root (* element-size i))
-                       (loop (+ i 1)))))))))
+        (reverse
+         (let loop ((i 0) (res '()))
+           (cond ((= i size)
+                  res)
+                 (else
+                  (loop (+ i 1) (cons (element-proc root (* element-size i)) res)))))))))
 
 (define (get-element-address root-pointer offset)
   (make-pointer (+ (pointer-address root-pointer) offset)))
        get-element-address
        sized-string
        wrap)
+
+
+;;; Function Mappers
+
+(define-syntax define-foreign-function
+  (lambda (x)
+    (syntax-case x (->)
+      ((_ ((foreign-lib name) arg-type ...) -> return-type)
+       (with-syntax ((name-string (datum->syntax x (symbol->string (syntax->datum #'name)))))
+         #'(define name
+            (pointer->procedure return-type
+                                (dynamic-func name-string foreign-lib)
+                                (list arg-type ...))))))))
+
+(export-syntax define-foreign-function)