The MiniObject.CreateNativeObject method does not and can't have parameters
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 2 Jun 2009 10:39:07 +0000 (12:39 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 2 Jun 2009 10:39:07 +0000 (12:39 +0200)
generator/Ctor.cs

index e4ef118..9284ed4 100644 (file)
@@ -32,6 +32,7 @@ namespace GtkSharp.Generation {
                private bool preferred;\r
                private string name;\r
                private bool needs_chaining = false;\r
+               private bool mini_object = false;
 \r
                public Ctor (XmlElement elem, ClassBase implementor) : base (elem, implementor) \r
                {\r
@@ -40,6 +41,7 @@ namespace GtkSharp.Generation {
                        if (implementor is ObjectGen || implementor is MiniObjectGen)\r
                                needs_chaining = true;\r
                        name = implementor.Name;\r
+                       mini_object = implementor is MiniObjectGen;
                }\r
 \r
                public bool Preferred {\r
@@ -110,9 +112,14 @@ namespace GtkSharp.Generation {
                                        sw.WriteLine ("\t\t\tif (GetType () != typeof (" + name + ")) {");\r
                                        \r
                                        if (Parameters.Count == 0) {\r
-                                               sw.WriteLine ("\t\t\t\tCreateNativeObject (new string [0], new GLib.Value[0]);");\r
+                                               if (mini_object)
+                                                 sw.WriteLine ("\t\t\t\tCreateNativeObject ();");\r
+                                               else
+                                                 sw.WriteLine ("\t\t\t\tCreateNativeObject (new string [0], new GLib.Value[0]);");\r
                                                sw.WriteLine ("\t\t\t\treturn;");\r
                                        } else {\r
+                                               if (mini_object)
+                                                       throw new Exception ("MiniObject subclasses can't have ctors with parameters");
                                                ArrayList names = new ArrayList ();\r
                                                ArrayList values = new ArrayList ();\r
                                                for (int i = 0; i < Parameters.Count; i++) {\r