On Saturday, 22 December 2012 at 22:14:28 UTC, nrgyzer wrote:
is it possible to get a list of all inherited classes from a base class like this:

Yes, though it isn't compile time - gotta be runtime.

ClassInfo[] getChildClasses(ClassInfo c) {
        ClassInfo[] info;

        // MoudleInfo is a magical thing in object.d,
        // implicitly imported, that can loop over all
        // modules in the program: user and library
        foreach(mod; ModuleInfo) {
                // the localClasses member gives back
                // ClassInfo things that we can compare
                foreach(cla; mod.localClasses) {
                        // note: we could also check this
                        // recursively and check
                        // cla.interfaces as well as base
                        if(cla.base is c)
                                info ~= cla;
                }
        }

        return info;
}


So this should be enough for your example assert, but remember you can't do things like templates on this, since it is all runtime.

Reply via email to