July 04, 2005
I'd like to know if it is possible to get a pointer to the ModuleInfo object of the current module. I am asking because i want to do something like this:


#### library module ####
module some.library;

template LibraryMixin()
{
  void func(char[] str)
  {
    someOtherFunc(str, currentModule.name); // HERE
  }
}
####

#### program module ####
module my.program;
mixin LibraryMixin!();

int main(char[][] args)
{
  func("Hello, world.");
  return 0;
}
####


The line marked with “HERE” calls someOtherFunc(), and it should pass the name of the current module to it. As the function belongs to a mixin that is inserted into module my.program, that should be "my.program" or something similar, but *not* "some.library".

I could of course solve that with something like this:

####
module some.library;
template LibraryMixin(alias moduleName)
  // use the moduleName...
####
module my.program;
char[] modName = __FILE__;
mixin LibraryMixin!(modName);
####

But that requires this extra line i'd really like to avoid if possible, to make the use of some.library as simple to the user as possible.

Thanks & ciao
uwe