Support for dynamic variants (fix #9)

This commit is contained in:
WebFreak001 2017-04-23 15:19:15 +02:00
parent 408cda19bc
commit 73122deb8c
6 changed files with 378 additions and 10 deletions

View file

@ -52,7 +52,7 @@ template basicDBus(T) {
}
template canDBus(T) {
static if(basicDBus!T) {
static if(basicDBus!T || is(T == DBusAny)) {
enum canDBus = true;
} else static if(isVariant!T) {
enum canDBus = canDBus!(VariantType!T);
@ -101,6 +101,8 @@ string typeSig(T)() if(canDBus!T) {
return "s";
} else static if(isVariant!T) {
return "v";
} else static if(is(T == DBusAny)) {
static assert(false, "Cannot determine type signature of DBusAny. Change to Variant!DBusAny if a variant was desired.");
} else static if(isTuple!T) {
string sig = "(";
foreach(i, S; T.Types) {