+2008-11-10 Owen Taylor <otaylor@redhat.com>
+
+ Remove field offsets from g-ir-generate output and test inputs
+
+ Field offsets are a) architecture dependent so they shouldn't be part
+ of the architecture-independent gir format which is installed in
+ datadir. b) Are architecture-dependent so they shouldn't be in test
+ expected output.
+
+ * girepository/girparser.c: Don't parse offset for fields
+ * tools/generate.c: Don't parse offset for fields
+ * tests/*.gir test/scanner/*.tgir: Remove offsets
+
+ (Virtual function and discriminator offsets are not removed, as they
+ aren't fully hooked up to the field-offset computation machinery yet.)
+
2008-11-10 Owen Taylor <otaylor@redhat.com>
Bug 560252 - Compute field offsets before writing typelib
writable = find_attribute ("writable", attribute_names, attribute_values);
bits = find_attribute ("bits", attribute_names, attribute_values);
branch = find_attribute ("branch", attribute_names, attribute_values);
- offset = find_attribute ("offset", attribute_names, attribute_values);
if (name == NULL)
{
else
field->bits = 0;
- if (offset)
- field->offset = atoi (offset);
- else
- field->offset = 0;
-
switch (ctx->current_node->type)
{
case G_IR_NODE_OBJECT:
xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
<namespace name="Foo" version="1.0">
<glib:boxed glib:name="BoxedType1" glib:type-name="boxed1" glib:get-type="boxed1_get_type" deprecated="1">
- <field name="field1" writable="1" offset="0">
+ <field name="field1" writable="1">
<type name="uint32"/>
</field>
- <field name="field2" writable="1" offset="4">
+ <field name="field2" writable="1">
<type name="uint32"/>
</field>
- <field name="field3" writable="1" offset="8">
+ <field name="field3" writable="1">
<type name="uint32"/>
</field>
<method name="frob_boxed1" c:identifier="frob_boxed1">
</parameters>
</callback>
<class name="Object" parent="GObject.Object" glib:type-name="AnnotationObject" glib:get-type="annotation_object_get_type">
- <field name="parent_instance" offset="0">
+ <field name="parent_instance">
<type name="GObject.Object"/>
</field>
<method name="method" c:identifier="annotation_object_method">
</method>
</class>
<record name="ObjectClass">
- <field name="parent_class" offset="0">
+ <field name="parent_class">
<type name="GObject.ObjectClass"/>
</field>
</record>
<include name="GLib" version="2.0"/>
<namespace name="drawable" version="1.0" shared-library="drawable">
<class name="TestDrawable" parent="GObject.Object" abstract="1" glib:type-name="TestDrawable" glib:get-type="test_drawable_get_type">
- <field name="parent_instance" offset="0">
+ <field name="parent_instance">
<type name="GObject.Object"/>
</field>
<method name="do_foo" c:identifier="test_drawable_do_foo">
</method>
</class>
<record name="TestDrawableClass">
- <field name="parent_class" offset="0">
+ <field name="parent_class">
<type name="GObject.ObjectClass"/>
</field>
</record>
<record name="TestPixmapObjectClass">
- <field name="parent_class" offset="0">
+ <field name="parent_class">
<type name="TestDrawableClass"/>
</field>
</record>
<include name="GLib" version="2.0"/>
<namespace name="drawable" version="1.0" shared-library="drawable">
<class name="TestDrawable" parent="GObject.Object" abstract="1" glib:type-name="TestDrawable" glib:get-type="test_drawable_get_type">
- <field name="parent_instance" offset="0">
+ <field name="parent_instance">
<type name="GObject.Object"/>
</field>
<method name="do_foo" c:identifier="test_drawable_do_foo">
</method>
</class>
<record name="TestDrawableClass">
- <field name="parent_class" offset="0">
+ <field name="parent_class">
<type name="GObject.ObjectClass"/>
</field>
</record>
<record name="TestPixmapObjectClass">
- <field name="parent_class" offset="0">
+ <field name="parent_class">
<type name="TestDrawableClass"/>
</field>
</record>
<namespace name="foo" version="1.0" shared-library="foo">
<interface name="Interface" glib:type-name="FooInterface" glib:get-type="foo_interface_get_type"/>
<record name="InterfaceIface">
- <field name="parent_iface" offset="0">
+ <field name="parent_iface">
<type name="GObject.TypeInterface"/>
</field>
</record>
<class name="Object" parent="GObject.Object" glib:type-name="FooObject" glib:get-type="foo_object_get_type">
<implements name="Interface"/>
- <field name="parent_instance" offset="0">
+ <field name="parent_instance">
<type name="GObject.Object"/>
</field>
<constructor name="new" c:identifier="foo_object_new">
</glib:signal>
</class>
<record name="ObjectClass">
- <field name="parent_class" offset="0">
+ <field name="parent_class">
<type name="GObject.ObjectClass"/>
</field>
</record>
<class name="Subobject" parent="Object" abstract="1" glib:type-name="FooSubobject" glib:get-type="foo_subobject_get_type">
<implements name="Interface"/>
- <field name="parent_instance" offset="0">
+ <field name="parent_instance">
<type name="GObject.Object"/>
</field>
<constructor name="new" c:identifier="foo_subobject_new">
</constructor>
</class>
<record name="SubobjectClass">
- <field name="parent_class" offset="0">
+ <field name="parent_class">
<type name="GObject.ObjectClass"/>
</field>
</record>
</parameters>
</callback>
<record name="Struct">
- <field name="priv" writable="1" offset="0">
+ <field name="priv" writable="1">
<type name="StructPrivate"/>
</field>
- <field name="member" writable="1" offset="0">
+ <field name="member" writable="1">
<type name="int"/>
</field>
</record>
<record name="StructPrivate"/>
<record name="Rectangle">
- <field name="x" writable="1" offset="0">
+ <field name="x" writable="1">
<type name="int"/>
</field>
- <field name="y" writable="1" offset="0">
+ <field name="y" writable="1">
<type name="int"/>
</field>
- <field name="width" writable="1" offset="0">
+ <field name="width" writable="1">
<type name="int"/>
</field>
- <field name="height" writable="1" offset="0">
+ <field name="height" writable="1">
<type name="int"/>
</field>
</record>
</parameters>
</function>
<record name="EventAny">
- <field name="send_event" writable="1" offset="0">
+ <field name="send_event" writable="1">
<type name="int8"/>
</field>
</record>
<record name="EventExpose">
- <field name="send_event" writable="1" offset="0">
+ <field name="send_event" writable="1">
<type name="int8"/>
</field>
- <field name="count" writable="1" offset="0">
+ <field name="count" writable="1">
<type name="int"/>
</field>
</record>
<union name="Event">
- <field name="type" writable="1" offset="0">
+ <field name="type" writable="1">
<type name="int"/>
</field>
- <field name="any" writable="1" offset="0">
+ <field name="any" writable="1">
<type name="EventAny"/>
</field>
- <field name="expose" writable="1" offset="0">
+ <field name="expose" writable="1">
<type name="EventExpose"/>
</field>
</union>
<record name="BRect" glib:type-name="FooBRect" glib:get-type="foo_brect_get_type">
- <field name="x" writable="1" offset="0">
+ <field name="x" writable="1">
<type name="double"/>
</field>
- <field name="y" writable="1" offset="0">
+ <field name="y" writable="1">
<type name="double"/>
</field>
<constructor name="new" c:identifier="foo_brect_new">
</method>
</record>
<union name="BUnion" type-name="FooBUnion" get-type="foo_bunion_get_type">
- <field name="type" writable="1" offset="0">
+ <field name="type" writable="1">
<type name="int"/>
</field>
- <field name="v" writable="1" offset="0">
+ <field name="v" writable="1">
<type name="double"/>
</field>
- <field name="rect" writable="1" offset="0">
+ <field name="rect" writable="1">
<type name="BRect"/>
</field>
<constructor name="new" c:identifier="foo_bunion_new">
</method>
</union>
<union name="Union">
- <field name="foo" writable="1" offset="0">
+ <field name="foo" writable="1">
<type name="int"/>
</field>
</union>
<include name="GLib" version="2.0"/>
<namespace name="utility" version="1.0" shared-library="utility">
<class name="Object" parent="GObject.Object" glib:type-name="UtilityObject" glib:get-type="utility_object_get_type">
- <field name="parent_instance" offset="0">
+ <field name="parent_instance">
<type name="GObject.Object"/>
</field>
</class>
<record name="ObjectClass">
- <field name="parent_class" offset="0">
+ <field name="parent_class">
<type name="GObject.ObjectClass"/>
</field>
</record>
<member name="c" value="2"/>
</enumeration>
<record name="Struct">
- <field name="field" writable="1" offset="0">
+ <field name="field" writable="1">
<type name="int"/>
</field>
- <field name="bitfield1" writable="1" offset="0">
+ <field name="bitfield1" writable="1">
<type name="uint"/>
</field>
- <field name="bitfield2" writable="1" offset="0">
+ <field name="bitfield2" writable="1">
<type name="uint"/>
</field>
- <field name="data" writable="1" offset="0">
+ <field name="data" writable="1">
<array fixed-size="16">
<type name="uint8"/>
</array>
</field>
</record>
<union name="Union">
- <field name="pointer" writable="1" offset="0">
+ <field name="pointer" writable="1">
<type name="utf8"/>
</field>
- <field name="integer" writable="1" offset="0">
+ <field name="integer" writable="1">
<type name="long"/>
</field>
- <field name="real" writable="1" offset="0">
+ <field name="real" writable="1">
<type name="double"/>
</field>
</union>
xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
<namespace name="Foo" version="1.0">
<record name="FooStruct">
- <field name="foo_int" writable="1" offset="0">
+ <field name="foo_int" writable="1">
<type name="int"/>
</field>
- <field name="foo_int64" writable="1" offset="4">
+ <field name="foo_int64" writable="1">
<type name="int64"/>
</field>
- <field name="foo_uint" writable="1" offset="12">
+ <field name="foo_uint" writable="1">
<type name="uint"/>
</field>
- <field name="foo_uint64" writable="1" offset="16">
+ <field name="foo_uint64" writable="1">
<type name="uint64"/>
</field>
- <field name="string" writable="1" offset="24">
+ <field name="string" writable="1">
<type name="utf8"/>
</field>
</record>
<record name="FooStruct2">
- <field name="sub" writable="1" offset="0">
+ <field name="sub" writable="1">
<type name="FooStruct"/>
</field>
- <field name="string" writable="1" offset="24">
+ <field name="string" writable="1">
<type name="utf8"/>
</field>
</record>
<namespace name="Foo" version="1.0">
<union name="union1" type-name="UnionType1" get-type="union1_get_type">
<discriminator offset="-4" type="gint" />
- <field name="field1" readable="1" writable="1" offset="0" type="guint32" branch="0" />
- <field name="field1" readable="1" writable="1" offset="0" type="gdouble" branch="1" />
+ <field name="field1" readable="1" writable="1" type="guint32" branch="0" />
+ <field name="field1" readable="1" writable="1" type="gdouble" branch="1" />
</union>
<union name="union2" type-name="UnionType1" get-type="union1_get_type">
- <field name="field1" readable="1" writable="1" offset="0" type="guint32" />
- <field name="field1" readable="1" writable="1" offset="0" type="gdouble" />
+ <field name="field1" readable="1" writable="1" type="guint32" />
+ <field name="field1" readable="1" writable="1" type="gdouble" />
</union>
</namespace>
</repository>
if (size)
xml_printf (file, " bits=\"%d\"", size);
- xml_printf (file, " offset=\"%d\"", offset);
-
type = g_field_info_get_type (info);
if (branch)