Re: Finding all the interfaces and their inheritance relationships at runtime
On Monday, 3 July 2017 at 22:34:51 UTC, FoxyBrown wrote: On Monday, 3 July 2017 at 20:45:19 UTC, bauss wrote: On Monday, 3 July 2017 at 13:54:42 UTC, Jean-Louis Leroy wrote: I know how to find all the classes: foreach (mod; ModuleInfo) { foreach (c; mod.localClasses) { // use c.base to construct inheritance graph } } Can I do the same with all the interfaces? Looking at object.d gives no clue... Is there a reason you need to do it with runtime and can't use __traits? He didn't say *with* runtime but *at*. Changes the whole meaning ;) It's OK I found how to achieve what I want. I'll enumerate the classes an dfrom there work my way down via ClassInfo.interfaces. It turns out that Interface.classinfocontains the interface's inherited interfaces; the 'classinfo' name is a bit misleading though...
Re: Finding all the interfaces and their inheritance relationships at runtime
On Monday, 3 July 2017 at 20:45:19 UTC, bauss wrote: On Monday, 3 July 2017 at 13:54:42 UTC, Jean-Louis Leroy wrote: I know how to find all the classes: foreach (mod; ModuleInfo) { foreach (c; mod.localClasses) { // use c.base to construct inheritance graph } } Can I do the same with all the interfaces? Looking at object.d gives no clue... Is there a reason you need to do it with runtime and can't use __traits? He didn't say *with* runtime but *at*. Changes the whole meaning ;)
Re: Finding all the interfaces and their inheritance relationships at runtime
On Monday, 3 July 2017 at 13:54:42 UTC, Jean-Louis Leroy wrote: I know how to find all the classes: foreach (mod; ModuleInfo) { foreach (c; mod.localClasses) { // use c.base to construct inheritance graph } } Can I do the same with all the interfaces? Looking at object.d gives no clue... Is there a reason you need to do it with runtime and can't use __traits?
Finding all the interfaces and their inheritance relationships at runtime
I know how to find all the classes: foreach (mod; ModuleInfo) { foreach (c; mod.localClasses) { // use c.base to construct inheritance graph } } Can I do the same with all the interfaces? Looking at object.d gives no clue...