std.log available for viewing

KennyTM~ kennytm at gmail.com
Mon May 30 10:41:56 PDT 2011


On May 31, 11 00:59, Jose Armando Garcia wrote:
[snip]
>
> Walter, what do you think about adding __MODULE__ to the language? It
> will work similar to __FILE__ and __LINE__ but instead get replaced by
> the name of the module. This would be really useful for std.log's
> verbosity filtering feature.
>
> I can send a pull request once I am familiar with dmd's code.
>
> Thanks,
> -Jose

I'd recommend making __MODULE__ return the actual module object instead 
of the module name, in case anybody wants to implement it. The latter 
can be easily got by __MODULE__.stringof[7..$] or parsing 
std.traits.mangledName!__MODULE__ if you need the fully-qualified name, 
but the reverse is not true.

Moreover, making __MODULE__ a true module object allows a global scope 
be passed around implicitly, e.g. currently you need to write

     int f(int x) { return x*x-2; }
     void main() {
       auto m = map!((y){ return f(y)+1; })([1,6,8]);
       //            ^^^^^^^^^^^^^^^^^^^^^ ugly

but with __MODULE__ it is possible to reduce the syntactic noise:

       auto m = map!"f(a)+1"([1,6,8]);

by declaring std.functional.unaryFun as

     template unaryFun(alias f, ....., alias mod=__MODULE__) {
        ...
        with (mod) {
          mixin(f);
        }
        ...


More information about the Digitalmars-d mailing list