]> git.lyx.org Git - lyx.git/blobdiff - src/support/debugstream.h
fix linking error in the frontend
[lyx.git] / src / support / debugstream.h
index 9b01f2702f12c8bf6c717c1f005fb59270e57a45..63744ef4c5014c87bf003dc192211a31ec180db7 100644 (file)
@@ -16,6 +16,9 @@
 
 #include <boost/version.hpp>
 
+
+//namespace lyx {
+
 #if BOOST_VERSION < 103300
 #  include <boost/test/detail/nullstream.hpp>
 #else
@@ -61,12 +64,14 @@ public:
        typedef typename debug::type Type;
 
        basic_debugstream()
-               : std::basic_ostream<charT, traits>(0), dt(debug::NONE)
+               : std::basic_ostream<charT, traits>(0), dt(debug::NONE),
+                 realbuf_(0), enabled_(true)
        {}
 
        /// Constructor, sets the debug level to t.
        explicit basic_debugstream(std::basic_streambuf<charT, traits> * buf)
-               : std::basic_ostream<charT, traits>(buf), dt(debug::NONE)
+               : std::basic_ostream<charT, traits>(buf), dt(debug::NONE),
+                 realbuf_(0), enabled_(true)
        {}
 
        /// Sets the debug level to t.
@@ -96,13 +101,37 @@ public:
                        return *this;
                return nullstream;
        }
+       /// Disable the stream completely
+       void disable()
+       {
+               if (enabled_) {
+                       realbuf_ = this->rdbuf();
+                       rdbuf(nullstream.rdbuf());
+                       enabled_ = false;
+               }
+       }
+       /// Enable the stream after a possible call of disable()
+       void enable()
+       {
+               if (!enabled_) {
+                       this->rdbuf(realbuf_);
+                       enabled_ = true;
+               }
+       }
 private:
        /// The current debug level
        Type dt;
        /// The no-op stream.
        boost::basic_onullstream<charT, traits> nullstream;
+       /// The buffer of the real stream
+       std::streambuf * realbuf_;
+       /// Is the stream enabled?
+       bool enabled_;
 };
 
 typedef basic_debugstream<debug_trait> debugstream;
 
+
+//} // namespace lyx
+
 #endif