Re: One more defs user
Andreas Rottmann <[email protected]>
| Newsgroups | gmane.comp.gnome.language-bindings |
|---|---|
| Message-ID | <[email protected]> |
Daniel Silva <[email protected]> writes: > Hello, > > I'm currently writing GTK bindings by hand (to bring GTK into PLT > Scheme) > Cool! > and would rather use the .defs files. > > However, they seem to be missing some information. > I assume you talk about the .defs shipped by GTK+. To my knowledge, most binding projects maintain their own set of .defs files, with hand-added extensions. Here at guile-gnome, we add things such as default values and GList types. I really invite you to collaborate with guile-gnome in maintaing the .defs files; they are available from the defs--dev--0 branch of the guile-gnome archive at http://download.gna.org/guile-gnome/archive-2004. > For example, gtk_list_store_insert takes a GtkListStore input pointer > and a GtkTreeIter output pointer, but gtk.defs and gtk-types.defs > don't mention that the second pointer is just for output (a return > value). > [...] We don't currently handle output pointers in guile-gnome yet, but G-Wrap, the underlying wrapper generator does, so this will be added soonish, and is partly in place without editing the .defs file by so-called type rules, for instance in glib-spec.scm, we have: [...] (add-type-rule! ws '(("gint*" "*")) '(int out)) This means: gint* arguments of any name ("*") should be treated as integer output arguments. I think such rules are flexible enough to handle most or all output arguments that occur in GNOME, but indeed explicitly noting this in the .defs as you suggest would be good. > The other part missing right now is computed parameters. For example, > in gtk_drag_dest_set: > [...] > targets is actually an array and n_targets is its length. Neither > bits are specified. Right now I write: > > (defgtk gtk_drag_dest_set > (_fun _GtkWidgetPtr > _GtkDestDefaults > (targets : (_list i _GtkTargetEntry)) > (_int = (length targets)) > _GdkDragAction > -> _void)) > > and it would be nice if gtk.specs said something like: > > (define-method drag_dest_set > (of-object "GtkWidget") > (c-name "gtk_drag_dest_set") > (return-type "none") > (parameters > '("GtkDestDefaults" "flags") > '("const-GtkTargetEntry*" "targets" list) > '("gint" "n_targets" (auto (length "targets"))) > '("GdkDragAction" "actions") > ) > ) > > I don't think any of the additions would break existing tools, > considering the first and second elements of the type&name lists stay > the same. > We could use such annotations in guile-gnome, too, but again I intended to solve this via "type rules" (array/int support is not yet implemented, however). Regards, 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 Python is executable pseudocode, Perl is executable line-noise. _______________________________________________ language-bindings mailing list [email protected] http://mail.gnome.org/mailman/listinfo/language-bindings