chiark / gitweb /
List automatically converted to C vectors
authorespen <espen>
Fri, 12 Nov 2004 13:27:41 +0000 (13:27 +0000)
committerespen <espen>
Fri, 12 Nov 2004 13:27:41 +0000 (13:27 +0000)
glib/glib.lisp

index ef402b1678f15374d7cbac1b0b602bcbbb6bb9f8..ae3cda83d83b0add3b3f0a0e46f19f3701b6b62f 100644 (file)
@@ -15,7 +15,7 @@
 ;; License along with this library; if not, write to the Free Software
 ;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-;; $Id: glib.lisp,v 1.18 2004-11-07 16:03:55 espen Exp $
+;; $Id: glib.lisp,v 1.19 2004-11-12 13:27:41 espen Exp $
 
 
 (in-package "GLIB")
@@ -313,11 +313,19 @@ (defun make-c-vector (type length &optional content location)
   (let* ((size-of-type (size-of type))
         (location (or location (allocate-memory (* size-of-type length))))
         (writer (writer-function type)))
-    (loop
-     for element across content
-     for i from 0 below length
-     as offset = 0 then (+ offset size-of-type)
-     do (funcall writer element location offset))
+    (etypecase content
+      (vector
+       (loop
+       for element across content
+       for i from 0 below length
+       as offset = 0 then (+ offset size-of-type)
+       do (funcall writer element location offset)))
+      (list
+       (loop
+       for element in content
+       for i from 0 below length
+       as offset = 0 then (+ offset size-of-type)
+       do (funcall writer element location offset))))
     location))