First off, I would like to thank everyone for the discussion back in the Debugging post
Here is the abbreviated overview of what I created:
Fine grained modularity
Multiple levels of debugging may coexist. The developer may have everything
controlled from the global scope, all the way down to each debug macro having
its own separate state. (Though, doing the latter would probably create a
Message stream inserters
Anywhere the macro variable "message" appears, stream inserts (operator <<())
may be used. Thus, for example:
int n = 5;
TD_LOG("current value of n: " << n);
Since every aspect of the structs used to control the behavior of Tiered Debug
are statically defined, the compiler can eliminate any superfluous code.
You can download the code and unit test from here.
If anyone thinks I should clarify the documentation or add in specific examples, go ahead and tell me.