// -*- C++ -*-
-/* This file is part of
- * ======================================================
- *
- * LyX, The Document Processor
- *
- * Copyright 1995 Matthias Ettrich
- * Copyright 1995-2000 The LyX Team.
+/**
+ * \file debug.h
+ * 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
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#include <iosfwd>
-
-#include "LString.h"
-#include "support/lstrings.h"
+#include "support/debugstream.h"
/** 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 {
///
///
INSETS = (1 << 17),
///
- FILES = (1 << 18)
+ 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 | GUI |
-// PARSER | LYXRC | KBMAP | LATEX |
-// MATHED | FONT | TCLASS | LYXVC |
-// LYXSERVER | ROFF | ACTION | LYXLEX |
-// DEPEND | INSETS);
- ///
- static type const ANY;
- ///
-// 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(std::ostream & o, type level);
inline
-void operator|=(Debug::type & d1, Debug::type d2)
+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"
-
-
+// std::ostream & operator<<(std::ostream & o, Debug::type t);
-std::ostream & operator<<(std::ostream & o, Debug::type t);
+typedef basic_debugstream<lyx_debug_trait> LyXErr;
+typedef LyXErr::debug Debug;
-extern DebugStream lyxerr;
+extern LyXErr lyxerr;
#endif