On 02/15/2010 01:47 AM, BCS wrote:
How were you doing it that the mixin keyword got in your way? I think
the following should work right now:
version(WithLogging) mixin Logging!(whatever);
--
<IXOYE><
That's actually the reverse of what I was doing. My template looked
something like this (And forgive me if I screw up the syntax...I don't
have the code in front of me):
template Trace(string msg)
{
version (NoLogging)
{
}
else
{
// Write to the log file...
}
}
And then in the code you'd see something like this:
mixin(Trace!("Msg..."));
My reason for this was to not have the user add all the version
statements throughout their code if they want to be able to compile a
version with no logging. In my design, I also have a normal class that
does the logging and the mixins are simply a wrapper around it.
As for why the mixin keyword is in the way, how much would you like
write the above line in your code? That's what I mean by being in the
way. To me, the following code would be more user-friendly:
mixin template Trace(string msg)
{
version (NoLogging)
{
}
else
{
// Write to the log file...
}
}
Trace!("Msg...");
Granted, it's not clear that a mixin is being used where you call Trace,
but I don't think it really matters too much.
Did I make that clear enough?