Added support for BitFlags
This commit is contained in:
parent
6dca60d5ea
commit
e2d128ccea
2 changed files with 31 additions and 1 deletions
|
@ -49,6 +49,9 @@ template basicDBus(T) {
|
|||
enum basicDBus = true;
|
||||
} else static if(is(T B == enum)) {
|
||||
enum basicDBus = basicDBus!B;
|
||||
} else static if(isInstanceOf!(BitFlags, T)) {
|
||||
alias TemplateArgsOf!T[0] E;
|
||||
enum basicDBus = basicDBus!E;
|
||||
} else {
|
||||
enum basicDBus = false;
|
||||
}
|
||||
|
@ -111,6 +114,9 @@ string typeSig(T)() if(canDBus!T) {
|
|||
return "v";
|
||||
} else static if(is(T B == enum)) {
|
||||
return typeSig!B;
|
||||
} else static if(isInstanceOf!(BitFlags, T)) {
|
||||
alias TemplateArgsOf!T[0] E;
|
||||
return typeSig!E;
|
||||
} 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) {
|
||||
|
@ -179,6 +185,9 @@ unittest {
|
|||
typeSig!E().assertEqual(typeSig!byte());
|
||||
enum U : string { One = "One", Two = "Two" }
|
||||
typeSig!U().assertEqual(typeSig!string());
|
||||
// bit flags
|
||||
enum F : uint { a = 1, b = 2, c = 4 }
|
||||
typeSig!(BitFlags!F)().assertEqual(typeSig!uint());
|
||||
// structs
|
||||
typeSig!(Tuple!(int,string,string)).assertEqual("(iss)");
|
||||
typeSig!(Tuple!(int,string,Variant!int,Tuple!(int,"k",double,"x"))).assertEqual("(isv(id))");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue