how many types would a 'g' type type if a 'g' type would GType?

Robert McQueen robert.mcqueen at collabora.co.uk
Sat Sep 23 17:26:59 PDT 2006


Havoc Pennington wrote:
> It is used for the signature header, so it is a multiple-type signature
> there.

Right.

> However, I think it isn't allowed to have multiple types when
> it's the signature of a variant. Don't remember for sure.

Well, a variant can only contain one type. Does this mean we could
assume/enforce that inside a message (but not in the signature header)
that 'g' is a single complete type?

> If so, it
> sounds like for your usage you can just assume the signature of a
> variant has only one type in it.

No I'm not sending the 'g' type alongside the 'v', it's for something
like this:

GetParameters () -> a{sg}
SetParameters (a{sv})

So the list of parameters is tells you what the type wants to be when
you set that parameter.

> For the glib bindings generically perhaps you could just marshal as a
> GType if only one type, and as an array of GType otherwise, and app
> authors can just handle both cases?

Mrrgh. Not really at the moment. Currently when *demarshalling* any
message off the bus, the GTypes you get are decided based on a fixed
mapping of the D-Bus type of the incoming stuff, rather than the type
that the app is expecting. If there's a mismatch between the decided
type and expected type, the demarshalling fails. And yes, this is a
fundamental flaw which we intend to fix.

> Havoc

Regards,
Rob

-- 
Robert McQueen
Director, Collabora Ltd.


More information about the dbus mailing list