getting all children classes in program
jklp via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Jan 3 10:41:00 PST 2015
Off Topic ! But in the same way:
-------
static string[] IDs;
ptrdiff_t getClassID(ClassType, ClassBase)()
if ((is(ClassType == class)) && (is(ClassBase == class)))
{
import std.algorithm;
if (!is(ClassType : ClassBase))
return -1;
else {
auto classTypeString = ClassType.stringof;
ptrdiff_t result = countUntil(IDs, classTypeString);
if (result == -1) {
IDs ~= classTypeString;
result = IDs.length -1;
}
return result;
}
}
void main(string[] args)
{
class Oops {}
class A : Oops{}
class B : Oops{}
class C : Oops{}
class D : Oops{}
class E {}
assert(getClassID!(A,Oops) == 0);
assert(getClassID!(B,Oops) == 1);
assert(getClassID!(C,Oops) == 2);
assert(getClassID!(D,Oops) == 3);
assert(getClassID!(C,Oops) == 2);
assert(getClassID!(B,Oops) == 1);
assert(getClassID!(A,Oops) == 0);
assert(getClassID!(E,Oops) == -1);
}
-------
More information about the Digitalmars-d-learn
mailing list