CrossFramework Library
|
00001 00006 #if defined(XBASE_INCLUDED_CONSOLE_HPP) 00007 #else 00008 #define XBASE_INCLUDED_CONSOLE_HPP 00009 00010 //------------------------------------------------------------ 00011 #include <cstdarg> 00012 #include <XBase/Config.hpp> 00013 #include <XBase/ToShortString.hpp> 00014 00015 //------------------------------------------------------------ 00016 namespace XBase { 00017 class IConsoleCallback; 00018 } 00019 00020 //------------------------------------------------------------ 00021 namespace XBase { 00023 00024 00025 struct Console 00026 { 00032 static const char* const DefaultTimeFormatString(); 00033 00043 static void SetTimeFormatString( const char* aFormat ); 00044 00051 static IConsoleCallback& DefaultCallback(); 00052 00057 static void SetCallback( IConsoleCallback& aCallback ); 00058 00063 static void WriteF( const char* aFormat , ... ); 00064 00069 static void WriteVF( const char* aFormat , va_list ); 00070 00075 static void WriteLineF( const char* aFormat , ... ); 00076 00081 static void WriteLineVF( const char* aFormat , va_list ); 00082 00084 static void WriteTime(); 00085 00090 static void TimeWriteLineF( const char* aFormat , ... ); 00091 00096 static void TimeWriteLineVF( const char* aFormat , va_list ); 00097 }; 00099 } 00100 00101 // 準備 00102 #if defined(XBASE_CONFIG_ENABLE_LOGSTR) 00103 #define XBASE_COUT_CORE(...) ::XBase::Console::WriteF( __VA_ARGS__ ) 00104 #else 00105 #define XBASE_COUT_CORE(...) do{}while(0) 00106 #endif 00107 00109 00110 00111 00112 00118 #define XBASE_COUT( ... ) XBASE_COUT_CORE( __VA_ARGS__ ) 00119 00126 #if defined(XBASE_CONFIG_ENABLE_LOGSTR) 00127 #define XBASE_COUT_TIME() ::XBase::Console::WriteTime() 00128 #else 00129 #define XBASE_COUT_TIME() do{}while(false) 00130 #endif 00131 00138 #if defined(XBASE_CONFIG_ENABLE_LOGSTR) 00139 #define XBASE_COUT_END_LINE() ::XBase::Console::WriteLineF("%s","") 00140 #else 00141 #define XBASE_COUT_END_LINE() do{}while(false) 00142 #endif 00143 00149 #define XBASE_COUTLINE( ... ) \ 00150 do \ 00151 { \ 00152 XBASE_COUT( __VA_ARGS__ ); \ 00153 XBASE_COUT_END_LINE(); \ 00154 } while(0) 00155 00161 #define XBASE_COUT_WITH_TIME( ... ) \ 00162 do \ 00163 { \ 00164 XBASE_COUT_TIME(); \ 00165 XBASE_COUT( __VA_ARGS__ ); \ 00166 } while(0) 00167 00173 #define XBASE_COUTLINE_WITH_TIME(...) \ 00174 do \ 00175 { \ 00176 XBASE_COUT_WITH_TIME( __VA_ARGS__ ); \ 00177 XBASE_COUT_END_LINE(); \ 00178 } while(0) 00179 00185 #define XBASE_CHECKPOINT() XBASE_COUTLINE_WITH_TIME( "%s at %lu\n" , __FILE__ , __LINE__ ) 00186 00193 #define XBASE_DUMP( aVal ) XBASE_COUTLINE_WITH_TIME( "%s : %s\n" , #aVal , XBASE_TO_SHORT_STRING( aVal ).readPtr() ) 00194 00196 00197 //------------------------------------------------------------ 00198 #endif 00199 // EOF