[Gd-chatter] r11404 - branches/opendylan-melange/gtk
hannes at gwydiondylan.org
hannes at gwydiondylan.org
Tue Jun 12 22:26:12 CEST 2007
Author: hannes
Date: Tue Jun 12 22:26:11 2007
New Revision: 11404
Modified:
branches/opendylan-melange/gtk/gtk.dylan
Log:
Job: fd
support for more structs
Modified: branches/opendylan-melange/gtk/gtk.dylan
==============================================================================
--- branches/opendylan-melange/gtk/gtk.dylan (original)
+++ branches/opendylan-melange/gtk/gtk.dylan Tue Jun 12 22:26:11 2007
@@ -293,8 +293,10 @@
let g-type = g-value-type(instance);
if(g-type ~= $G-TYPE-INVALID)
let dylan-type = find-gtype(g-type);
+ let address-thunk = curry(compose(pointer-address, g-value-peek-pointer),
+ instance);
if(dylan-type & subtype?(dylan-type, <GTypeInstance>))
- make(dylan-type, address: instance.g-value-peek-pointer.pointer-address)
+ make(dylan-type, address: address-thunk())
else
select(g-type)
$G-TYPE-NONE => #f;
@@ -307,8 +309,8 @@
$G-TYPE-ULONG => g-value-get-ulong(instance);
$G-TYPE-INT64 => g-value-get-int64(instance);
$G-TYPE-UINT64 => g-value-get-uint64(instance);
- $G-TYPE-ENUM => signal("Can't handle $G-TYPE-ENUM yet.");
- $G-TYPE-FLAGS => signal("Can't handle $G-TYPE-FLAGS yet.");
+ $G-TYPE-ENUM => error("Can't handle $G-TYPE-ENUM yet.");
+ $G-TYPE-FLAGS => error("Can't handle $G-TYPE-FLAGS yet.");
$G-TYPE-FLOAT => g-value-get-float(instance);
$G-TYPE-DOUBLE => g-value-get-double(instance);
$G-TYPE-STRING => g-value-get-string(instance);
@@ -316,7 +318,13 @@
$G-TYPE-BOXED => #f;
$G-TYPE-PARAM => #f;
$G-TYPE-OBJECT => #f;
- gdk-event-get-type() => make-gdk-event(instance.g-value-peek-pointer.pointer-address);
+ gdk-event-get-type()
+ => make-gdk-event(address-thunk());
+ gtk-tree-iter-get-type()
+ => make(<GtkTreeIter>, address: address-thunk());
+ gtk-tree-path-get-type()
+ => make(<GtkTreePath>, address: address-thunk());
+ otherwise => error("Unknown Gtype %=", g-type);
end select;
end if;
end if;
More information about the chatter
mailing list