s11n_debuggering_macros.hpp
Go to the documentation of this file.00001 #ifndef s11n_DEBUGGERING_MACROS_H
00002 #define s11n_DEBUGGERING_MACROS_H 1
00003
00004
00005
00006 #ifndef CERR
00007 #define CERR std::cerr << __FILE__ << ":" << std::dec << __LINE__ << " : "
00008 #endif
00009
00010 #ifndef COUT
00011 #define COUT std::cout << __FILE__ << ":" << std::dec << __LINE__ << " : "
00012 #endif
00013
00014 #include <iostream>
00015
00016
00017 #include <s11n.net/s11n/export.hpp>
00018
00019
00020
00021
00022
00023
00024
00025 #define S11N_TRACE_PROFILE_QUIET (::s11n::debug::TRACE_NEVER)
00026 #define S11N_TRACE_PROFILE_DEFAULT (::s11n::debug::TRACE_ERROR | ::s11n::debug::TRACE_WARNING )
00027 #define S11N_TRACE_PROFILE_MAINTAINER (S11N_TRACE_PROFILE_DEFAULT | ::s11n::debug::TRACE_FACTORY_REG )
00028
00029
00030
00031
00032
00033
00034 #ifndef S11N_TRACE_LEVELS // allow client code to change compile-time default
00035
00036 # define S11N_TRACE_LEVELS (S11N_TRACE_PROFILE_DEFAULT)
00037 #endif
00038
00039
00040 #define S11N_TRACE(LVL) if((S11N_TRACE_LEVELS) && ((LVL) & ::s11n::debug::trace_mask())) \
00041 ::s11n::debug::trace_stream() << "S11N_TRACE["<<# LVL<<"]: "<<__FILE__<<":"<<std::dec<<__LINE__<<":\n\t"
00042
00043
00044 namespace s11n {
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066 namespace debug {
00067
00068
00069
00070
00071 enum TraceFlags {
00072 TRACE_NEVER = 0x00000000,
00073 TRACE_TRIVIAL = 0x00000001,
00074 TRACE_INFO = 0x00000002,
00075 TRACE_WARNING = 0x00000004,
00076 TRACE_ERROR = 0x00000008,
00077 TRACE_CTOR = 0x00000010,
00078 TRACE_DTOR = 0x00000020,
00079 TRACE_CLEANUP = 0x00000040,
00080 TRACE_FACTORY_REG = 0x00000100,
00081 TRACE_FACTORY_LOOKUP = 0x00000200,
00082 TRACE_FACTORY_PLUGINS = 0x00000400,
00083 TRACE_FACTORY = 0x00000F00,
00084 TRACE_IO = 0x00001000,
00085 TRACE_NYI = 0x00010000,
00086 TRACE_FIXME = 0x00020000,
00087 TRACE_SATAN = 0x00040000,
00088 TRACE_ALWAYS = 0xffffffff
00089 };
00090
00091
00092
00093
00094
00095 unsigned long trace_mask( unsigned long f );
00096
00097
00098
00099
00100
00101 S11N_EXPORT_API unsigned long trace_mask();
00102
00103
00104
00105
00106
00107
00108 S11N_EXPORT_API std::ostream & trace_stream();
00109
00110
00111 void trace_stream( std::ostream & );
00112
00113
00114
00115
00116
00117 struct trace_mask_changer
00118 {
00119
00120
00121
00122 trace_mask_changer();
00123
00124
00125
00126
00127 trace_mask_changer( unsigned long m );
00128
00129
00130
00131
00132 ~trace_mask_changer();
00133 private:
00134 unsigned long m_mask;
00135 };
00136
00137 }
00138 }
00139
00140 #endif // s11n_DEBUGGERING_MACROS_H