This is the mail archive of the
guile-gtk@sources.redhat.com
mailing list for the Guile project.
Re: GError
Andy Wingo <wingo@pobox.com> writes:
> Hi Kevin,
>
> On Mon, 26 May 2003, Kevin Ryde wrote:
>
>> Andy Wingo <wingo@pobox.com> writes:
>> >
>> > With regards to GError, I think the solution you propose is too much
>> > like C programming.
>>
>> Oh, well, if it's nice and close then at least people familiar with
>> the C style will find the guile interface comfortingly similar. Or
>> vice versa even.
>
> I'm not sure that an identical function mapping is really a goal. I am
> programming in scheme because I prefer it to C. In making these
> bindings, the goal has been to make the functionality of the gnome APIs
> available from scheme, not strict API transliteration. I don't think
> throwing exceptions will bother anyone who chooses scheme over C.
>
> A quick search through gnome/defs shows the following occurences of GError:
>
> * Gdk: 7 uses, all regarding file i/o (pixbuf loading and saving,
> mostly)
> * Pango: 1 use, pango_parse_markup
> * GConf: a boatload of uses, for a boatload of reasons: permissions,
> client-server communication, etc etc
> * applets: 1 use, setting something gconf-related
> * libgnome: 4 uses, regarding failure to display help or uris
> * glib: only appears in g_error_*
^^^^^^^
Not really true; there are quite a bunch of uses in glib:
~% grep GError /usr/include/glib-2.0/glib/*.h | wc -l
68
> These are the sorts of things exceptions are made for. Furthermore,
> exposing GError to the programmer leads to nastiness on the scheme side
> of things.
>
> You could implement exceptions by adding 'c-only to the typespec and
> extending g-wrap to ignore, from the scheme side, parameters with
> 'c-only in their typespecs. The scm->c and c->scm ccodegens would still
> be run, however, allowing the error to be initialized and checked.
>
I agree that throwing exceptions instead of using GError is probably
the way to go; especially if you take this into account (from the GLib
manual):
,----
| GLib provides a standard method of reporting errors from a called
| function to the calling code. (This is the same problem solved by
| exceptions in other languages.)
`----
Regards, Andy
--
Andreas Rottmann | Rotty@ICQ | 118634484@ICQ | a.rottmann@gmx.at
http://www.8ung.at/rotty | GnuPG Key: http://www.8ung.at/rotty/gpg.asc
Fingerprint | DFB4 4EB4 78A4 5EEE 6219 F228 F92F CFC5 01FD 5B62
It's GNU/Linux dammit!