static init cycle detection problem
Simen Kjaeraas
simen.kjaras at gmail.com
Wed Sep 19 13:56:56 PDT 2012
On Wed, 19 Sep 2012 22:25:46 +0200, Øivind <oivind.loe at gmail.com> wrote:
> I am struggeling to get around the cycle detection kicking in when I
> have static init in modules that depend on eachother.
>
> I have seen some threads on 'fixes' for this, e.g. adding a @standalone
> property to the module or similar. Has there been any progress on this?
>
> If not would it be possible in e.g. main() to get a list of all
> compiled-in modules, and then iterate over them and call an init
> function where it exists? As long as there is a way to list the name of
> the modules at compile-time, this should be pretty easy..?
There's no way to get that list at compile-time, because object files may
be added at link-time. However, D has a ModuleInfo object, which contains
information on all modules in the program:
import std.stdio;
void main( ) {
foreach( m; ModuleInfo ) {
writeln( m.name );
}
}
For details on how this object works, have a look-see at
src/druntime/src/object_.d in your DMD installation folder.
I'm not sure what you're asking for is possible even given this object,
but it's probably the closest you'll (easily) get.
--
Simen
More information about the Digitalmars-d-learn
mailing list