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