From 399c8e8586bc5649e57e67f1f53a98cefec5eb8e Mon Sep 17 00:00:00 2001 From: Mike Kestner Date: Thu, 1 May 2008 15:04:17 +0000 Subject: [PATCH] 2008-05-01 Mike Kestner * generator/InterfaceGen.cs: use CName and mangle it. ClassFieldName is not guaranteed to be set now. * generator/Signal.cs: read ClassFieldName from the api xml. Move glue writer lookup inside the block to avoid exceptions for now. svn path=/trunk/gtk-sharp/; revision=102276 --- ChangeLog | 7 +++++++ generator/InterfaceGen.cs | 2 +- generator/Signal.cs | 9 +++++---- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 441dfcfc0..74ad49120 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-05-01 Mike Kestner + + * generator/InterfaceGen.cs: use CName and mangle it. ClassFieldName + is not guaranteed to be set now. + * generator/Signal.cs: read ClassFieldName from the api xml. Move + glue writer lookup inside the block to avoid exceptions for now. + 2008-04-30 Mike Kestner * generator/InterfaceGen.cs: diff --git a/generator/InterfaceGen.cs b/generator/InterfaceGen.cs index c5f9dea29..e898dd97b 100644 --- a/generator/InterfaceGen.cs +++ b/generator/InterfaceGen.cs @@ -106,7 +106,7 @@ namespace GtkSharp.Generation { foreach (object member in members) { if (member is Signal) { Signal sig = member as Signal; - sw.WriteLine ("\t\t\tpublic IntPtr {0};", sig.ClassFieldName); + sw.WriteLine ("\t\t\tpublic IntPtr {0};", sig.CName.Replace ("\"", "").Replace ("-", "_")); } else if (member is VirtualMethod) { VirtualMethod vm = member as VirtualMethod; bool has_target = methods [vm.Name] != null; diff --git a/generator/Signal.cs b/generator/Signal.cs index be4b2f8eb..1491e817f 100644 --- a/generator/Signal.cs +++ b/generator/Signal.cs @@ -123,9 +123,9 @@ namespace GtkSharp.Generation { } } - public string ClassFieldName { + string ClassFieldName { get { - return elem.GetAttribute("cname").Replace ("-", "_"); + return elem.HasAttribute ("field_name") ? elem.GetAttribute("field_name") : String.Empty; } } @@ -282,15 +282,16 @@ namespace GtkSharp.Generation { private void GenDefaultHandlerDelegate (GenerationInfo gen_info, ClassBase implementor) { StreamWriter sw = gen_info.Writer; - StreamWriter glue = gen_info.GlueWriter; + StreamWriter glue; bool use_glue = false; - //bool use_glue = glue != null && implementor == null; + //bool use_glue = glue != null && implementor == null && ClassFieldName.Length > 0; string glue_name = String.Empty; ManagedCallString call = new ManagedCallString (parms); sw.WriteLine ("\t\t[GLib.CDeclCallback]"); sw.WriteLine ("\t\tdelegate " + retval.ToNativeType + " " + Name + "VMDelegate (" + parms.ImportSignature + ");\n"); if (use_glue) { + glue = gen_info.GlueWriter; glue_name = String.Format ("{0}sharp_{1}_{2}", container_type.NS.ToLower ().Replace (".", "_"), container_type.Name.ToLower (), ClassFieldName); sw.WriteLine ("\t\t[DllImport (\"{0}\")]", gen_info.GluelibName); sw.WriteLine ("\t\tstatic extern void {0} (IntPtr gtype, {1}VMDelegate cb);\n", glue_name, Name);