On Mon, Sep 1, 2008 at 7:33 AM, Johan Dahlin <[EMAIL PROTECTED]> wrote:

> BJörn Lindqvist wrote:
>
>> 2008/6/2 Johan Dahlin <[EMAIL PROTECTED]>:
>>
>>> An alternative here is make a clean break, eg only use this in new
>>> language bindings and make the typelib/GIR define the API.
>>>
>>> For Python I plan to;
>>> * Convert PyGTK .defs to .xml, still keep them locally
>>> * Find out the changes between the .gir in gir-repository/upstream and
>>>  apply fixes/patches on top of them
>>> * Write a new module, eg pybank which interacts with the typelibs only
>>>
>>> That means that the old cruft we collected in PyGTK will only
>>> be cruft there and not upstream. For future modules we'll use the
>>> more 'dynamic' bindings as available in pybank.
>>>
>>
>> About the xml format... What is the advantage of having the c library
>> meta data stored in xml format instead of s-expressions? The .defs
>> files used for Python bindings are very succinct in comparison to the
>> ugly .xml files GIR brings to the table. Writing and updating
>> s-expressions is much easier than xml.
>>
>
> There were a couple of reasons to switching to xml over s-expressions.
> The primary one is that XML is more popular, most modern languages
> have parsers builtin which will make it easier to write tools upon it.
> Other reasons includes that xml is more flexible.
>
> The GIR XML is meant to be processed & modified by tools, not human beings.
>

The VAPI format from the Vala project is a nice human-writeable format that
should soon be convertable to GIR (currently can be converted to GIDL).

Example:
public class Gtk.Label : Gtk.Misc {
  public void get(out text);
  ...
}


>
>  And presumably, you would still have to hand-write large parts of the
>> bindings using something analogous to PyGTK's overrides. I can't think
>> of any automagic that would turn this C function:
>>
>>  void gtk_label_get (GtkLabel *label, char **text);
>>
>
> We solve that by adding annotations in the gtk-doc comment.
> The specific case you mentioned will have something like this:
>
> /**
>  * gtk_label_get
>  * @label: the label
>  * @text: (out): the text of the label
>  */
>
> Which will in turn be create the following XML snippet:
> <parameter name="text" direction="out">
>  <type name="string"/>
> </parameter>
>
> The idea is to annotate most of the available API so almost the complete
> bindings can done without manually overriding parts.
>
> Johan
>
> _______________________________________________
> gtk-devel-list mailing list
> gtk-devel-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-devel-list
>
_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list

Reply via email to