From 6072350f1e9b171829ea428db01b2d347993f1c1 Mon Sep 17 00:00:00 2001 From: Mike Kestner Date: Thu, 18 Nov 2004 22:19:31 +0000 Subject: [PATCH] 2004-11-18 Mike Kestner * generator/*Gen.cs : add ToNativeReturnType to deal with the g_free string nonsense in the virtual method case. svn path=/trunk/gtk-sharp/; revision=36289 --- ChangeLog | 5 +++++ generator/ByRefGen.cs | 8 ++++++++ generator/CallbackGen.cs | 7 +++++++ generator/ClassBase.cs | 7 +++++++ generator/CustomMarshalerGen.cs | 7 +++++++ generator/EnumGen.cs | 8 ++++++++ generator/GStringGen.cs | 6 ++++++ generator/IGeneratable.cs | 2 ++ generator/ManualGen.cs | 8 ++++++++ generator/SimpleGen.cs | 7 +++++++ generator/StringGen.cs | 8 ++++++++ generator/StructBase.cs | 7 +++++++ generator/SymbolTable.cs | 10 ++++++++++ generator/TimeTGen.cs | 8 ++++++++ 14 files changed, 98 insertions(+) diff --git a/ChangeLog b/ChangeLog index 16946dd06..d7d027ee9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-11-18 Mike Kestner + + * generator/*Gen.cs : add ToNativeReturnType to deal with + the g_free string nonsense in the virtual method case. + 2004-11-18 Mike Kestner * generator/AliasGen.cs : make this a SimpleGen. diff --git a/generator/ByRefGen.cs b/generator/ByRefGen.cs index bb5b12a5e..a50266d7b 100644 --- a/generator/ByRefGen.cs +++ b/generator/ByRefGen.cs @@ -67,6 +67,7 @@ namespace GtkSharp.Generation { return "ref " + QualifiedName; } } + public virtual string MarshalReturnType { get { @@ -74,6 +75,13 @@ namespace GtkSharp.Generation { } } + public virtual string ToNativeReturnType { + get + { + return QualifiedName; + } + } + public string CallByName (string var_name) { return "ref " + var_name; diff --git a/generator/CallbackGen.cs b/generator/CallbackGen.cs index 73c4e1b82..9bfe02fc2 100644 --- a/generator/CallbackGen.cs +++ b/generator/CallbackGen.cs @@ -53,6 +53,13 @@ namespace GtkSharp.Generation { } } + public string ToNativeReturnType { + get + { + return MarshalType; + } + } + public string CallByName (string var_name) { return var_name + ".NativeDelegate"; diff --git a/generator/ClassBase.cs b/generator/ClassBase.cs index 19432789a..32c686f82 100644 --- a/generator/ClassBase.cs +++ b/generator/ClassBase.cs @@ -165,6 +165,13 @@ namespace GtkSharp.Generation { } } + public virtual string ToNativeReturnType { + get + { + return "IntPtr"; + } + } + public virtual string CallByName (string var_name) { return var_name + ".Handle"; diff --git a/generator/CustomMarshalerGen.cs b/generator/CustomMarshalerGen.cs index 3df0c6216..d45f5f958 100644 --- a/generator/CustomMarshalerGen.cs +++ b/generator/CustomMarshalerGen.cs @@ -59,12 +59,19 @@ namespace GtkSharp.Generation { return "[MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(" + marshaler + "))] " + type; } } + public virtual string MarshalReturnType { get { return "[return:MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(" + marshaler + "))]"; } } + public virtual string ToNativeReturnType { + get { + return "[return:MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(" + marshaler + "))]"; + } + } + public string CallByName (string var_name) { return var_name; diff --git a/generator/EnumGen.cs b/generator/EnumGen.cs index 18f3afcef..82b487585 100644 --- a/generator/EnumGen.cs +++ b/generator/EnumGen.cs @@ -35,6 +35,7 @@ namespace GtkSharp.Generation { return "int"; } } + public string MarshalReturnType { get { @@ -42,6 +43,13 @@ namespace GtkSharp.Generation { } } + public string ToNativeReturnType { + get + { + return MarshalType; + } + } + public string CallByName (string var_name) { return "(int) " + var_name; diff --git a/generator/GStringGen.cs b/generator/GStringGen.cs index 669f9e81d..9a6efc95c 100644 --- a/generator/GStringGen.cs +++ b/generator/GStringGen.cs @@ -75,6 +75,12 @@ namespace GtkSharp.Generation { } } + public string ToNativeReturnType { + get { + return "IntPtr"; + } + } + public void Generate () { } diff --git a/generator/IGeneratable.cs b/generator/IGeneratable.cs index a692fd335..4b9c540bb 100644 --- a/generator/IGeneratable.cs +++ b/generator/IGeneratable.cs @@ -29,6 +29,8 @@ namespace GtkSharp.Generation { string MarshalReturnType {get;} + string ToNativeReturnType {get;} + string Name {get;} string QualifiedName {get;} diff --git a/generator/ManualGen.cs b/generator/ManualGen.cs index 45ded4399..be59c06af 100644 --- a/generator/ManualGen.cs +++ b/generator/ManualGen.cs @@ -71,6 +71,7 @@ namespace GtkSharp.Generation { return "IntPtr"; } } + public string MarshalReturnType { get { @@ -78,6 +79,13 @@ namespace GtkSharp.Generation { } } + public string ToNativeReturnType { + get + { + return "IntPtr"; + } + } + public string CallByName (string var_name) { return var_name + "." + handle; diff --git a/generator/SimpleGen.cs b/generator/SimpleGen.cs index 1ede7e95f..0ab73c7e1 100644 --- a/generator/SimpleGen.cs +++ b/generator/SimpleGen.cs @@ -68,6 +68,13 @@ namespace GtkSharp.Generation { } } + public virtual string ToNativeReturnType { + get + { + return type; + } + } + public string CallByName (string var_name) { return var_name; diff --git a/generator/StringGen.cs b/generator/StringGen.cs index e6e987665..3354c4713 100644 --- a/generator/StringGen.cs +++ b/generator/StringGen.cs @@ -1,8 +1,10 @@ // GtkSharp.Generation.StringGen.cs - The String type Generatable. // // Author: Rachel Hestilow +// Mike Kestner // // Copyright (c) 2003 Rachel Hestilow +// Copyright (c) 2004 Novell, Inc. // // This program is free software; you can redistribute it and/or // modify it under the terms of version 2 of the GNU General Public @@ -29,6 +31,12 @@ namespace GtkSharp.Generation { { } + public override string ToNativeReturnType { + get { + return "IntPtr"; + } + } + public override string FromNativeReturn(String var) { return "GLib.Marshaller.PtrToStringGFree(" + var + ")"; diff --git a/generator/StructBase.cs b/generator/StructBase.cs index f50f62262..d3bed785d 100644 --- a/generator/StructBase.cs +++ b/generator/StructBase.cs @@ -69,6 +69,13 @@ namespace GtkSharp.Generation { } } + public override string ToNativeReturnType { + get + { + return QualifiedName; + } + } + public override string CallByName (string var_name) { return "ref " + var_name; diff --git a/generator/SymbolTable.cs b/generator/SymbolTable.cs index 5f4a3f534..e2d729c19 100644 --- a/generator/SymbolTable.cs +++ b/generator/SymbolTable.cs @@ -101,6 +101,8 @@ namespace GtkSharp.Generation { AddType (new SimpleGen ("GArray", "IntPtr")); AddType (new SimpleGen ("GByteArray", "IntPtr")); AddType (new SimpleGen ("GData", "IntPtr")); + AddType (new SimpleGen ("GDestroyNotify", "IntPtr")); + AddType (new SimpleGen ("GIOChannel", "IntPtr")); AddType (new SimpleGen ("GTypeModule", "GLib.Object")); AddType (new SimpleGen ("GHashTable", "System.IntPtr")); AddType (new SimpleGen ("va_list", "IntPtr")); @@ -220,6 +222,14 @@ namespace GtkSharp.Generation { return gen.MarshalReturnType; } + public string GetToNativeReturnType(string c_type) + { + IGeneratable gen = this[c_type]; + if (gen == null) + return ""; + return gen.ToNativeReturnType; + } + public string GetMarshalType(string c_type) { IGeneratable gen = this[c_type]; diff --git a/generator/TimeTGen.cs b/generator/TimeTGen.cs index ba2a30fa2..62495bf1b 100644 --- a/generator/TimeTGen.cs +++ b/generator/TimeTGen.cs @@ -57,6 +57,7 @@ namespace GtkSharp.Generation { return "IntPtr"; } } + public string MarshalReturnType { get { @@ -64,6 +65,13 @@ namespace GtkSharp.Generation { } } + public string ToNativeReturnType { + get + { + return "IntPtr"; + } + } + public string CallByName (string var_name) { return "GLib.Marshaller.DateTimeTotime_t (" + var_name + ")";