00001 using namespace std; 00002 00003 #ifndef _MESSAGE_ 00004 #define _MESSAGE_ 00005 00006 #include <string> 00007 00008 #define __ENDM_BASE__ CMessage::dec<<" [file:"<<__FILE__<<" line:"<<__LINE__<<" function:"<<__FUNCTION__<<"]"<<CMessage::endm 00009 00010 #define ENDM_INFO CMessage::info<<__ENDM_BASE__ 00011 #define ENDM_WARN CMessage::warning<<__ENDM_BASE__ 00012 #define ENDM_SEVERE CMessage::severe<<__ENDM_BASE__ 00013 #define ENDM_FATAL CMessage::fatal<<__ENDM_BASE__ 00014 00015 #define MESSAGE *CMessage::getCMessage() 00016 00017 class CMessage 00018 { 00019 00020 public: 00021 00022 static CMessage * getCMessage(void); 00023 bool show_info; 00024 bool show_warn; 00025 00026 enum level {info,warning,severe,fatal}; 00027 enum cntl {hex,dec,endm}; 00028 00029 CMessage& operator<< (string); 00030 CMessage& operator<< (const char*); 00031 CMessage& operator<< (int); 00032 CMessage& operator<< (unsigned int tmp){*this<<(int)tmp; return *this;}; 00033 CMessage& operator<< (long); 00034 CMessage& operator<< (double); 00035 00036 CMessage& operator<< (cntl); 00037 CMessage& operator<< (level); 00038 00039 private: 00040 00041 CMessage(); 00042 CMessage(string); 00043 00044 string _queue; 00045 level _level; 00046 string _constructorArgument; 00047 bool _hex; 00048 00049 }; 00050 00051 #endif