Considerably simplified the way output streams are used. This commit
authorMorgan Deters <mdeters@gmail.com>
Sun, 4 Jul 2010 18:36:22 +0000 (18:36 +0000)
committerMorgan Deters <mdeters@gmail.com>
Sun, 4 Jul 2010 18:36:22 +0000 (18:36 +0000)
commit693d70847d0ed753a4f035dd3c88eb32607e2081
tree0076edc5a7fe9eaf6605bef8bb6804e6a48e4d85
parent0679a64a1c1017d8ef0e26e40a476f2559e6bba3
Considerably simplified the way output streams are used.  This commit
should have no impact on production performance and speed up debug
performance considerably, while making the code much cleaner.  On some
benchmarks, debug builds now run _much_ faster.

We no longer have to sprinkle our code with things like:

  if(debugTagIsOn("context")) {
    Debug("context") << theContext << std::endl;
  }

which we had to do to get around performance problems previously.
Now just writing:

  Debug("context") << theContext << std::endl;

does the same in production and debug builds.  That is, if "context"
debugging is off, theContext isn't converted to a string, nor is it
output to a "/dev/null" ostream.  I've confirmed this.  In production
builds, the whole statement inlines to nothing.  I've confirmed this
too.

Also, "Debug" is no longer a #definition, so you can use it directly
in production builds where you couldn't previously, e.g.

  if(Debug.isOn("paranoid:check_tableau")) {
    checkTableau();
  }

I'm leaving debugTagIsOn() for now, but marking it as deprecated.
src/context/cdmap.h
src/context/context.cpp
src/context/context.h
src/context/context_mm.cpp
src/prop/prop_engine.cpp
src/prop/sat.h
src/theory/arith/arith_propagator.cpp
src/theory/arith/theory_arith.cpp
src/theory/theory_engine.cpp
src/util/output.cpp
src/util/output.h