diff --git a/ChangeLog b/ChangeLog index 421408009..73b4c83c3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2002-09-07 Rachel Hestilow + + * parser/gapi2xml.pl: Add support for "fake struct" opaque types. + * generator/StructBase.cs: Generate wrapper fields for opaque + fields as well as pointer fields. + * api/gdk-symbols.xml: Remove GdkAtom as it is now wrapped. + 2002-09-05 Gonzalo Paniagua Javier * sample/DbClient/client.cs: updated to make it compile. diff --git a/api/gdk-api.xml b/api/gdk-api.xml index 1293928fd..3af9ca56d 100644 --- a/api/gdk-api.xml +++ b/api/gdk-api.xml @@ -2343,6 +2343,18 @@ + + + + + + + + + + + + diff --git a/api/gdk-symbols.xml b/api/gdk-symbols.xml index 350feeb23..26f31eae2 100644 --- a/api/gdk-symbols.xml +++ b/api/gdk-symbols.xml @@ -1,6 +1,5 @@ - diff --git a/generator/StructBase.cs b/generator/StructBase.cs index 7f41a3f35..f6ff864b3 100644 --- a/generator/StructBase.cs +++ b/generator/StructBase.cs @@ -115,7 +115,7 @@ namespace GtkSharp.Generation { type = SymbolTable.GetCSType (c_type); if (IsBit (field)) { type = "uint"; - } else if (IsPointer (field) && type != "string") { + } else if ((IsPointer (field) || SymbolTable.IsOpaque (c_type)) && type != "string") { type = "IntPtr"; name = "_"; } else if (SymbolTable.IsCallback (c_type)) { diff --git a/parser/gapi2xml.pl b/parser/gapi2xml.pl index 492f557ec..919093f32 100755 --- a/parser/gapi2xml.pl +++ b/parser/gapi2xml.pl @@ -348,6 +348,15 @@ foreach $key (sort (keys (%types))) { } } +# really, _really_ opaque structs that aren't even defined in sources. Lovely. +foreach $key (sort (keys (%ptrs))) { + next if $ptrs{$key} !~ /struct\s+(\w+)/; + $type = $1; + $struct_el = addNameElem ($ns_elem, 'struct', $key, $ns); + $struct_el->setAttribute('opaque', 'true'); + $elem_table{lc($key)} = $struct_el; +} + addFuncElems(); # This should probably be done in a more generic way