[Gtk-sharp-list] gapi not including correct function signature?

Mike Kestner mkestner at gmail.com
Sun Aug 15 11:52:13 EDT 2010

On Sun, 2010-08-15 at 11:03 -0400, Alex Launi wrote:

> but the generated code looks like this. Shouldn't the IntPtr separator
> param be a char type?
> [DllImport("libglib-2.0.dll")]
> static extern void g_key_file_set_list_separator(IntPtr raw, IntPtr
> separator);
> public string ListSeparator { 
>         set {
>                  g_key_file_set_list_separator(Handle,
> GLib.Marshaller.StringToPtrGStrdup(value));
>         }
> }
> Should I just write the method myself in the .custom file, or is there
> a fixup I can do for this? It looks like it should be fine.

Turning it into a char implies it can accept utf16 chars.  It looks like
this C API only supports ascii separator chars, which is unusual for
glib APIs.  Probably 99% of the gchar API in gtk+ is utf8 strings, and
the other 1% is filename encoded strings.

Binding it manually in a custom is likely an easier solution than
supporting generation of gchar alongside gchar*, especially considering
the fact that accurately binding a gchar param probably requires
additional information.

My suggestion in this scenario would be to use "byte separator" for the
pinvoke parameter and use "(byte) value" to cast down a char value.

Another solution might be to change the separator element's type attr to
guint8 with metadata.  That would get you a generated "byte" API which
the user can use by casting down their own char values, and it would be
obvious at a glance that utf16 isn't supported.

More information about the Gtk-sharp-list mailing list