anchor.diff:  ;; 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.28 2005-04-17 21:44:27 espen Exp $
  +;; $Id: glib.lisp,v 1.29 2005-04-18 10:34:51 espen Exp $
   
   
   (in-package "GLIB")
  
positive.code: 	(error "Can't use vector of variable size as return type")
        `(map-c-vector 'vector #'identity ,c-vector ',element-type ',length))))
  
  (defmethod cleanup-form (location (type (eql 'vector)) &rest args)
    (declare (ignore type))
    (destructuring-bind (element-type &optional (length '*)) args
  
negative.code: 
  (defmethod size-of ((type (eql 'null-terminated-vector)) &rest args)
    (declare (ignore type args))
    (size-of 'pointer))
  
  (defmethod to-alien-form (vector (type (eql 'null-terminated-vector)) &rest args)
    (declare (ignore type))
    (destructuring-bind (element-type) args
      `(make-0-vector ',element-type ,vector)))
  
  (defmethod from-alien-form (c-vector (type (eql 'null-terminated-vector)) &rest args)
    (declare (ignore type))
    (destructuring-bind (element-type) args
      `(let ((c-vector ,c-vector))
         (prog1
  	   (map-0-vector 'vector #'identity c-vector ',element-type)
  	 (destroy-0-vector c-vector ',element-type)))))
  
  (defmethod copy-from-alien-form (c-vector (type (eql 'null-terminated-vector)) &rest args)
    (declare (ignore type))
    (destructuring-bind (element-type) args
      `(map-0-vector 'vector #'identity ,c-vector ',element-type)))
  
  (defmethod cleanup-form (location (type (eql 'null-terminated-vector)) &rest args)
    (declare (ignore type))
    (destructuring-bind (element-type) args
      `(destroy-0-vector ,location ',element-type)))
  
  (defmethod writer-function ((type (eql 'null-terminated-vector)) &rest args)
    (declare (ignore type))
  