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( aFmt , ...) ::XBase::Console::WriteF( aFmt , __VA_ARGS__ ) 00104 #else 00105 #define XBASE_COUT_CORE( aFmt , ...) do{}while(0) 00106 #endif 00107 00109 00110 00111 00112 00118 #define XBASE_COUT( aStr ) XBASE_COUT_CORE( "%s" , aStr ) 00119 00125 #define XBASE_COUTFMT( aFmt , ... ) XBASE_COUT_CORE( aFmt , __VA_ARGS__ ) 00126 00133 #if defined(XBASE_CONFIG_ENABLE_LOGSTR) 00134 #define XBASE_COUT_TIME() ::XBase::Console::WriteTime() 00135 #else 00136 #define XBASE_COUT_TIME() do{}while(false) 00137 #endif 00138 00145 #if defined(XBASE_CONFIG_ENABLE_LOGSTR) 00146 #define XBASE_COUT_END_LINE() ::XBase::Console::WriteLineF("%s","") 00147 #else 00148 #define XBASE_COUT_END_LINE() do{}while(false) 00149 #endif 00150 00156 #define XBASE_COUT_LINE( aStr ) \ 00157 do \ 00158 { \ 00159 XBASE_COUT( aStr ); \ 00160 XBASE_COUT_END_LINE(); \ 00161 } while(0) 00162 00168 #define XBASE_COUTFMT_LINE( ... ) \ 00169 do \ 00170 { \ 00171 XBASE_COUTFMT( __VA_ARGS__ ); \ 00172 XBASE_COUT_END_LINE(); \ 00173 } while(0) 00174 00180 #define XBASE_COUT_WITH_TIME( aStr ) \ 00181 do \ 00182 { \ 00183 XBASE_COUT_TIME(); \ 00184 XBASE_COUT( aStr ); \ 00185 } while(0) 00186 00192 #define XBASE_COUTFMT_WITH_TIME( ... ) \ 00193 do \ 00194 { \ 00195 XBASE_COUT_TIME(); \ 00196 XBASE_COUTFMT( __VA_ARGS__ ); \ 00197 } while(0) 00198 00204 #define XBASE_COUT_LINE_WITH_TIME( aStr ) \ 00205 do \ 00206 { \ 00207 XBASE_COUT_WITH_TIME( aStr ); \ 00208 XBASE_COUT_END_LINE(); \ 00209 } while(0) 00210 00216 #define XBASE_COUTFMT_LINE_WITH_TIME(...) \ 00217 do \ 00218 { \ 00219 XBASE_COUTFMT_WITH_TIME( __VA_ARGS__ ); \ 00220 XBASE_COUT_END_LINE(); \ 00221 } while(0) 00222 00228 #define XBASE_CHECKPOINT() XBASE_COUTFMT_LINE_WITH_TIME( "%s at %lu\n" , __FILE__ , __LINE__ ) 00229 00236 #define XBASE_DUMP( aVal ) XBASE_COUTFMT_LINE_WITH_TIME( "%s : %s\n" , #aVal , XBASE_TO_SHORT_STRING( aVal ).readPtr() ) 00237 00239 00240 //------------------------------------------------------------ 00241 #endif 00242 // EOF