Rob Browning writes:
>
> Robert and I have been trying to figure out how to handle glib
> container types (like GList, GSList, GArray, GHashTable, etc.) cleanly
> from g-wrap. Last time I thought hard about this, I thought I wanted
> to teach g-wrap how to handle these things directly, but I've since
> changed my opinion to be closer to what (I think) Robert was
> suggesting.
>
> Consider the function
>
> GArray* frob_accounts(GList *accounts);
>
> Conceivably you might want to be able to call this from the scheme side
> by passing it a GList* pointer-token, or a regular scheme list of
> Account* pointer-tokens. Likewise, sometimes you might just want it
> to return a GArray* pointer-token, and sometimes you might want a
> scheme array.
>
> Because of the variety of possible desires, and because we don't want
> to have to have a bunch of different functions on the scheme side call
> the same C side function but with different parameter/return value
> semantics, I now agree with Robert (presuming that I'm recalling his
> argument correctly) that we should just go the "helper conversion
> function" route.
Yep, that makes sense.
However, one minor concern, particularly if you want to wrap parts of
glib itself. A lot of those functions are access functions that take
a pointer to a glib container and return a void * (a gpointer,
actually) that is a pointer to an entry in the container.
Can we pass the returned gpointer to functions that take, say,
Account *?
------------------------------------------------------------
Robert Merkel [EMAIL PROTECTED]
------------------------------------------------------------
_______________________________________________
gnucash-devel mailing list
[EMAIL PROTECTED]
http://www.gnumatic.com/cgi-bin/mailman/listinfo/gnucash-devel