From: Daniel Hartwig Date: Sun, 10 Feb 2013 09:18:18 +0000 (+0800) Subject: array parameters also accept pointers X-Git-Url: http://git.hcoop.net/clinton/guile-figl.git/commitdiff_plain/f6fb0de5b11117681169f9994b9e050ef1e09e7a array parameters also accept pointers * figl/gl/types.scm (coerce-array-pointer): Renamed from array->pointer. Also accept pointers, and perhaps typed-arrays in the future. Removed excess lambda. --- diff --git a/figl/gl/types.scm b/figl/gl/types.scm index 1d14450..4ba5ff1 100644 --- a/figl/gl/types.scm +++ b/figl/gl/types.scm @@ -109,17 +109,23 @@ (define-simple-foreign-type void-* '*) (define-simple-foreign-type const-GLvoid-* '*) -(define (array->pointer x) - (lambda (x) - (if x - (ffi:bytevector->pointer x) - ffi:%null-pointer))) +(define (coerce-array-pointer x) + (cond + ((ffi:pointer? x) + x) + ((bytevector? x) + (ffi:bytevector->pointer x)) + ;; TODO: (typed-array? x element-type) + ((not x) + ffi:%null-pointer) + (else + (error "unhandled array-pointer type" x)))) (define-syntax define-array-foreign-type (syntax-rules () ((_ name element-type) (define-foreign-type name '* - array->pointer + coerce-array-pointer (lambda (x) x))))) (define-array-foreign-type GLboolean-* GLboolean)