Re: Cooperating on .defs API specifications

Andreas Rottmann <[email protected]>
Newsgroups gmane.comp.gnome.language-bindings
Message-ID <[email protected]>
James Henstridge <[email protected]> writes:

> On 31/03/2004 3:52 AM, Andreas Rottmann wrote:
>
>>Why not have .defs files, and generate the binary info from them? The
>>.defs files are already there, and they contain more information than
>>the headers do (well, comment parsing might change that, but you could
>>create comments from the .defs files :)). Just an idea...
>>
> For simple cases, the defs files contain enough information.  For the
> more complex cases, they lack some information that would be needed
> for full introspection.  Some examples are:
>
>     * what types do (GList *) arguments and return values hold?  How
>       should a binding release a (GList *) return value? (in various
>       parts of GTK and Gnome, the answer is "free all members then the
>       list", "free the list" and "do nothing")
>
In guile-gobject, we use "Glist*-of-FOO" and caller-owns-return to
solve this (well the return value problem only partially). Examples:

(define-method set_popdown_strings
  (of-object "GtkCombo")
  (c-name "gtk_combo_set_popdown_strings")
  (return-type "none")
  (parameters
    '("GList*-of-gchar*" "strings")
  )
)

(define-method copy
  (of-object "GtkIconSet")
  (c-name "gtk_icon_set_copy")
  (return-type "GtkIconSet*")
  (caller-owns-return #t)
)

>     * Some functions take an array and a length arguments.  It would be
>       good to link these together (for most languages, we should be able
>       to omit the length arguments, since their list/array types know
>       their length).
>
Indeed. We could "invent" a new parameter type to describe this.

>     * Is an (int *) argument an array of ints being passed in, an array
>       of ints that will be modified (inout), or a pointer to a single
>       int being used as an out argument?
>
One could add specifiers to those value's type strings,
e.g. int*-in-out.

Andy
-- 
Andreas Rottmann         | Rotty@ICQ      | 118634484@ICQ | [email protected]
http://yi.org/rotty      | GnuPG Key: http://yi.org/rotty/gpg.asc
Fingerprint              | DFB4 4EB4 78A4 5EEE 6219  F228 F92F CFC5 01FD 5B62

Latein ist das humanoide Äquivalent zu Fortran.
   -- Alexander Bartolich in at.linux
_______________________________________________
language-bindings mailing list  [email protected]
http://mail.gnome.org/mailman/listinfo/language-bindings
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.