Depression Glass Debug Library FAQ
Q: What is "Depression Glass"?
A: Find exact references on the web, for example here is the original explanation:
Technically, Depression Glass is the cheap, sometimes less than perfect glassware that was mass produced in America during the Great Depression. It was often given away for buying something like a sack of flour. The cheerful colors of Depression glass helped to brighten up a bleak point in American history. In the years to follow the Depression, many people got rid of their Depression glass. For some, it was a reminder of hard times and it symbolized being poor. Because so much glass was discarded, what's left behind has become very collectible.
Q: Anyway, what is DGD good for?
A: DGD is a library for algorithm debugging. Usually, implementation of any algorithm with complexity above trivial (implementation complexity, not the algorithm complexity!) requires some tracing being included in the code. Most of the time this tracing is a form of printf() statements or similar. DGD is supposed to be easily extended C++ ostream (or so) wrapper, with a handy set of tools allowing readable and precise output.
Q: What platforms DGD supports?
A: I am intended to keep DGD as portable as possible, while developing on and for Windows. There is cygwin and Linux port which will be maintained for stable DGD releases.
Q: Is DGD multi-thread safe?
A: No. DGD is as multithread safe as std::ostream is. If two threads write into same DGD::channel it is good chance that the output will be messed. But nothing will fail and no deadlocks will occur. Thus, DGD certainly can be used in multi-threaded applications, but it is good practice to write output of each thread to separate file/channel.
Q: Is boost library absolutely needed?
A: No. If you want just a stream formatting solution - import files dgChannel.[h|cpp] and dgChannelBuf.[h|cpp] into your project. Compile with -DDGD_WITHOUT_BOOST.
Alternatively, you can leave the whole DGD as is, but import parts of boost. You will need boost/smart_ptr.hpp and all its included files (directly and indirectly). No boost libraries must be compiled.