kdebug.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _KDEBUG_H_
00023 #define _KDEBUG_H_
00024
00025 #include <qstring.h>
00026
00027 class QWidget;
00028 class QDateTime;
00029 class QDate;
00030 class QTime;
00031 class QPoint;
00032 class QSize;
00033 class QRect;
00034 class QRegion;
00035 class KURL;
00036 class QStringList;
00037 class QColor;
00038 class QPen;
00039 class QBrush;
00040
00041 class kdbgstream;
00042 class kndbgstream;
00043
00051 typedef kdbgstream & (*KDBGFUNC)(kdbgstream &);
00052 typedef kndbgstream & (*KNDBGFUNC)(kndbgstream &);
00053
00054 #ifdef __GNUC__
00055 #define k_funcinfo "[" << __PRETTY_FUNCTION__ << "] "
00056 #else
00057 #define k_funcinfo "[" << __FILE__ << ":" << __LINE__ << "] "
00058 #endif
00059
00060 #define k_lineinfo "[" << __FILE__ << ":" << __LINE__ << "] "
00061
00062 class kdbgstreamprivate;
00076 class kdbgstream {
00077 public:
00081 kdbgstream(unsigned int _area, unsigned int _level, bool _print = true) :
00082 area(_area), level(_level), print(_print) { }
00083 kdbgstream(const char * initialString, unsigned int _area, unsigned int _level, bool _print = true) :
00084 output(QString::fromLatin1(initialString)), area(_area), level(_level), print(_print) { }
00086 kdbgstream(kdbgstream &str) :
00087 output(str.output), area(str.area), level(str.level), print(str.print) { str.output.truncate(0); }
00088 kdbgstream(const kdbgstream &str) :
00089 output(str.output), area(str.area), level(str.level), print(str.print) {}
00090 ~kdbgstream();
00096 kdbgstream &operator<<(bool i) {
00097 if (!print) return *this;
00098 output += QString::fromLatin1(i ? "true" : "false");
00099 return *this;
00100 }
00106 kdbgstream &operator<<(short i) {
00107 if (!print) return *this;
00108 QString tmp; tmp.setNum(i); output += tmp;
00109 return *this;
00110 }
00116 kdbgstream &operator<<(unsigned short i) {
00117 if (!print) return *this;
00118 QString tmp; tmp.setNum(i); output += tmp;
00119 return *this;
00120 }
00126 kdbgstream &operator<<(char i);
00132 kdbgstream &operator<<(unsigned char i) {
00133 return operator<<( static_cast<char>( i ) );
00134 }
00140 kdbgstream &operator<<(int i) {
00141 if (!print) return *this;
00142 QString tmp; tmp.setNum(i); output += tmp;
00143 return *this;
00144 }
00150 kdbgstream &operator<<(unsigned int i) {
00151 if (!print) return *this;
00152 QString tmp; tmp.setNum(i); output += tmp;
00153 return *this;
00154 }
00160 kdbgstream &operator<<(long i) {
00161 if (!print) return *this;
00162 QString tmp; tmp.setNum(i); output += tmp;
00163 return *this;
00164 }
00170 kdbgstream &operator<<(unsigned long i) {
00171 if (!print) return *this;
00172 QString tmp; tmp.setNum(i); output += tmp;
00173 return *this;
00174 }
00178 void flush();
00179
00185 kdbgstream &operator<<(const QString& string) {
00186 if (!print) return *this;
00187 output += string;
00188 if (output.at(output.length() -1 ) == '\n')
00189 flush();
00190 return *this;
00191 }
00197 kdbgstream &operator<<(const char *string) {
00198 if (!print) return *this;
00199 output += QString::fromUtf8(string);
00200 if (output.at(output.length() - 1) == '\n')
00201 flush();
00202 return *this;
00203 }
00209 kdbgstream &operator<<(const QCString& string) {
00210 *this << string.data();
00211 return *this;
00212 }
00218 kdbgstream& operator<<(const void * p) {
00219 form("%p", p);
00220 return *this;
00221 }
00227 kdbgstream& operator<<(KDBGFUNC f) {
00228 if (!print) return *this;
00229 return (*f)(*this);
00230 }
00236 kdbgstream& operator<<(double d) {
00237 QString tmp; tmp.setNum(d); output += tmp;
00238 return *this;
00239 }
00246 kdbgstream &form(const char *format, ...)
00247 #ifdef __GNUC__
00248 __attribute__ ( ( format ( printf, 2, 3 ) ) )
00249 #endif
00250 ;
00251
00257 kdbgstream& operator << (const QWidget* widget);
00258 kdbgstream& operator << (QWidget* widget);
00259
00265 kdbgstream& operator << ( const QDateTime& dateTime );
00266
00272 kdbgstream& operator << ( const QDate& date );
00273
00279 kdbgstream& operator << ( const QTime& time );
00280
00286 kdbgstream& operator << ( const QPoint& point );
00287
00293 kdbgstream& operator << ( const QSize& size );
00294
00300 kdbgstream& operator << ( const QRect& rect);
00301
00307 kdbgstream& operator << ( const QRegion& region);
00308
00314 kdbgstream& operator << ( const KURL& url );
00315
00321 kdbgstream& operator << ( const QStringList& list);
00322
00328 kdbgstream& operator << ( const QColor& color);
00329
00336 kdbgstream& operator << ( const QPen& pen );
00337
00343 kdbgstream& operator << ( const QBrush& brush );
00344
00345
00346 private:
00347 QString output;
00348 unsigned int area, level;
00349 bool print;
00350 kdbgstreamprivate* d;
00351 };
00352
00359 inline kdbgstream &endl( kdbgstream &s) { s << "\n"; return s; }
00360
00367 inline kdbgstream &flush( kdbgstream &s) { s.flush(); return s; }
00368
00369 kdbgstream &perror( kdbgstream &s);
00370
00377 class kndbgstream {
00378 public:
00380 kndbgstream() {}
00381 ~kndbgstream() {}
00386 kndbgstream &operator<<(short int ) { return *this; }
00391 kndbgstream &operator<<(unsigned short int ) { return *this; }
00396 kndbgstream &operator<<(char ) { return *this; }
00401 kndbgstream &operator<<(unsigned char ) { return *this; }
00406 kndbgstream &operator<<(int ) { return *this; }
00411 kndbgstream &operator<<(unsigned int ) { return *this; }
00415 void flush() {}
00420 kndbgstream &operator<<(const QString& ) { return *this; }
00425 kndbgstream &operator<<(const QCString& ) { return *this; }
00430 kndbgstream &operator<<(const char *) { return *this; }
00435 kndbgstream& operator<<(const void *) { return *this; }
00440 kndbgstream& operator<<(void *) { return *this; }
00445 kndbgstream& operator<<(double) { return *this; }
00450 kndbgstream& operator<<(long) { return *this; }
00455 kndbgstream& operator<<(unsigned long) { return *this; }
00460 kndbgstream& operator<<(KNDBGFUNC) { return *this; }
00465 kndbgstream& operator << (const QWidget*) { return *this; }
00466 kndbgstream& operator << (QWidget*) { return *this; }
00471 kndbgstream &form(const char *, ...) { return *this; }
00472
00473 kndbgstream& operator<<( const QDateTime& ) { return *this; }
00474 kndbgstream& operator<<( const QDate& ) { return *this; }
00475 kndbgstream& operator<<( const QTime& ) { return *this; }
00476 kndbgstream& operator<<( const QPoint & ) { return *this; }
00477 kndbgstream& operator<<( const QSize & ) { return *this; }
00478 kndbgstream& operator<<( const QRect & ) { return *this; }
00479 kndbgstream& operator<<( const QRegion & ) { return *this; }
00480 kndbgstream& operator<<( const KURL & ) { return *this; }
00481 kndbgstream& operator<<( const QStringList & ) { return *this; }
00482 kndbgstream& operator<<( const QColor & ) { return *this; }
00483 kndbgstream& operator<<( const QPen & ) { return *this; }
00484 kndbgstream& operator<<( const QBrush & ) { return *this; }
00485 };
00486
00492 inline kndbgstream &endl( kndbgstream & s) { return s; }
00498 inline kndbgstream &flush( kndbgstream & s) { return s; }
00499 inline kndbgstream &perror( kndbgstream & s) { return s; }
00500
00508 kdbgstream kdDebug(int area = 0);
00509 kdbgstream kdDebug(bool cond, int area = 0);
00515 QString kdBacktrace();
00523 QString kdBacktrace(int levels);
00529 inline kndbgstream kndDebug(int area = 0) { Q_UNUSED(area); return kndbgstream(); }
00530 inline kndbgstream kndDebug(bool , int = 0) { return kndbgstream(); }
00531 inline QString kndBacktrace() { return QString::null; }
00532 inline QString kndBacktrace(int) { return QString::null; }
00533
00540 kdbgstream kdWarning(int area = 0);
00541 kdbgstream kdWarning(bool cond, int area = 0);
00548 kdbgstream kdError(int area = 0);
00549 kdbgstream kdError(bool cond, int area = 0);
00556 kdbgstream kdFatal(int area = 0);
00557 kdbgstream kdFatal(bool cond, int area = 0);
00558
00564 void kdClearDebugConfig();
00565
00568 #ifdef NDEBUG
00569 #define kdDebug kndDebug
00570 #define kdBacktrace kndBacktrace
00571 #endif
00572
00573 #endif
00574
This file is part of the documentation for kdecore Library Version 3.2.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Mar 4 22:43:30 2004 by
doxygen 1.3.6-20040222 written by
Dimitri van Heesch, © 1997-2003