diff --git a/ChangeLog b/ChangeLog index ad980919a..e8b03c490 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2002-02-10 Mike Kestner + + * generator/BoxedGen.cs (FromNative): Add explicit cast. + * generator/ObjectGen.cs (FromNative): Add explicit cast. + (GenSignal): New. Partial. Not hooked in yet. + * generator/StructBase.cs (GenMethod): return-type is a sub-element, + not an attribute. + 2002-02-09 Mike Kestner * generator/StructBase.cs (GenMethod): Add handle arg to paramless diff --git a/generator/BoxedGen.cs b/generator/BoxedGen.cs index a39057ebe..1bdf30111 100644 --- a/generator/BoxedGen.cs +++ b/generator/BoxedGen.cs @@ -28,7 +28,7 @@ namespace GtkSharp.Generation { public String FromNative(String var) { - return "GLib.Boxed.GetBoxed(" + var + ")"; + return "(" + QualifiedName + ") GtkSharp.Boxed.GetBoxed(" + var + ")"; } public void Generate (SymbolTable table) diff --git a/generator/ObjectGen.cs b/generator/ObjectGen.cs index b69f5accd..9fa94d7da 100644 --- a/generator/ObjectGen.cs +++ b/generator/ObjectGen.cs @@ -29,7 +29,7 @@ namespace GtkSharp.Generation { public String FromNative(String var) { - return "GLib.Object.GetObject(" + var + ")"; + return "(" + QualifiedName + ") GLib.Object.GetObject(" + var + ")"; } public void Generate (SymbolTable table) @@ -185,7 +185,38 @@ namespace GtkSharp.Generation { return true; } - + + public bool GenSignal (XmlElement sig, SymbolTable table, StreamWriter sw) + { + String cname = "\"" + sig.GetAttribute("cname") + "\""; + + String marsh = "blah"; // SignalHandler.GetName(sig); + if (marsh == "") { + return false; + } + + sw.WriteLine("\t\t/// " + cname + " Event "); + sw.WriteLine("\t\t/// "); + // FIXME: Generate some signal docs + sw.WriteLine("\t\t/// "); + sw.WriteLine(); + sw.WriteLine("\t\tpublic event EventHandler " + cname + " {"); + sw.WriteLine("\t\t\tadd {"); + sw.WriteLine("\t\t\t\tif (Events [" + cname + "] == null)"); + sw.Write("\t\t\t\t\tSignals[" + cname + "] = new " + marsh); + sw.WriteLine("(this, Handle, " + cname + ", value);"); + sw.WriteLine("\t\t\t\tEvents.AddHandler(" + cname + ", value);"); + sw.WriteLine("\t\t\t}"); + sw.WriteLine("\t\t\tremove {"); + sw.WriteLine("\t\t\t\tEvents.RemoveHandler(" + cname + ", value);"); + sw.WriteLine("\t\t\t\tif (Events[" + cname + "] == null)"); + sw.WriteLine("\t\t\t\t\tSignals.Remove(" + cname + ");"); + sw.WriteLine("\t\t\t}"); + sw.WriteLine("\t\t}"); + sw.WriteLine(); + + return true; + } } } diff --git a/generator/StructBase.cs b/generator/StructBase.cs index f7f54a71f..825bd7f0c 100644 --- a/generator/StructBase.cs +++ b/generator/StructBase.cs @@ -144,11 +144,14 @@ namespace GtkSharp.Generation { return false; } - String rettype = "void"; - if (method.HasAttribute("return-type")) { - rettype = method.GetAttribute("return-type"); + XmlElement ret_elem = method["return-type"]; + if (ret_elem == null) { + Console.Write("Missing return type in method "); + return false; } + String rettype = ret_elem.GetAttribute("type"); + String m_ret = table.GetMarshalType(rettype); String s_ret = table.GetCSType(rettype); if (m_ret == "" || s_ret == "") {