Re: Exposing some type details in the introspection XML?
Lawrence D'Oliveiro <ldo-kC51rjc0cqs1dNLGKZg6taU/[email protected]>
| Newsgroups | gmane.comp.freedesktop.dbus |
|---|---|
| Organization | Geek Central |
| Message-ID | <[email protected]> |
On Fri, 15 May 2020 15:43:19 +0200, Lennart Poettering wrote:
> Ah, yeah. Philip is my hero. And I mean:
> a(sa(sa(sa(sgya{sv})a{sv})a(sa(sga{sv})a{sv})a(sgya{sv})a{sv})a{sv}) ←
> that's just so delicious! Just think about how much more awesome this
> signature string could be if there were structures.
ldo@theon:dbussy> python3 -ic "import dbussy"
>>> dbussy.parse_signature("a(sa(sa(sa(sgya{sv})a{sv})a(sa(sga{sv})a{sv})a(sgya{sv})a{sv})a{sv})")
[ArrayType[StructType((BasicType(<TYPE.STRING: 115>), ArrayType[StructType((BasicType(<TYPE.STRING: 115>), ArrayType[StructType((BasicType(<TYPE.STRING: 115>), ArrayType[StructType((BasicType(<TYPE.STRING: 115>), BasicType(<TYPE.SIGNATURE: 103>), BasicType(<TYPE.BYTE: 121>), DictType[BasicType(<TYPE.STRING: 115>) : VariantType()]))], DictType[BasicType(<TYPE.STRING: 115>) : VariantType()]))], ArrayType[StructType((BasicType(<TYPE.STRING: 115>), ArrayType[StructType((BasicType(<TYPE.STRING: 115>), BasicType(<TYPE.SIGNATURE: 103>), DictType[BasicType(<TYPE.STRING: 115>) : VariantType()]))], DictType[BasicType(<TYPE.STRING: 115>) : VariantType()]))], ArrayType[StructType((BasicType(<TYPE.STRING: 115>), BasicType(<TYPE.SIGNATURE: 103>), BasicType(<TYPE.BYTE: 121>), DictType[BasicType(<TYPE.STRING: 115>) : VariantType()]))], DictType[BasicType(<TYPE.STRING: 115>) : VariantType()]))], DictType[BasicType(<TYPE.STRING: 115>) : VariantType()]))]]
Or, with a bit of two-dimensional layout applied:
[
ArrayType
[
StructType
((
BasicType(<TYPE.STRING: 115>),
ArrayType
[
StructType
((
BasicType(<TYPE.STRING: 115>),
ArrayType
[
StructType
((
BasicType(<TYPE.STRING: 115>),
ArrayType
[
StructType
((
BasicType(<TYPE.STRING: 115>),
BasicType(<TYPE.SIGNATURE: 103>),
BasicType(<TYPE.BYTE: 121>),
DictType
[
BasicType(<TYPE.STRING: 115>) :
VariantType()
]
))
],
DictType[BasicType(<TYPE.STRING: 115>) : VariantType()]
))
],
ArrayType
[
StructType
((
BasicType(<TYPE.STRING: 115>),
ArrayType
[
StructType
((
BasicType(<TYPE.STRING: 115>),
BasicType(<TYPE.SIGNATURE: 103>),
DictType[BasicType(<TYPE.STRING: 115>) : VariantType()]
))
],
DictType[BasicType(<TYPE.STRING: 115>) : VariantType()]
))
],
ArrayType
[
StructType
((
BasicType(<TYPE.STRING: 115>),
BasicType(<TYPE.SIGNATURE: 103>),
BasicType(<TYPE.BYTE: 121>),
DictType[BasicType(<TYPE.STRING: 115>) : VariantType()]
))
],
DictType[BasicType(<TYPE.STRING: 115>) : VariantType()]
))
],
DictType[BasicType(<TYPE.STRING: 115>) : VariantType()]
))
]
]
Any better?
_______________________________________________
dbus mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dbus