;; 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.16 2004-11-06 21:39:58 espen Exp $
+;; $Id: glib.lisp,v 1.19 2004-11-12 13:27:41 espen Exp $
(in-package "GLIB")
(remhash id *user-data*))
-
;;;; Quarks
(internal *quark-counter* *quark-from-object* *quark-to-object*)
`(make-glist ',element-type ,list)))
(defmethod to-alien-function ((type (eql 'glist)) &rest args)
- (declare (ignore type args))
+ (declare (ignore type))
(destructuring-bind (element-type) args
#'(lambda (list)
(make-glist element-type list))))
`(make-sglist ',element-type ,list)))
(defmethod to-alien-function ((type (eql 'gslist)) &rest args)
- (declare (ignore type args))
+ (declare (ignore type))
(destructuring-bind (element-type) args
#'(lambda (list)
(make-gslist element-type list))))
(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))