Author: mkestner
Date: 2005-03-04 11:02:44 -0500 (Fri, 04 Mar 2005)
New Revision: 41446
Modified:
trunk/gtk-sharp/ChangeLog
trunk/gtk-sharp/generator/Method.cs
trunk/gtk-sharp/generator/ReturnValue.cs
Log:
2005-03-04 Mike Kestner <[EMAIL PROTECTED]>
* generator/Method.cs : refactor out some retval logic.
* generator/ReturnValue.cs : add FromNative and IsVoid members.
Modified: trunk/gtk-sharp/ChangeLog
===================================================================
--- trunk/gtk-sharp/ChangeLog 2005-03-04 16:00:33 UTC (rev 41445)
+++ trunk/gtk-sharp/ChangeLog 2005-03-04 16:02:44 UTC (rev 41446)
@@ -1,3 +1,8 @@
+2005-03-04 Mike Kestner <[EMAIL PROTECTED]>
+
+ * generator/Method.cs : refactor out some retval logic.
+ * generator/ReturnValue.cs : add FromNative and IsVoid members.
+
2005-03-03 Mike Kestner <[EMAIL PROTECTED]>
* gdk/Gdk.metadata : remove unnecessary null_ok rules.
Modified: trunk/gtk-sharp/generator/Method.cs
===================================================================
--- trunk/gtk-sharp/generator/Method.cs 2005-03-04 16:00:33 UTC (rev 41445)
+++ trunk/gtk-sharp/generator/Method.cs 2005-03-04 16:02:44 UTC (rev 41446)
@@ -120,8 +120,8 @@
return true;
Parameters parms = Parameters;
- is_get = ((((parms.IsAccessor && retval.CSType ==
"void") || (parms.Count == 0 && retval.CSType != "void")) || (parms.Count == 0
&& retval.CSType != "void")) && Name.Length > 3 && (Name.StartsWith ("Get") ||
Name.StartsWith ("Is") || Name.StartsWith ("Has")));
- is_set = ((parms.IsAccessor || (parms.Count == 1 &&
retval.CSType == "void")) && (Name.Length > 3 && Name.Substring(0, 3) ==
"Set"));
+ is_get = ((((parms.IsAccessor && retval.IsVoid) ||
(parms.Count == 0 && !retval.IsVoid)) || (parms.Count == 0 && !retval.IsVoid))
&& Name.Length > 3 && (Name.StartsWith ("Get") || Name.StartsWith ("Is") ||
Name.StartsWith ("Has")));
+ is_set = ((parms.IsAccessor || (parms.Count == 1 &&
retval.IsVoid)) && (Name.Length > 3 && Name.Substring(0, 3) == "Set"));
call = "(" + (IsStatic ? "" : container_type.CallByName
() + (parms.Count > 0 ? ", " : "")) + Body.GetCallString (is_set) + ")";
@@ -178,7 +178,7 @@
sw.Write("new ");
if (is_get || is_set) {
- if (retval.CSType == "void")
+ if (retval.IsVoid)
sw.Write
(Parameters.AccessorReturnType);
else
sw.Write(retval.CSType);
@@ -321,21 +321,12 @@
Body.InitAccessor (sw, Signature, indent);
Body.Initialize(gen_info, is_get, is_set, indent);
- SymbolTable table = SymbolTable.Table;
- IGeneratable ret_igen = table [retval.CType];
-
sw.Write(indent + "\t\t\t");
- if (retval.MarshalType == "void") {
+ if (retval.IsVoid)
sw.WriteLine(CName + call + ";");
- } else {
+ 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) + ";");
+ sw.WriteLine(indent + "\t\t\t" + retval.CSType
+ " ret = " + retval.FromNative ("raw_ret") + ";");
}
Body.Finish (sw, indent);
@@ -343,7 +334,7 @@
if (is_get && Parameters.Count > 0)
sw.WriteLine (indent + "\t\t\treturn " +
Parameters.AccessorName + ";");
- else if (retval.MarshalType != "void")
+ else if (!retval.IsVoid)
sw.WriteLine (indent + "\t\t\treturn ret;");
else if (IsAccessor)
Body.FinishAccessor (sw, Signature, indent);
@@ -353,7 +344,7 @@
bool IsAccessor {
get {
- return retval.CSType == "void" &&
Signature.IsAccessor;
+ return retval.IsVoid && Signature.IsAccessor;
}
}
}
Modified: trunk/gtk-sharp/generator/ReturnValue.cs
===================================================================
--- trunk/gtk-sharp/generator/ReturnValue.cs 2005-03-04 16:00:33 UTC (rev
41445)
+++ trunk/gtk-sharp/generator/ReturnValue.cs 2005-03-04 16:02:44 UTC (rev
41446)
@@ -57,6 +57,12 @@
}
}
+ public bool IsVoid {
+ get {
+ return CSType == "void";
+ }
+ }
+
public string MarshalType {
get {
return SymbolTable.Table.GetMarshalReturnType
(CType) + (IsArray ? "[]" : String.Empty);
@@ -75,6 +81,15 @@
}
}
+ public string FromNative (string var)
+ {
+ if (Owned)
+ var += ", true";
+ else if (ElementType != String.Empty)
+ var += ", typeof (" + ElementType + ")";
+ return SymbolTable.Table.FromNativeReturn (CType, var);
+ }
+
public bool Validate ()
{
if (MarshalType == "" || CSType == "") {
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches