]> git.jsancho.org Git - guile-assimp.git/commitdiff
Use bytevectors instead structs when passing pointers to arrays
authorJavier Sancho <jsf@jsancho.org>
Wed, 30 Jul 2014 11:34:38 +0000 (13:34 +0200)
committerJavier Sancho <jsf@jsancho.org>
Wed, 30 Jul 2014 11:34:38 +0000 (13:34 +0200)
of numbers to the assimp C library.

* src/assimp.scm: Replace make-c-struct calls with bytevector->pointer

src/assimp.scm

index fcb9492fd1750e32e59ca704e232d7b1badbac16..3925805182696dd50b332eb9d20c9e4c6f4f217a 100644 (file)
        (pkey (string->pointer (car color-type)))
        (type (cadr color-type))
        (index (caddr color-type))
-       (pout (make-c-struct (make-list max float) '(0)))
-       (pmax (make-c-struct (list unsigned-int) (list max))))
+       (pout (bytevector->pointer (list->f32vector (make-list max 0))))
+       (pmax (bytevector->pointer (list->u32vector (list max)))))
     (let ((res (aiGetMaterialFloatArray pmat pkey type index pout pmax)))
       (if (< res 0)
          res
-         (parse-c-struct pout (make-list max float))))))
+         (f32vector->list (pointer->bytevector pout max 0 'f32))))))
 
 (define-public (ai-get-material-integer-array mat color-type max)
   (let ((pmat (unwrap-ai-material mat))
        (pkey (string->pointer (car color-type)))
        (type (cadr color-type))
        (index (caddr color-type))
-       (pout (make-c-struct (make-list max int) '(0)))
-       (pmax (make-c-struct (list unsigned-int) (list max))))
+       (pout (bytevector->pointer (list->s32vector (make-list max 0))))
+       (pmax (bytevector->pointer (list->u32vector (list max)))))
     (let ((res (aiGetMaterialIntegerArray pmat pkey type index pout pmax)))
       (if (< res 0)
          res
-         (parse-c-struct pout (make-list max int))))))
+         (s32vector->list (pointer->bytevector pout max 0 's32))))))
 
 
 ;;; Faces