X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fdebug.h;h=3648ec83d222be38ef71c7f301d2166b41e94934;hb=cadae068974fb25e97c5b2c38774a73ee23e92fc;hp=4df1f6e0a813e4a81ab100271a0984d9132dc6ec;hpb=4b2a999762c83627476428e595d3c1e3704a3da0;p=lyx.git diff --git a/src/debug.h b/src/debug.h index 4df1f6e0a8..3648ec83d2 100644 --- a/src/debug.h +++ b/src/debug.h @@ -1,31 +1,35 @@ // -*- C++ -*- -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2000 The LyX Team. +/** + * \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 -#ifdef __GNUG__ -#pragma interface -#endif +#include "support/debugstream.h" +#include "support/docstring.h" -#include -#include "LString.h" -#include "support/lstrings.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 { /// @@ -65,24 +69,38 @@ struct Debug { /// DEPEND = (1 << 16), /// - INSETS = (1 << 17) + 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 | GUI | - PARSER | LYXRC | KBMAP | LATEX | - MATHED | FONT | TCLASS | LYXVC | - LYXSERVER | ROFF | ACTION | LYXLEX | - DEPEND | INSETS); - /// - 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); @@ -94,18 +112,20 @@ struct Debug { inline -void operator|= (Debug::type & d1, Debug::type d2) +void operator|=(lyx_debug_trait::type & d1, lyx_debug_trait::type d2) { - d1 = static_cast(d1 | d2); + d1 = static_cast(d1 | d2); } -#include "support/DebugStream.h" +typedef basic_debugstream LyXErr; +typedef LyXErr::debug Debug; +extern LyXErr lyxerr; +} // namespace lyx -std::ostream & operator<<(std::ostream & o, Debug::type t); +#define LYXERR(type) if (!lyx::lyxerr.debugging(type)) ; else lyx::lyxerr -extern DebugStream lyxerr; #endif