On 02/16/2010 07:52 PM, sybrandy wrote:
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.
Well, I tried out what you guys suggested and it worked perfectly. I
really don't know why I thought there would still be a little overhead
if I didn't use a mixin. So, thanks for the help.
On a brighter note, at least I learned something new :)