From f6fb0de5b11117681169f9994b9e050ef1e09e7a Mon Sep 17 00:00:00 2001 From: Daniel Hartwig Date: Sun, 10 Feb 2013 17:18:18 +0800 Subject: [PATCH] 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. --- figl/gl/types.scm | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) 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) -- 2.20.1