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

Reply via email to