quirksAliasTuplealias quirksAliasTuple = AliasSeq!("aggregates", q{Aggregates!thing}, "attributes", q{AliasTuple!(__traits(getAttributes, thing))}, "fields", q{Fields!thing}, "functionAttributes", q{FunctionAttributes!thing}, "isAggregate", q{quirks.type.isAggregate!type}, "isArray", q{quirks.type.isArray!type}, "isAssociativeArray", q{quirks.type.isAssociativeArray!type}, "isBasic", q{quirks.type.isBasic!type}, "isModule", q{quirks.type.isModule!type}, "isNested", q{isNested!type}, "isNumeric", q{quirks.type.isNumeric!type}, "isSomeFunction", q{quirks.type.isSomeFunction!type}, "isSomeString", q{quirks.type.isSomeString!type}, "isStatic", q{quirks.expression.isStatic!type}, "memberNames", q{MemberNames!thing}, "members", q{Members!thing}, "methods", q{Methods!thing}, "parameters", q{Parameters!thing}, "qualifiedName", q{std.traits.fullyQualifiedName!thing}, "returnType", q{std.traits.ReturnType!type}, "simpleType", q{SimpleTypeOf!thing}, q{fieldsFilter(alias predicate)}, q{Fields!(thing, predicate)}, q{getUDAs(alias uda)}, q{std.traits.getUDAs!(thing, uda)}, q{getUDA(alias uda)}, q{getUDAs!uda[0]}, q{hasField(alias predicate)}, q{quirks.aggregate.hasField!(thing, predicate)}, q{hasMember(alias predicate)}, q{quirks.aggregate.hasMember!(thing, predicate)}, q{hasMethod(alias predicate)}, q{quirks.aggregate.hasMethod!(thing, predicate)}, q{hasUDA(alias uda)}, q{std.traits.hasUDA!(thing, uda)}, q{isInstanceOf(alias templ)}, q{quirks.type.isInstanceOf(templ, thing)})
Swiss army knife for getting information about things.
Takes thing and tries to apply a list of functions and templates to it. All that compile can be accessed using property syntax on the resulting alias.
The code for this is generated during compile-time using traits and mixins. Below is a list of properties that are possible to access (note not all will be available for every instantiation):
In addition, the following properties that require a template parameter are also available: