diff --git a/ChangeLog b/ChangeLog index 15e4681cf..9077050ee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-06-08 Mike Kestner <mkestner@novell.com> + + * generator/ReturnValue.cs : improved list to array marshaling. + * glib/Marshaller.cs : added ListToArray (). + * gnomevfs/Gnomevfs.metadata : mark element_type on + Mime.GetAllApplications. [Fixes #71888] + 2005-06-06 Mike Kestner <mkestner@novell.com> * generator/ImportSignature.cs : fix native delegate namespacing hack. diff --git a/doc/en/GLib/Marshaller.xml b/doc/en/GLib/Marshaller.xml index 0150adfd3..410b04ddc 100644 --- a/doc/en/GLib/Marshaller.xml +++ b/doc/en/GLib/Marshaller.xml @@ -299,5 +299,23 @@ <remarks /> </Docs> </Member> + <Member MemberName="ListToArray"> + <MemberSignature Language="C#" Value="public static Array ListToArray (GLib.ListBase list, Type type);" /> + <MemberType>Method</MemberType> + <ReturnValue> + <ReturnType>System.Array</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="list" Type="GLib.ListBase" /> + <Parameter Name="type" Type="System.Type" /> + </Parameters> + <Docs> + <param name="list">The list to be marshaled.</param> + <param name="type">The type of the list elements.</param> + <summary>Marshals a native list to a typed array.</summary> + <returns>An array of <paramref name="type" />.</returns> + <remarks /> + </Docs> + </Member> </Members> </Type> diff --git a/doc/en/Gnome.Vfs/Mime.xml b/doc/en/Gnome.Vfs/Mime.xml index e96b6fca7..cacff63c9 100644 --- a/doc/en/Gnome.Vfs/Mime.xml +++ b/doc/en/Gnome.Vfs/Mime.xml @@ -231,22 +231,7 @@ <remarks>To be added.</remarks> </Docs> </Member> - <Member MemberName="GetAllApplications"> - <MemberSignature Language="C#" Value="public static GLib.List GetAllApplications (string mime_type);" /> - <MemberType>Method</MemberType> - <ReturnValue> - <ReturnType>GLib.List</ReturnType> - </ReturnValue> - <Parameters> - <Parameter Name="mime_type" Type="System.String" /> - </Parameters> - <Docs> - <param name="mime_type">To be added.</param> - <summary>To be added.</summary> - <returns>To be added.</returns> - <remarks>To be added.</remarks> - </Docs> - </Member> + <Member MemberName="SetRegisteredTypeKey"> <MemberSignature Language="C#" Value="public static Gnome.Vfs.Result SetRegisteredTypeKey (string mime_type, string key, string data);" /> <MemberType>Method</MemberType> @@ -915,9 +900,25 @@ <remarks>To be added.</remarks> </Docs> </Member> + <Member MemberName="GetAllApplications"> + <MemberSignature Language="C#" Value="public static Gnome.Vfs.MimeApplication[] GetAllApplications (string mime_type);" /> + <MemberType>Method</MemberType> + <ReturnValue> + <ReturnType>Gnome.Vfs.MimeApplication[]</ReturnType> + </ReturnValue> + <Parameters> + <Parameter Name="mime_type" Type="System.String" /> + </Parameters> + <Docs> + <param name="mime_type">A mime type to query, for example 'text/plain'.</param> + <summary>Gets all the applications registered for a MIME type.</summary> + <returns>an array of <see cref="T:Gnome.Vfs.MimeApplication" />.</returns> + <remarks /> + </Docs> + </Member> </Members> <Docs> - <summary>To be added.</summary> - <remarks>To be added.</remarks> + <summary>Mime related static methods.</summary> + <remarks /> </Docs> </Type> diff --git a/doc/en/Gnome/CanvasPathDef.xml b/doc/en/Gnome/CanvasPathDef.xml index ea569681a..70e459172 100644 --- a/doc/en/Gnome/CanvasPathDef.xml +++ b/doc/en/Gnome/CanvasPathDef.xml @@ -160,19 +160,7 @@ <remarks>To be added</remarks> </Docs> </Member> - <Member MemberName="Split"> - <MemberSignature Language="C#" Value="public GLib.SList Split ();" /> - <MemberType>Method</MemberType> - <ReturnValue> - <ReturnType>GLib.SList</ReturnType> - </ReturnValue> - <Parameters /> - <Docs> - <summary>To be added</summary> - <returns>To be added: an object of type 'GLib.SList'</returns> - <remarks>To be added</remarks> - </Docs> - </Member> + <Member MemberName="Ref"> <MemberSignature Language="C#" Value="public void Ref ();" /> <MemberType>Method</MemberType> @@ -520,5 +508,18 @@ <remarks>To be added</remarks> </Docs> </Member> + <Member MemberName="Split"> + <MemberSignature Language="C#" Value="public Gnome.CanvasPathDef[] Split ();" /> + <MemberType>Method</MemberType> + <ReturnValue> + <ReturnType>Gnome.CanvasPathDef[]</ReturnType> + </ReturnValue> + <Parameters /> + <Docs> + <summary>To be added.</summary> + <returns>To be added.</returns> + <remarks>To be added.</remarks> + </Docs> + </Member> </Members> </Type> diff --git a/generator/ReturnValue.cs b/generator/ReturnValue.cs index 7f0db32e0..4a05c7642 100644 --- a/generator/ReturnValue.cs +++ b/generator/ReturnValue.cs @@ -43,6 +43,10 @@ namespace GtkSharp.Generation { get { if (IGen == null) return String.Empty; + + if (ElementType != String.Empty) + return ElementType + "[]"; + return IGen.QualifiedName + (IsArray ? "[]" : String.Empty); } } @@ -102,8 +106,10 @@ namespace GtkSharp.Generation { return String.Empty; if (Owned) var += ", true"; - else if (ElementType != String.Empty) - var += ", typeof (" + ElementType + ")"; + else if (ElementType != String.Empty) { + string type_str = "typeof (" + ElementType + ")"; + return String.Format ("({0}[]) GLib.Marshaller.ListToArray ({1}, {2});", ElementType, IGen.FromNativeReturn (var + ", " + type_str), type_str); + } return IGen.FromNativeReturn (var); } @@ -113,6 +119,7 @@ namespace GtkSharp.Generation { Console.Write("rettype: " + CType); return false; } + return true; } } diff --git a/glib/Marshaller.cs b/glib/Marshaller.cs index f45eb3aec..e8dc9b0c8 100644 --- a/glib/Marshaller.cs +++ b/glib/Marshaller.cs @@ -278,6 +278,13 @@ namespace GLib { Marshal.StructureToPtr (o, result, false); return result; } + + public static Array ListToArray (ListBase list, System.Type type) + { + Array result = Array.CreateInstance (type, list.Count); + list.CopyTo (result, 0); + return result; + } } } diff --git a/gnomevfs/Gnomevfs.metadata b/gnomevfs/Gnomevfs.metadata index 7fe09df6c..1f2b9490d 100644 --- a/gnomevfs/Gnomevfs.metadata +++ b/gnomevfs/Gnomevfs.metadata @@ -16,6 +16,7 @@ <remove-node path="/api/namespace/callback[@cname='GnomeVFSXferProgressCallback']" /> <remove-node path="/api/namespace/class[@cname='GnomeVfsAsync_']" /> <remove-node path="/api/namespace/class[@cname='GnomeVfsDirectory_']" /> + <attr path="/api/namespace/class[@cname='GnomeVfsMime_']/method[@name='GetAllApplications']/return-type" name="element_type">Gnome.Vfs.MimeApplication</attr> <remove-node path="/api/namespace/class[@cname='GnomeVfsMonitor_']" /> <remove-node path="/api/namespace/class[@cname='GnomeVfsXfer_']" /> <attr path="/api/namespace/enum[@cname='GnomeVFSDirectoryVisitOptions']" name="hidden">1</attr>