diff --git a/ChangeLog b/ChangeLog index 9cd354cef..ecd2fe04c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,12 @@ 2005-03-03 Mike Kestner * gdk/Gdk.metadata : remove unnecessary null_ok rules. - * generator/Ctor.cs : remove NullOk check. - * gnome/Gnome.metadata : remove unnecessary null_ok rules. + * generator/Ctor.cs : don't add null params to CreateNativeObject call + for InterfaceGen or OpaqueGen in addition to ObjectGen. + * generator/Field.cs : simplify Object/Opaque gen. + * generator/Method.cs : remove OpaqueGen special casing. + * generator/OpaqueGen.cs : make FromNative null_ok robust. + * generator/Signal.cs : remove arg marshaling ClassBase special case. * gtk/Gtk.metadata : remove unnecessary null_ok rules. 2005-03-03 Mike Kestner diff --git a/gdk/Gdk.metadata b/gdk/Gdk.metadata index 3cc6fa9d6..364afc800 100644 --- a/gdk/Gdk.metadata +++ b/gdk/Gdk.metadata @@ -25,7 +25,6 @@ 1 PangoHelper 1 - 1 out out 1 @@ -116,7 +115,6 @@ out 1 1 - 1 1 1 1 diff --git a/generator/Ctor.cs b/generator/Ctor.cs index 8e234e23e..159424f4d 100644 --- a/generator/Ctor.cs +++ b/generator/Ctor.cs @@ -124,7 +124,7 @@ namespace GtkSharp.Generation { for (int i = 0; i < names.Count; i++) { Parameter p = Parameters [i]; string indent = "\t\t\t\t"; - if (p.Generatable is ObjectGen) { + if (p.Generatable is ClassBase && !(p.Generatable is StructBase)) { sw.WriteLine (indent + "if (" + p.Name + " != null) {"); indent += "\t"; } @@ -136,7 +136,7 @@ namespace GtkSharp.Generation { else sw.WriteLine ("new GLib.Value (" + values[i] + "));"); - if (p.Generatable is ObjectGen) + if (p.Generatable is ClassBase && !(p.Generatable is StructBase)) sw.WriteLine ("\t\t\t\t}"); } diff --git a/generator/Field.cs b/generator/Field.cs index 1b41e576c..d8b068bde 100644 --- a/generator/Field.cs +++ b/generator/Field.cs @@ -197,10 +197,7 @@ namespace GtkSharp.Generation { if (Access != "private") { sw.WriteLine ("\t\t" + Access + " " + wrapped + " " + wrapped_name + " {"); sw.WriteLine ("\t\t\tget { "); - sw.WriteLine ("\t\t\t\t" + wrapped + " ret = " + table.FromNativeReturn(CType, Name) + ";"); - if (table.IsOpaque (CType)) - sw.WriteLine ("\t\t\t\tif (ret == null) ret = new " + wrapped + "(" + Name + ");"); - sw.WriteLine ("\t\t\t\treturn ret;"); + sw.WriteLine ("\t\t\t\treturn " + table.FromNativeReturn(CType, Name) + ";"); sw.WriteLine ("\t\t\t}"); sw.WriteLine ("\t\t\tset { " + Name + " = " + table.CallByName (CType, "value") + "; }"); diff --git a/generator/Method.cs b/generator/Method.cs index ef0cd1e4a..1c38e3cea 100644 --- a/generator/Method.cs +++ b/generator/Method.cs @@ -327,19 +327,14 @@ namespace GtkSharp.Generation { sw.Write(indent + "\t\t\t"); if (retval.MarshalType == "void") { sw.WriteLine(CName + call + ";"); - } else if (ret_igen is OpaqueGen) { - sw.WriteLine(retval.MarshalType + " raw_ret = " + CName + call + ";"); - sw.WriteLine(indent +"\t\t\t" + retval.CSType + " ret;"); - sw.WriteLine(indent + "\t\t\tif (raw_ret == IntPtr.Zero)"); - sw.WriteLine(indent + "\t\t\t\tret = null;"); - sw.WriteLine(indent + "\t\t\telse"); - sw.WriteLine(indent +"\t\t\t\tret = " + table.FromNativeReturn(retval.CType, "raw_ret" + (retval.Owned ? ", true" : "")) + ";"); } else { sw.WriteLine(retval.MarshalType + " raw_ret = " + CName + call + ";"); sw.Write(indent + "\t\t\t"); string raw_parms = "raw_ret"; if (retval.ElementType != String.Empty) raw_parms += ", typeof (" + retval.ElementType + ")"; + else if (retval.Owned) + raw_parms += ", true"; sw.WriteLine(retval.CSType + " ret = " + table.FromNativeReturn(retval.CType, raw_parms) + ";"); } diff --git a/generator/OpaqueGen.cs b/generator/OpaqueGen.cs index 86027cd52..f6a871436 100644 --- a/generator/OpaqueGen.cs +++ b/generator/OpaqueGen.cs @@ -32,7 +32,7 @@ namespace GtkSharp.Generation { public override string FromNative(string var) { - return "new " + QualifiedName + "(" + var + ")"; + return var + " == IntPtr.Zero ? null : new " + QualifiedName + "(" + var + ")"; } private bool DisableRawCtor { diff --git a/generator/Signal.cs b/generator/Signal.cs index 4e4676ad8..183ffbc05 100644 --- a/generator/Signal.cs +++ b/generator/Signal.cs @@ -209,7 +209,7 @@ namespace GtkSharp.Generation { IGeneratable igen = p.Generatable; if (p.PassAs == "out") finish += "\t\t\targ" + idx + " = " + igen.ToNativeReturn ("((" + p.CSType + ")args.Args[" + (idx - 1) + "])") + ";\n"; - else if ((igen is ClassBase && !(igen is StructBase)) || igen is ManualGen) { + else if (igen is ManualGen) { sw.WriteLine("\t\t\tif (arg{0} == IntPtr.Zero)", idx); sw.WriteLine("\t\t\t\targs.Args[{0}] = null;", idx - 1); sw.WriteLine("\t\t\telse {"); diff --git a/gtk/Gtk.metadata b/gtk/Gtk.metadata index f1a02cfaf..38e6d12b5 100644 --- a/gtk/Gtk.metadata +++ b/gtk/Gtk.metadata @@ -335,7 +335,6 @@ 1 1 TooltipSet - 1 out out model @@ -378,7 +377,6 @@ 1 ActivateRow GetRowExpanded - 1 ScrollAdjustmentsSet 1 1 @@ -407,7 +405,6 @@ out 1 GdkEventMask - 1 1 1 out