chiark / gitweb /
Stock item bindings updated to Gtk+ 2.8
[clg] / glib / gtype.lisp
index 9be8ecc1cc8d127bd09614893787fa09b9625592..d05cc35e87b0320e1d38b1efff58024fdae22f0e 100644 (file)
@@ -20,7 +20,7 @@
 ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-;; $Id: gtype.lisp,v 1.45 2006/02/19 19:27:32 espen Exp $
+;; $Id: gtype.lisp,v 1.48 2006/02/26 16:12:25 espen Exp $
 
 (in-package "GLIB")
 
@@ -30,44 +30,44 @@ (use-prefix "g")
 (defbinding type-init () nil)
 (type-init)
 
-(deftype type-number () '(unsigned 32))
+(deftype type-number () 'unsigned-long)
 
 (deftype gtype () 'symbol)
 
-(defmethod alien-type ((type (eql 'gtype)) &rest args)
-  (declare (ignore type args))
+(define-type-method alien-type ((type gtype))
+  (declare (ignore type))
   (alien-type 'type-number))
 
-(defmethod size-of ((type (eql 'gtype)) &rest args)
-  (declare (ignore type args))
+(define-type-method size-of ((type gtype))
+  (declare (ignore type))
   (size-of 'type-number))
 
-(defmethod to-alien-form (gtype (type (eql 'gtype)) &rest args)
-  (declare (ignore type args))
+(define-type-method to-alien-form ((type gtype) gtype)
+  (declare (ignore type))
   `(find-type-number ,gtype t)) 
 
-(defmethod to-alien-function ((type (eql 'gtype)) &rest args)
-  (declare (ignore type args))
+(define-type-method to-alien-function ((type gtype))
+  (declare (ignore type))
   #'(lambda (gtype)
       (find-type-number gtype t)))
 
-(defmethod from-alien-form (type-number (type (eql 'gtype)) &rest args)
-  (declare (ignore type args))
+(define-type-method from-alien-form ((type gtype) type-number)
+  (declare (ignore type))
   `(type-from-number ,type-number)) 
 
-(defmethod from-alien-function ((type (eql 'gtype)) &rest args)
-  (declare (ignore type args))
+(define-type-method from-alien-function ((type gtype))
+  (declare (ignore type))
   #'(lambda (type-number)
       (type-from-number type-number)))
 
-(defmethod writer-function ((type (eql 'gtype)) &rest args)
-  (declare (ignore type args))
+(define-type-method writer-function ((type gtype))
+  (declare (ignore type))
   (let ((writer (writer-function 'type-number)))
     #'(lambda (gtype location &optional (offset 0))
        (funcall writer (find-type-number gtype t) location offset))))
 
-(defmethod reader-function ((type (eql 'gtype)) &rest args)
-  (declare (ignore type args))
+(define-type-method reader-function ((type gtype))
+  (declare (ignore type))
   (let ((reader (reader-function 'type-number)))
     #'(lambda (location &optional (offset 0) weak-p)
        (declare (ignore weak-p))
@@ -197,7 +197,8 @@   (defun %find-types-in-library (pathname prefixes ignore)
       (unwind-protect
          (loop 
           as symbol = (let ((line (read-line (process-output process) nil)))
-                        (when line (subseq line 11)))                    
+                        (when line 
+                          (subseq line (1+ (position #\Space line :from-end t)))))
           while symbol
           when (and
                 (> (length symbol) 9)
@@ -317,8 +318,8 @@              (default-alien-type-name class-name)))
     (when (and
           (supertype type-number) 
           (not (eq (class-name super) (supertype type-number))))
-      (warn "~A is the super type for ~A in the gobject type system."
-       (supertype type-number) class-name)))
+      (warn "Super class mismatch between CLOS and GObject for ~A"
+       class-name)))
   
   (update-size class))
 
@@ -376,22 +377,18 @@ (defmethod invalidate-instance ((instance ginstance))
   ;; A ginstance should never be invalidated since it is ref counted
   nil)
 
-(defmethod callback-from-alien-form (form (type t) &rest args)
-  (apply #'from-alien-form form type args))
-
-(defmethod copy-from-alien-form (location (class ginstance-class) &rest args)
-  (declare (ignore location class args))
+(define-type-method copy-from-alien-form ((type ginstance) location)
+  (declare (ignore location type))
   (error "Doing copy-from-alien on a ref. counted class is most certainly an error, but if it really is what you want you should use REFERENCE-FOREIGN on the returned instance instead."))
 
-(defmethod copy-from-alien-function ((class ginstance-class) &rest args)
-  (declare (ignore class args))  
+(define-type-method copy-from-alien-function ((type ginstance))
+  (declare (ignore type))  
   (error "Doing copy-from-alien on a ref. counted class is most certainly an error, but if it really is what you want you should use REFERENCE-FOREIGN on the returned instance instead."))
 
-(defmethod reader-function ((class ginstance-class) &rest args)
-  (declare (ignore args))
+(define-type-method reader-function ((type ginstance))
   #'(lambda (location &optional (offset 0) weak-p)
       (declare (ignore weak-p))
-      (ensure-proxy-instance class (sap-ref-sap location offset))))
+      (ensure-proxy-instance type (sap-ref-sap location offset))))
 
 
 ;;;; Registering fundamental types