]> git.lyx.org Git - lyx.git/blobdiff - src/debug.h
Fixed some lines that were too long. It compiled afterwards.
[lyx.git] / src / debug.h
index bc396bd5437fc43141b10cf4b003717a270a65c9..3648ec83d222be38ef71c7f301d2166b41e94934 100644 (file)
@@ -1,17 +1,35 @@
 // -*- C++ -*-
+/**
+ * \file debug.h
+ *
+ * FIXME: It would be nice if, in lyx::use_gui mode, instead of
+ * outputting to the console, we would pipe all messages onto a file
+ * and visualise the contents dynamically in a Qt window if needed.
+ *
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Lars Gullik Bjønnes
+ * \author Jean-Marc Lasgouttes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
 
 #ifndef LYXDEBUG_H
 #define LYXDEBUG_H
 
-#include "LString.h"
-#include "support/LOstream.h"
-#include "support/lstrings.h"
+#include "support/debugstream.h"
+#include "support/docstring.h"
+
+
+namespace lyx {
 
 /** Ideally this should have been a namespace, but since we try to be
-    compilable on older C++ compilators too, we use a struct instead.
-    This is all the different debug levels that we have.
-*/
-struct Debug {
+ *  compilable on older C++ compilators too, we use a struct instead.
+ *  This is all the different debug levels that we have.
+ */
+class lyx_debug_trait {
+public:
        ///
        enum type {
                ///
@@ -23,7 +41,7 @@ struct Debug {
                ///
                KEY        = (1 << 2),   // 4
                ///
-               TOOLBAR    = (1 << 3),   // 8
+               GUI        = (1 << 3),   // 8
                ///
                PARSER     = (1 << 4),   // 16
                ///
@@ -49,46 +67,65 @@ struct Debug {
                ///
                LYXLEX     = (1 << 15),
                ///
-               DEPEND     = (1 << 16)
+               DEPEND     = (1 << 16),
+               ///
+               INSETS     = (1 << 17),
+               ///
+               FILES      = (1 << 18),
+               ///
+               WORKAREA   = (1 << 19),
+               ///
+               INSETTEXT  = (1 << 20),
+               ///
+               GRAPHICS   = (1 << 21),
+               /// change tracking
+               CHANGES    = (1 << 22),
+               ///
+               EXTERNAL   = (1 << 23),
+               ///
+               PAINTING   = (1 << 24),
+               ///
+               DEBUG      = (1 << 31),
+               ///
+               ANY = 0xffffffff
        };
-       ///
-       static const type ANY = type(INFO | INIT | KEY | TOOLBAR |
-                                    PARSER | LYXRC | KBMAP | LATEX |
-                                    MATHED | FONT | TCLASS | LYXVC |
-                                    LYXSERVER | ROFF | ACTION | LYXLEX |
-                                    DEPEND);
-       ///
-       friend inline void operator|=(Debug::type & d1, Debug::type d2);
-       
+
+       static bool match(type a, type b) {
+               return (a & b);
+       }
+
        /** A function to convert symbolic string names on debug levels
            to their numerical value.
        */
-       static Debug::type value(string const & val); 
+       static type value(std::string const & val);
 
-       /** Display the tags and descriptions of the current debug level 
-           of ds 
+       /** Display the tags and descriptions of the current debug level
+           of ds
        */
-       static void showLevel(ostream & o, type level);
+       static void showLevel(std::ostream & o, type level);
 
        /** show all the possible tags that can be used for debugging */
-       static void showTags(ostream & o);
+       static void showTags(std::ostream & o);
 
 };
 
 
-///
-inline void operator|= (Debug::type & d1, Debug::type d2)
+
+inline
+void operator|=(lyx_debug_trait::type & d1, lyx_debug_trait::type d2)
 {
-       d1 = static_cast<Debug::type>(d1 | d2);
+       d1 = static_cast<lyx_debug_trait::type>(d1 | d2);
 }
 
 
-#include "support/DebugStream.h"
+typedef basic_debugstream<lyx_debug_trait> LyXErr;
+typedef LyXErr::debug Debug;
+
+extern LyXErr lyxerr;
 
+} // namespace lyx
 
-///
-ostream & operator<<(ostream & o, Debug::type t);
+#define LYXERR(type) if (!lyx::lyxerr.debugging(type)) ; else lyx::lyxerr
 
-extern DebugStream lyxerr;
 
 #endif