change mixins
sybrandy
sybrandy at gmail.com
Tue Feb 16 16:52:18 PST 2010
On 02/15/2010 05:37 PM, Pelle Månsson wrote:
> On 02/15/2010 10:53 PM, sybrandy wrote:
>> In short: I'm using mixins so that the person who's using the library
>> doesn't have to put in version(DoLogging)... all over the place. By
>> containing it in one location, I was trying to keep the code using the
>> library cleaner.
> void trace(string s) {
> version (NoTrace) {
> //do nothing
> } else {
> //do tracing
> }
> }
>
> trace("Stuff");
>
> will this not work?
It will work, however I was going for "if you're not logging, why have
the logging code in there?" Like I said, I was going for performance
and with mixins I could ensure there was no runtime overhead with
instantiating the class, setting up the logger, etc. when the user
turned logging off.
In this version:
template Trace(string msg)
{
version (NoLogging)
{
}
else
{
// Write to the log file...
}
}
If NoLogging is turned on, then no code to perform the logging is even
added to the file. It seemed to me that this was favorable to having a
bunch of empty functions laying around. Now, if DMD was smart enough to
eliminate empty functions, that would be great and I wouldn't have to do
this.
Regardless, I'm still all for moving the "mixin" keyword to the mixin
declaration vs. where it's instantiated.
More information about the Digitalmars-d
mailing list