Reply to Hoenir,
Denis Koroskin schrieb:
One note is that you should probably pass the object by reference:
void log(T)(ref T obj) { ... } // D1
void log(T)(ref const(T) obj) { ... } // D2
Good idea. btw ref'ing a class has no effect, has it?
ref object would allow you to alter what the passed in argument is:
void Fn(ref object o) { o = null; }
object o = new Bah!();
Fn(o);
assert(o is null);
Actually discovered a flaw, if you e.g. pass an array of structs to
it, dmd complains about the struct not having a toString() member.
So it needs to be recursive somehow.
I have a partial solution here: http://www.dsource.org/projects/scrapple/browser/trunk/log_api/LogAPI.d
Feel free to steal whatever you want from it. If you are really adventures
and want to, I can get you SVN access and you can dump stuff back into that.