[patch] generate marshallers and metadata from dbus-glib-tool
Havoc Pennington
hp at redhat.com
Tue Nov 9 22:22:35 PST 2004
On Tue, 2004-11-09 at 20:59 -0500, Colin Walters wrote:
> To be a bit more precise, the distinction is ownership of the memory,
> not dynamic/static allocation. One approach would be to just always
> assume the marshallers own the string, but that would kind of suck if
> you were were exporting say a text widget with a GetBuffer method, that
> would normally return a const pointer to a potentially very large
> buffer.
I think we should have the consistent convention that out params have to
be freed by the caller. Just seems simpler as a start. I suppose GObject
introspection framework, whatever it is, will surely support
"const char* foo_get_name()" type of stuff though.
> On the other hand - DBusMessage already copies everything you
> stick in to it (something I think we should not do as an option for byte
> [] at least, but that's another issue).
Two options:
- add _unswapped() variants to the getters, and then either
message_get_byte_order() or message_has_native_byte_order()
- always return by const reference; if you call a getter
on a field/arg where byte order matters, and the message is in the
wrong byte order, swap the *entire* message in place and then
return the const ref. i.e. byteswap lazily.
There are possible odd side effects of this, since reading would
involve writing.
Havoc
More information about the dbus
mailing list