summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2004-06-22 10:36:11 (UTC)
committer mickeyl <mickeyl>2004-06-22 10:36:11 (UTC)
commit9cff98cb70d8e3a69cefe718bf02720134c10bca (patch) (unidiff)
tree750f086afefc20e05b5860bf3065697cb75f98ab
parent526031c34fff4e789b05fddbd7effe83ef057361 (diff)
downloadopie-9cff98cb70d8e3a69cefe718bf02720134c10bca.zip
opie-9cff98cb70d8e3a69cefe718bf02720134c10bca.tar.gz
opie-9cff98cb70d8e3a69cefe718bf02720134c10bca.tar.bz2
introduce numeric constants for the odebug output destinations
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/odebug.cpp12
-rw-r--r--libopie2/opiecore/odebug.h9
2 files changed, 14 insertions, 7 deletions
diff --git a/libopie2/opiecore/odebug.cpp b/libopie2/opiecore/odebug.cpp
index 3bffdd0..d8dfe26 100644
--- a/libopie2/opiecore/odebug.cpp
+++ b/libopie2/opiecore/odebug.cpp
@@ -52,203 +52,203 @@
52#include <qsocketdevice.h> 52#include <qsocketdevice.h>
53 53
54/* UNIX */ 54/* UNIX */
55 55
56#include <stdlib.h> // abort 56#include <stdlib.h> // abort
57#include <unistd.h> // getpid 57#include <unistd.h> // getpid
58#include <stdarg.h> // vararg stuff 58#include <stdarg.h> // vararg stuff
59#include <ctype.h> // isprint 59#include <ctype.h> // isprint
60#include <syslog.h> 60#include <syslog.h>
61#include <errno.h> 61#include <errno.h>
62#include <string.h> 62#include <string.h>
63 63
64#ifndef OPIE_NO_BACKTRACE 64#ifndef OPIE_NO_BACKTRACE
65#include <execinfo.h> 65#include <execinfo.h>
66#endif 66#endif
67 67
68namespace Opie { 68namespace Opie {
69namespace Core { 69namespace Core {
70namespace Internal { 70namespace Internal {
71/*====================================================================================== 71/*======================================================================================
72 * debug levels 72 * debug levels
73 *======================================================================================*/ 73 *======================================================================================*/
74 74
75enum DebugLevels { 75enum DebugLevels {
76 ODEBUG_INFO = 0, 76 ODEBUG_INFO = 0,
77 ODEBUG_WARN = 1, 77 ODEBUG_WARN = 1,
78 ODEBUG_ERROR = 2, 78 ODEBUG_ERROR = 2,
79 ODEBUG_FATAL = 3 79 ODEBUG_FATAL = 3
80}; 80};
81 81
82/*====================================================================================== 82/*======================================================================================
83 * oDebug private data 83 * oDebug private data
84 *======================================================================================*/ 84 *======================================================================================*/
85 85
86/*====================================================================================== 86/*======================================================================================
87 * the main debug function 87 * the main debug function
88 *======================================================================================*/ 88 *======================================================================================*/
89 89
90 90
91 91
92struct DebugBackend { 92struct DebugBackend {
93 DebugBackend() : m_opened( false ), m_file( 0 ) ,m_port( -1 ),m_sock( 0 ) { 93 DebugBackend() : m_opened( false ), m_file( 0 ) ,m_port( -1 ),m_sock( 0 ) {
94 m_outp = OGlobalSettings::debugMode(); 94 m_outp = OGlobalSettings::debugMode();
95 } 95 }
96 ~DebugBackend() { 96 ~DebugBackend() {
97 delete m_file; 97 delete m_file;
98 delete m_sock; 98 delete m_sock;
99 } 99 }
100 void debug( unsigned short level, unsigned int, const QString& data ); 100 void debug( unsigned short level, unsigned int, const QString& data );
101 101
102private: 102private:
103 void debugFile( const QString&, const QString& data ); 103 void debugFile( const QString&, const QString& data );
104 void debugMsgB( const QString&, const QString& data ); 104 void debugMsgB( const QString&, const QString& data );
105 void debugShel( const QString&, const QString& data ); 105 void debugShel( const QString&, const QString& data );
106 void debugSysl( int, const QString& ); 106 void debugSysl( int, const QString& );
107 void debugSock( const QString&, const QString& data ); 107 void debugSock( const QString&, const QString& data );
108 QCString line( const QString&, const QString& data ); 108 QCString line( const QString&, const QString& data );
109 bool m_opened : 1; 109 bool m_opened : 1;
110 QFile *m_file; 110 QFile *m_file;
111 QHostAddress m_addr; 111 QHostAddress m_addr;
112 int m_port; 112 int m_port;
113 QSocketDevice *m_sock; 113 QSocketDevice *m_sock;
114 short m_outp; 114 short m_outp;
115}; 115};
116 116
117void DebugBackend::debug(unsigned short level, unsigned int, const QString& data) { 117void DebugBackend::debug(unsigned short level, unsigned int, const QString& data) {
118 //qDebug( "oDebugBackend: Level=%d, Area=%d, Data=%s", level, area, data ); 118 //qDebug( "oDebugBackend: Level=%d, Area=%d, Data=%s", level, area, data );
119 119
120 // ML: OPIE doesn't use areacodes at the moment. See the KDE debug classes for an 120 // ML: OPIE doesn't use areacodes at the moment. See the KDE debug classes for an
121 // ML: example use. I think it's not necessary to implement such a strategy here. 121 // ML: example use. I think it's not necessary to implement such a strategy here.
122 // ML: Comments? 122 // ML: Comments?
123 123
124 int priority = 0; 124 int priority = 0;
125 QString caption; 125 QString caption;
126 QString lev; 126 QString lev;
127 switch( level ) 127 switch( level )
128 { 128 {
129 case ODEBUG_INFO: lev = "(Info)"; caption = "Info"; priority = LOG_INFO; break; 129 case ODEBUG_INFO: lev = "(Info)"; caption = "Info"; priority = LOG_INFO; break;
130 case ODEBUG_WARN: lev = "(Warn)"; caption = "Warning"; priority = LOG_WARNING; break; 130 case ODEBUG_WARN: lev = "(Warn)"; caption = "Warning"; priority = LOG_WARNING; break;
131 case ODEBUG_FATAL: lev = "(Fatal)"; caption = "Fatal Error"; priority = LOG_CRIT; break; 131 case ODEBUG_FATAL: lev = "(Fatal)"; caption = "Fatal Error"; priority = LOG_CRIT; break;
132 default: qDebug( "oDebugBackend: Warning: Unknown debug level! - defaulting to ODEBUG_ERROR." ); 132 default: qDebug( "oDebugBackend: Warning: Unknown debug level! - defaulting to ODEBUG_ERROR." );
133 case ODEBUG_ERROR: lev = "(Error)"; caption = "Error"; priority = LOG_ERR; break; 133 case ODEBUG_ERROR: lev = "(Error)"; caption = "Error"; priority = LOG_ERR; break;
134 } 134 }
135 135
136 if (!oApp && (m_outp == 1)) { 136 if (!oApp && (m_outp == 1)) {
137 qDebug( "oDebugBackend: Warning: no oapplication object - can't use MsgBox" ); 137 qDebug( "oDebugBackend: Warning: no oapplication object - can't use MsgBox" );
138 m_outp = 2; // need an application object to use MsgBox 138 m_outp = 2; // need an application object to use MsgBox
139 } 139 }
140 140
141 // gcc 2.9x is dumb and sucks... can you hear it? 141 // gcc 2.9x is dumb and sucks... can you hear it?
142 //QString areaName = (oApp) ? oApp->appName() : "<unknown>"; 142 //QString areaName = (oApp) ? oApp->appName() : "<unknown>";
143 QString areaName; 143 QString areaName;
144 if ( oApp ) areaName = oApp->appName(); 144 if ( oApp ) areaName = oApp->appName();
145 else areaName = "<unknown>"; 145 else areaName = "<unknown>";
146 146
147 switch( m_outp ) { 147 switch( m_outp ) {
148 case -1: // ignore 148 case ODEBUG_IGNORE:
149 return; 149 return;
150 case 0: // File 150 case ODEBUG_FILE:
151 return debugFile( areaName, data ); 151 return debugFile( areaName, data );
152 case 1: // Message Box 152 case ODEBUG_MSGBOX:
153 return debugMsgB( areaName, data ); 153 return debugMsgB( areaName, data );
154 case 2: 154 case ODEBUG_STDERR:
155 return debugShel( areaName,data ); 155 return debugShel( areaName,data );
156 case 3: // syslog 156 case ODEBUG_SYSLOG:
157 return debugSysl( priority, data ); 157 return debugSysl( priority, data );
158 case 4: // socket 158 case ODEBUG_SOCKET:
159 return debugSock( areaName, data ); 159 return debugSock( areaName, data );
160 } 160 }
161} 161}
162 162
163inline void DebugBackend::debugFile(const QString& area, const QString& data) { 163inline void DebugBackend::debugFile(const QString& area, const QString& data) {
164 /* something went wrong with the file don't bother.. */ 164 /* something went wrong with the file don't bother.. */
165 if ( m_opened && !m_file ) 165 if ( m_opened && !m_file )
166 return; 166 return;
167 else if ( !m_opened ) { 167 else if ( !m_opened ) {
168 m_opened = true; 168 m_opened = true;
169 m_file = new QFile( OGlobalSettings::debugOutput() ); 169 m_file = new QFile( OGlobalSettings::debugOutput() );
170 if (!m_file->open( IO_WriteOnly | IO_Append ) ) { 170 if (!m_file->open( IO_WriteOnly | IO_Append ) ) {
171 delete m_file; m_file = 0; 171 delete m_file; m_file = 0;
172 qDebug( "ODebug: can't write to file '%s' (%s)", (const char*)OGlobalSettings::debugOutput(), 172 qDebug( "ODebug: can't write to file '%s' (%s)", (const char*)OGlobalSettings::debugOutput(),
173 strerror(errno) ); 173 strerror(errno) );
174 return; 174 return;
175 } 175 }
176 } 176 }
177 177
178 /* go to end of file */ 178 /* go to end of file */
179 m_file->at( m_file->size() ); 179 m_file->at( m_file->size() );
180 QCString li = line( area, data ); 180 QCString li = line( area, data );
181 m_file->writeBlock(li.data(), li.length() ); 181 m_file->writeBlock(li.data(), li.length() );
182} 182}
183 183
184void DebugBackend::debugMsgB( const QString& area, const QString& data ) { 184void DebugBackend::debugMsgB( const QString& area, const QString& data ) {
185 QMessageBox::warning( 0l, "("+area+")", data, ("Ok") ); 185 QMessageBox::warning( 0l, "("+area+")", data, ("Ok") );
186} 186}
187 187
188void DebugBackend::debugShel( const QString& are, const QString& data ) { 188void DebugBackend::debugShel( const QString& are, const QString& data ) {
189 FILE *output = stderr; 189 FILE *output = stderr;
190 fprintf( output, "%s: %s", are.local8Bit().data(), 190 fprintf( output, "%s: %s", are.local8Bit().data(),
191 data.local8Bit().data() ); 191 data.local8Bit().data() );
192} 192}
193 193
194void DebugBackend::debugSysl( int prio, const QString& data ) { 194void DebugBackend::debugSysl( int prio, const QString& data ) {
195 ::syslog( prio, "%s", data.local8Bit().data() ); 195 ::syslog( prio, "%s", data.local8Bit().data() );
196} 196}
197 197
198void DebugBackend::debugSock( const QString& are, const QString& data ) { 198void DebugBackend::debugSock( const QString& are, const QString& data ) {
199 if ( m_opened && !m_sock ) 199 if ( m_opened && !m_sock )
200 return; 200 return;
201 else if ( !m_opened ){ 201 else if ( !m_opened ){
202 m_opened = true; 202 m_opened = true;
203 QString destination = OGlobalSettings::debugOutput(); 203 QString destination = OGlobalSettings::debugOutput();
204 if ( destination && destination.find(":") != -1 ) { 204 if ( destination && destination.find(":") != -1 ) {
205 QString host = destination.left( destination.find(":") ); 205 QString host = destination.left( destination.find(":") );
206 m_port = destination.right( destination.length()-host.length()-1 ).toInt(); 206 m_port = destination.right( destination.length()-host.length()-1 ).toInt();
207 m_addr.setAddress( host ); 207 m_addr.setAddress( host );
208 m_sock = new QSocketDevice( QSocketDevice::Datagram ); 208 m_sock = new QSocketDevice( QSocketDevice::Datagram );
209 }else{ 209 }else{
210 m_sock = 0; 210 m_sock = 0;
211 return; 211 return;
212 } 212 }
213 } 213 }
214 214
215 QCString li = line( are, data ); 215 QCString li = line( are, data );
216 int result = m_sock->writeBlock(li.data(), li.length(), m_addr, m_port ); 216 int result = m_sock->writeBlock(li.data(), li.length(), m_addr, m_port );
217 if ( result == -1 ) { 217 if ( result == -1 ) {
218 qDebug( "ODebug: can't send to address '"+ m_addr.toString() +":%d' (%s)", 218 qDebug( "ODebug: can't send to address '"+ m_addr.toString() +":%d' (%s)",
219 m_port, strerror(errno) ); 219 m_port, strerror(errno) );
220 } 220 }
221} 221}
222 222
223QCString DebugBackend::line( const QString& area, const QString& data ) { 223QCString DebugBackend::line( const QString& area, const QString& data ) {
224 QString str = area +":"+data; 224 QString str = area +":"+data;
225 return str.local8Bit(); 225 return str.local8Bit();
226} 226}
227 227
228static DebugBackend *backEnd = 0; 228static DebugBackend *backEnd = 0;
229} 229}
230static void clean_up_routine() { 230static void clean_up_routine() {
231 qWarning( "Clean up Debug" ); 231 qWarning( "Clean up Debug" );
232 delete Internal::backEnd; 232 delete Internal::backEnd;
233 Internal::backEnd = 0; 233 Internal::backEnd = 0;
234} 234}
235/*====================================================================================== 235/*======================================================================================
236 * odbgstream 236 * odbgstream
237 *======================================================================================*/ 237 *======================================================================================*/
238 238
239odbgstream& perror( odbgstream &s) 239odbgstream& perror( odbgstream &s)
240{ 240{
241 return s << QString::fromLocal8Bit(strerror(errno)); 241 return s << QString::fromLocal8Bit(strerror(errno));
242} 242}
243 243
244odbgstream odDebug(int area) 244odbgstream odDebug(int area)
245{ 245{
246 return odbgstream(area, Internal::ODEBUG_INFO); 246 return odbgstream(area, Internal::ODEBUG_INFO);
247} 247}
248odbgstream odDebug(bool cond, int area) 248odbgstream odDebug(bool cond, int area)
249{ 249{
250 if (cond) return odbgstream(area, Internal::ODEBUG_INFO); 250 if (cond) return odbgstream(area, Internal::ODEBUG_INFO);
251 else return odbgstream(0, 0, false); 251 else return odbgstream(0, 0, false);
252} 252}
253 253
254odbgstream odError(int area) 254odbgstream odError(int area)
diff --git a/libopie2/opiecore/odebug.h b/libopie2/opiecore/odebug.h
index 3851a41..21a6c26 100644
--- a/libopie2/opiecore/odebug.h
+++ b/libopie2/opiecore/odebug.h
@@ -1,165 +1,172 @@
1/* 1/*
2 This file is part of the Opie Project 2 This file is part of the Opie Project
3 (C) 2003 Michael 'Mickey' Lauer (mickey@tm.informatik.uni-frankfurt.de) 3 (C) 2003 Michael 'Mickey' Lauer (mickey@tm.informatik.uni-frankfurt.de)
4 Inspired by the KDE debug classes, which are 4 Inspired by the KDE debug classes, which are
5 (C) 1997 Matthias Kalle Dalheimer (kalle@kde.org) 5 (C) 1997 Matthias Kalle Dalheimer (kalle@kde.org)
6 (C) 2002 Holger Freyther (freyther@kde.org) 6 (C) 2002 Holger Freyther (freyther@kde.org)
7 =. 7 =.
8 .=l. 8 .=l.
9           .>+-= 9           .>+-=
10 _;:,     .>    :=|. This program is free software; you can 10 _;:,     .>    :=|. This program is free software; you can
11.> <`_,   >  .   <= redistribute it and/or modify it under 11.> <`_,   >  .   <= redistribute it and/or modify it under
12:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 12:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
13.="- .-=="i,     .._ License as published by the Free Software 13.="- .-=="i,     .._ License as published by the Free Software
14 - .   .-<_>     .<> Foundation; either version 2 of the License, 14 - .   .-<_>     .<> Foundation; either version 2 of the License,
15     ._= =}       : or (at your option) any later version. 15     ._= =}       : or (at your option) any later version.
16    .%`+i>       _;_. 16    .%`+i>       _;_.
17    .i_,=:_.      -<s. This program is distributed in the hope that 17    .i_,=:_.      -<s. This program is distributed in the hope that
18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
19    : ..    .:,     . . . without even the implied warranty of 19    : ..    .:,     . . . without even the implied warranty of
20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
22..}^=.=       =       ; Library General Public License for more 22..}^=.=       =       ; Library General Public License for more
23++=   -.     .`     .: details. 23++=   -.     .`     .: details.
24 :     =  ...= . :.=- 24 :     =  ...= . :.=-
25 -.   .:....=;==+<; You should have received a copy of the GNU 25 -.   .:....=;==+<; You should have received a copy of the GNU
26  -_. . .   )=.  = Library General Public License along with 26  -_. . .   )=.  = Library General Public License along with
27    --        :-=` this library; see the file COPYING.LIB. 27    --        :-=` this library; see the file COPYING.LIB.
28 If not, write to the Free Software Foundation, 28 If not, write to the Free Software Foundation,
29 Inc., 59 Temple Place - Suite 330, 29 Inc., 59 Temple Place - Suite 330,
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
31*/ 31*/
32 32
33#ifndef ODEBUG_H 33#ifndef ODEBUG_H
34#define ODEBUG_H 34#define ODEBUG_H
35 35
36#include <qstring.h> 36#include <qstring.h>
37 37
38class QWidget; 38class QWidget;
39class QDateTime; 39class QDateTime;
40class QDate; 40class QDate;
41class QTime; 41class QTime;
42class QPoint; 42class QPoint;
43class QSize; 43class QSize;
44class QRect; 44class QRect;
45class QRegion; 45class QRegion;
46class QStringList; 46class QStringList;
47class QColor; 47class QColor;
48class QBrush; 48class QBrush;
49 49
50namespace Opie { 50namespace Opie {
51namespace Core { 51namespace Core {
52 52
53class odbgstream; 53class odbgstream;
54class ondbgstream; 54class ondbgstream;
55 55
56#ifdef __GNUC__ 56#ifdef __GNUC__
57#define o_funcinfo "[" << __PRETTY_FUNCTION__ << "] " 57#define o_funcinfo "[" << __PRETTY_FUNCTION__ << "] "
58#else 58#else
59#define o_funcinfo "[" << __FILE__ << ":" << __LINE__ << "] " 59#define o_funcinfo "[" << __FILE__ << ":" << __LINE__ << "] "
60#endif 60#endif
61 61
62#define o_lineinfo "[" << __FILE__ << ":" << __LINE__ << "] " 62#define o_lineinfo "[" << __FILE__ << ":" << __LINE__ << "] "
63 63
64#define owarn Opie::Core::odWarning() 64#define owarn Opie::Core::odWarning()
65#define oerr Opie::Core::odError() 65#define oerr Opie::Core::odError()
66#define odebug Opie::Core::odDebug() 66#define odebug Opie::Core::odDebug()
67#define ofatal Opie::Core::odFatal() 67#define ofatal Opie::Core::odFatal()
68#define oendl "\n" 68#define oendl "\n"
69 69
70const int ODEBUG_IGNORE = -1;
71const int ODEBUG_FILE = 0;
72const int ODEBUG_MSGBOX = 1;
73const int ODEBUG_STDERR = 2;
74const int ODEBUG_SYSLOG = 3;
75const int ODEBUG_SOCKET = 4;
76
70class odbgstreamprivate; 77class odbgstreamprivate;
71/** 78/**
72 * odbgstream is a text stream that allows you to print debug messages. 79 * odbgstream is a text stream that allows you to print debug messages.
73 * Using the overloaded "<<" operator you can send messages. Usually 80 * Using the overloaded "<<" operator you can send messages. Usually
74 * you do not create the odbgstream yourself, but use @ref odDebug() (odebug) 81 * you do not create the odbgstream yourself, but use @ref odDebug() (odebug)
75 * @ref odWarning() (owarn), @ref odError() (oerr) or @ref odFatal (ofatal) to obtain one. 82 * @ref odWarning() (owarn), @ref odError() (oerr) or @ref odFatal (ofatal) to obtain one.
76 * 83 *
77 * Example: 84 * Example:
78 * <pre> 85 * <pre>
79 * int i = 5; 86 * int i = 5;
80 * odebug << "The value of i is " << i << oendl; 87 * odebug << "The value of i is " << i << oendl;
81 * </pre> 88 * </pre>
82 * @see odbgstream 89 * @see odbgstream
83 */ 90 */
84 91
85/*====================================================================================== 92/*======================================================================================
86 * odbgstream 93 * odbgstream
87 *======================================================================================*/ 94 *======================================================================================*/
88 95
89class odbgstream 96class odbgstream
90{ 97{
91 public: 98 public:
92 /** 99 /**
93 * @internal 100 * @internal
94 */ 101 */
95 odbgstream(unsigned int _area, unsigned int _level, bool _print = true); 102 odbgstream(unsigned int _area, unsigned int _level, bool _print = true);
96 odbgstream(const char * initialString, unsigned int _area, unsigned int _level, bool _print = true); 103 odbgstream(const char * initialString, unsigned int _area, unsigned int _level, bool _print = true);
97 odbgstream(odbgstream &str); 104 odbgstream(odbgstream &str);
98 odbgstream(const odbgstream &str); 105 odbgstream(const odbgstream &str);
99 virtual ~odbgstream(); 106 virtual ~odbgstream();
100 107
101 /** 108 /**
102 * Prints the given value. 109 * Prints the given value.
103 * @param i the boolean to print (as "true" or "false") 110 * @param i the boolean to print (as "true" or "false")
104 * @return this stream 111 * @return this stream
105 */ 112 */
106 odbgstream &operator<<(bool i); 113 odbgstream &operator<<(bool i);
107 /** 114 /**
108 * Prints the given value. 115 * Prints the given value.
109 * @param i the short to print 116 * @param i the short to print
110 * @return this stream 117 * @return this stream
111 */ 118 */
112 odbgstream &operator<<(short i); 119 odbgstream &operator<<(short i);
113 /** 120 /**
114 * Prints the given value. 121 * Prints the given value.
115 * @param i the unsigned short to print 122 * @param i the unsigned short to print
116 * @return this stream 123 * @return this stream
117 */ 124 */
118 odbgstream &operator<<(unsigned short i); 125 odbgstream &operator<<(unsigned short i);
119 /** 126 /**
120 * Prints the given value. 127 * Prints the given value.
121 * @param i the char to print 128 * @param i the char to print
122 * @return this stream 129 * @return this stream
123 */ 130 */
124 odbgstream &operator<<(char i); 131 odbgstream &operator<<(char i);
125 /** 132 /**
126 * Prints the given value. 133 * Prints the given value.
127 * @param i the unsigned char to print 134 * @param i the unsigned char to print
128 * @return this stream 135 * @return this stream
129 */ 136 */
130 odbgstream &operator<<(unsigned char i); 137 odbgstream &operator<<(unsigned char i);
131 /** 138 /**
132 * Prints the given value. 139 * Prints the given value.
133 * @param i the int to print 140 * @param i the int to print
134 * @return this stream 141 * @return this stream
135 */ 142 */
136 odbgstream &operator<<(int i); 143 odbgstream &operator<<(int i);
137 /** 144 /**
138 * Prints the given value. 145 * Prints the given value.
139 * @param i the unsigned int to print 146 * @param i the unsigned int to print
140 * @return this stream 147 * @return this stream
141 */ 148 */
142 odbgstream &operator<<(unsigned int i); 149 odbgstream &operator<<(unsigned int i);
143 /** 150 /**
144 * Prints the given value. 151 * Prints the given value.
145 * @param i the long to print 152 * @param i the long to print
146 * @return this stream 153 * @return this stream
147 */ 154 */
148 odbgstream &operator<<(long i); 155 odbgstream &operator<<(long i);
149 /** 156 /**
150 * Prints the given value. 157 * Prints the given value.
151 * @param i the unsigned long to print 158 * @param i the unsigned long to print
152 * @return this stream 159 * @return this stream
153 */ 160 */
154 odbgstream &operator<<(unsigned long i); 161 odbgstream &operator<<(unsigned long i);
155 /** 162 /**
156 * Flushes the output. 163 * Flushes the output.
157 */ 164 */
158 virtual void flush(); 165 virtual void flush();
159 /** 166 /**
160 * Prints the given value. 167 * Prints the given value.
161 * @param string the string to print 168 * @param string the string to print
162 * @return this stream 169 * @return this stream
163 */ 170 */
164 odbgstream &operator<<(const QString& string); 171 odbgstream &operator<<(const QString& string);
165 /** 172 /**
@@ -304,181 +311,181 @@ class ondbgstream {
304 ~ondbgstream() {} 311 ~ondbgstream() {}
305 /** 312 /**
306 * Does nothing. 313 * Does nothing.
307 * @return this stream 314 * @return this stream
308 */ 315 */
309 ondbgstream &operator<<(short int ) { return *this; } 316 ondbgstream &operator<<(short int ) { return *this; }
310 /** 317 /**
311 * Does nothing. 318 * Does nothing.
312 * @return this stream 319 * @return this stream
313 */ 320 */
314 ondbgstream &operator<<(unsigned short int ) { return *this; } 321 ondbgstream &operator<<(unsigned short int ) { return *this; }
315 /** 322 /**
316 * Does nothing. 323 * Does nothing.
317 * @return this stream 324 * @return this stream
318 */ 325 */
319 ondbgstream &operator<<(char ) { return *this; } 326 ondbgstream &operator<<(char ) { return *this; }
320 /** 327 /**
321 * Does nothing. 328 * Does nothing.
322 * @return this stream 329 * @return this stream
323 */ 330 */
324 ondbgstream &operator<<(unsigned char ) { return *this; } 331 ondbgstream &operator<<(unsigned char ) { return *this; }
325 /** 332 /**
326 * Does nothing. 333 * Does nothing.
327 * @return this stream 334 * @return this stream
328 */ 335 */
329 ondbgstream &operator<<(int ) { return *this; } 336 ondbgstream &operator<<(int ) { return *this; }
330 /** 337 /**
331 * Does nothing. 338 * Does nothing.
332 * @return this stream 339 * @return this stream
333 */ 340 */
334 ondbgstream &operator<<(unsigned int ) { return *this; } 341 ondbgstream &operator<<(unsigned int ) { return *this; }
335 /** 342 /**
336 * Does nothing. 343 * Does nothing.
337 */ 344 */
338 void flush() {} 345 void flush() {}
339 /** 346 /**
340 * Does nothing. 347 * Does nothing.
341 * @return this stream 348 * @return this stream
342 */ 349 */
343 ondbgstream &operator<<(const QString& ) { return *this; } 350 ondbgstream &operator<<(const QString& ) { return *this; }
344 /** 351 /**
345 * Does nothing. 352 * Does nothing.
346 * @return this stream 353 * @return this stream
347 */ 354 */
348 ondbgstream &operator<<(const QCString& ) { return *this; } 355 ondbgstream &operator<<(const QCString& ) { return *this; }
349 /** 356 /**
350 * Does nothing. 357 * Does nothing.
351 * @return this stream 358 * @return this stream
352 */ 359 */
353 ondbgstream &operator<<(const char *) { return *this; } 360 ondbgstream &operator<<(const char *) { return *this; }
354 /** 361 /**
355 * Does nothing. 362 * Does nothing.
356 * @return this stream 363 * @return this stream
357 */ 364 */
358 ondbgstream& operator<<(const void *) { return *this; } 365 ondbgstream& operator<<(const void *) { return *this; }
359 /** 366 /**
360 * Does nothing. 367 * Does nothing.
361 * @return this stream 368 * @return this stream
362 */ 369 */
363 ondbgstream& operator<<(void *) { return *this; } 370 ondbgstream& operator<<(void *) { return *this; }
364 /** 371 /**
365 * Does nothing. 372 * Does nothing.
366 * @return this stream 373 * @return this stream
367 */ 374 */
368 ondbgstream& operator<<(double) { return *this; } 375 ondbgstream& operator<<(double) { return *this; }
369 /** 376 /**
370 * Does nothing. 377 * Does nothing.
371 * @return this stream 378 * @return this stream
372 */ 379 */
373 ondbgstream& operator<<(long) { return *this; } 380 ondbgstream& operator<<(long) { return *this; }
374 /** 381 /**
375 * Does nothing. 382 * Does nothing.
376 * @return this stream 383 * @return this stream
377 */ 384 */
378 ondbgstream& operator<<(unsigned long) { return *this; } 385 ondbgstream& operator<<(unsigned long) { return *this; }
379 /** 386 /**
380 * Does nothing. 387 * Does nothing.
381 * @return this stream 388 * @return this stream
382 */ 389 */
383 ondbgstream& operator << (QWidget*) { return *this; } 390 ondbgstream& operator << (QWidget*) { return *this; }
384 /** 391 /**
385 * Does nothing. 392 * Does nothing.
386 * @return this stream 393 * @return this stream
387 */ 394 */
388 ondbgstream &form(const char *, ...) { return *this; } 395 ondbgstream &form(const char *, ...) { return *this; }
389 396
390 ondbgstream& operator<<( const QDateTime& ) { return *this; } 397 ondbgstream& operator<<( const QDateTime& ) { return *this; }
391 ondbgstream& operator<<( const QDate& ) { return *this; } 398 ondbgstream& operator<<( const QDate& ) { return *this; }
392 ondbgstream& operator<<( const QTime& ) { return *this; } 399 ondbgstream& operator<<( const QTime& ) { return *this; }
393 ondbgstream& operator<<( const QPoint & ) { return *this; } 400 ondbgstream& operator<<( const QPoint & ) { return *this; }
394 ondbgstream& operator<<( const QSize & ) { return *this; } 401 ondbgstream& operator<<( const QSize & ) { return *this; }
395 ondbgstream& operator<<( const QRect & ) { return *this; } 402 ondbgstream& operator<<( const QRect & ) { return *this; }
396 ondbgstream& operator<<( const QRegion & ) { return *this; } 403 ondbgstream& operator<<( const QRegion & ) { return *this; }
397 ondbgstream& operator<<( const QStringList & ) { return *this; } 404 ondbgstream& operator<<( const QStringList & ) { return *this; }
398 ondbgstream& operator<<( const QColor & ) { return *this; } 405 ondbgstream& operator<<( const QColor & ) { return *this; }
399 ondbgstream& operator<<( const QBrush & ) { return *this; } 406 ondbgstream& operator<<( const QBrush & ) { return *this; }
400 407
401private: 408private:
402 class Private; 409 class Private;
403 Private *d; 410 Private *d;
404}; 411};
405 412
406/*====================================================================================== 413/*======================================================================================
407 * related functions 414 * related functions
408 *======================================================================================*/ 415 *======================================================================================*/
409 416
410/** 417/**
411 * Does nothing. 418 * Does nothing.
412 * @param a stream 419 * @param a stream
413 * @return the given @p s 420 * @return the given @p s
414 */ 421 */
415inline ondbgstream& endl( ondbgstream & s) { return s; } 422inline ondbgstream& endl( ondbgstream & s) { return s; }
416/** 423/**
417 * Does nothing. 424 * Does nothing.
418 * @param a stream 425 * @param a stream
419 * @return the given @p s 426 * @return the given @p s
420 */ 427 */
421inline ondbgstream& flush( ondbgstream & s) { return s; } 428inline ondbgstream& flush( ondbgstream & s) { return s; }
422inline ondbgstream& perror( ondbgstream & s) { return s; } 429inline ondbgstream& perror( ondbgstream & s) { return s; }
423 430
424/** 431/**
425 * Returns a debug stream. You can use it to print debug 432 * Returns a debug stream. You can use it to print debug
426 * information. 433 * information.
427 * @param area an id to identify the output, 0 for default 434 * @param area an id to identify the output, 0 for default
428 */ 435 */
429odbgstream odDebug(int area = 0); 436odbgstream odDebug(int area = 0);
430odbgstream odDebug(bool cond, int area = 0); 437odbgstream odDebug(bool cond, int area = 0);
431/** 438/**
432 * Returns a backtrace. 439 * Returns a backtrace.
433 * @param levels the number of levels (-1 for unlimited) of the backtrace 440 * @param levels the number of levels (-1 for unlimited) of the backtrace
434 * @return a backtrace 441 * @return a backtrace
435 */ 442 */
436QString odBacktrace(int levels = -1); 443QString odBacktrace(int levels = -1);
437/** 444/**
438 * Returns a dummy debug stream. The stream does not print anything. 445 * Returns a dummy debug stream. The stream does not print anything.
439 * @param area an id to identify the output, 0 for default 446 * @param area an id to identify the output, 0 for default
440 * @see odDebug() 447 * @see odDebug()
441 */ 448 */
442inline ondbgstream ondDebug(int = 0) { return ondbgstream(); } 449inline ondbgstream ondDebug(int = 0) { return ondbgstream(); }
443inline ondbgstream ondDebug(bool , int = 0) { return ondbgstream(); } 450inline ondbgstream ondDebug(bool , int = 0) { return ondbgstream(); }
444inline QString ondBacktrace() { return QString::null; } 451inline QString ondBacktrace() { return QString::null; }
445inline QString ondBacktrace(int) { return QString::null; } 452inline QString ondBacktrace(int) { return QString::null; }
446 453
447/** 454/**
448 * Returns a warning stream. You can use it to print warning 455 * Returns a warning stream. You can use it to print warning
449 * information. 456 * information.
450 * @param area an id to identify the output, 0 for default 457 * @param area an id to identify the output, 0 for default
451 */ 458 */
452odbgstream odWarning(int area = 0); 459odbgstream odWarning(int area = 0);
453odbgstream odWarning(bool cond, int area = 0); 460odbgstream odWarning(bool cond, int area = 0);
454/** 461/**
455 * Returns an error stream. You can use it to print error 462 * Returns an error stream. You can use it to print error
456 * information. 463 * information.
457 * @param area an id to identify the output, 0 for default 464 * @param area an id to identify the output, 0 for default
458 */ 465 */
459odbgstream odError(int area = 0); 466odbgstream odError(int area = 0);
460odbgstream odError(bool cond, int area = 0); 467odbgstream odError(bool cond, int area = 0);
461/** 468/**
462 * Returns a fatal error stream. You can use it to print fatal error 469 * Returns a fatal error stream. You can use it to print fatal error
463 * information. 470 * information.
464 * @param area an id to identify the output, 0 for default 471 * @param area an id to identify the output, 0 for default
465 */ 472 */
466odbgstream odFatal(int area = 0); 473odbgstream odFatal(int area = 0);
467odbgstream odFatal(bool cond, int area = 0); 474odbgstream odFatal(bool cond, int area = 0);
468 475
469/** 476/**
470 * Deletes the odebugrc cache and therefore forces KDebug to reread the 477 * Deletes the odebugrc cache and therefore forces KDebug to reread the
471 * config file 478 * config file
472 */ 479 */
473void odClearDebugConfig(); 480void odClearDebugConfig();
474 481
475#ifdef OPIE_NO_DEBUG 482#ifdef OPIE_NO_DEBUG
476#define odDebug ondDebug 483#define odDebug ondDebug
477#define odBacktrace ondBacktrace 484#define odBacktrace ondBacktrace
478#endif 485#endif
479 486
480} 487}
481} 488}
482 489
483#endif 490#endif
484 491