From: Dmitry Kalyanov Date: Sun, 4 Oct 2009 10:33:58 +0000 (+0400) Subject: Safer way to compile GObject property accessors that works with lisps other than... X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=947eba0276f398fa92a42efdc988fa6caa209dc4;p=cl-gtk2.git Safer way to compile GObject property accessors that works with lisps other than SBCL with linkage table --- diff --git a/glib/gobject.meta.lisp b/glib/gobject.meta.lisp old mode 100644 new mode 100755 index d7cb8c7..55a48ab --- a/glib/gobject.meta.lisp +++ b/glib/gobject.meta.lisp @@ -153,19 +153,31 @@ (gobject-fn-effective-slot-definition-g-getter-fn effective-slot) (and property-getter (if (stringp property-getter) - (compile nil `(lambda (object) - (foreign-funcall ,property-getter - g-object object - ,property-type))) + (if (foreign-symbol-pointer property-getter) + (compile nil `(lambda (object) + (foreign-funcall ,property-getter + g-object object + ,property-type))) + (progn + (warn "Property reader function '~A' has not been found" property-getter) + (lambda (object) + (declare (ignore object)) + (error "Property reader function '~A' has not been found" property-getter)))) property-getter)) (gobject-fn-effective-slot-definition-g-setter-fn effective-slot) (and property-setter (if (stringp property-setter) - (compile nil `(lambda (object new-value) - (foreign-funcall ,property-setter - g-object object - ,property-type new-value - :void))) + (if (foreign-symbol-pointer property-setter) + (compile nil `(lambda (object new-value) + (foreign-funcall ,property-setter + g-object object + ,property-type new-value + :void))) + (progn + (warn "Property writer function '~A' has not been found" property-setter) + (lambda (object) + (declare (ignore object)) + (error "Property writer function '~A' has not been found" property-setter)))) property-setter))))))) effective-slot))