| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | 
							- #include "StdInc.h"
 
- #include "CLogger.h"
 
- // Console, file definitions
 
- DLL_LINKAGE CConsoleHandler *console = NULL;
 
- DLL_LINKAGE std::ostream *logfile = NULL;
 
- // CLogger definitions
 
- DLL_LINKAGE CLogger tlog0(0);
 
- DLL_LINKAGE CLogger tlog1(1);
 
- DLL_LINKAGE CLogger tlog2(2);
 
- DLL_LINKAGE CLogger tlog3(3);
 
- DLL_LINKAGE CLogger tlog4(4);
 
- DLL_LINKAGE CLogger tlog5(5);
 
- DLL_LINKAGE CLogger tlog6(-2);
 
- // Logging level settings
 
- const int CLogger::CONSOLE_LOGGING_LEVEL = 5;
 
- const int CLogger::FILE_LOGGING_LEVEL = 6;
 
- CLogger::CLogger(const int Lvl) : lvl(Lvl)
 
- {
 
- #ifdef ANDROID
 
- 	androidloglevel = ANDROID_LOG_INFO;
 
- 	switch(lvl) {
 
- case 0: androidloglevel = ANDROID_LOG_INFO; break;
 
- case 1: androidloglevel = ANDROID_LOG_FATAL; break;
 
- case 2: androidloglevel = ANDROID_LOG_ERROR; break;
 
- case 3: androidloglevel = ANDROID_LOG_WARN; break;
 
- case 4: androidloglevel = ANDROID_LOG_INFO; break;
 
- case 5: androidloglevel = ANDROID_LOG_DEBUG; break;
 
- case 6: case -2: androidloglevel = ANDROID_LOG_VERBOSE; break;
 
- 	}
 
- #endif
 
- }
 
- #ifdef ANDROID
 
- void CLogger::outputAndroid()
 
- {
 
- 	int pos = buf.str().find("\n");
 
- 	while( pos >= 0 )
 
- 	{
 
- 		__android_log_print(androidloglevel, "VCMI", "%s", buf.str().substr(0, pos).c_str() );
 
- 		buf.str( buf.str().substr(pos+1) );
 
- 		pos = buf.str().find("\n");
 
- 	}
 
- }
 
- #endif
 
- CLogger& CLogger::operator<<(std::ostream& (*fun)(std::ostream&))
 
- {
 
- #ifdef ANDROID
 
- 	buf << fun;
 
- 	outputAndroid();
 
- #else
 
- 	if(lvl < CLogger::CONSOLE_LOGGING_LEVEL)
 
- 		std::cout << fun;
 
- 	if((lvl < CLogger::FILE_LOGGING_LEVEL) && logfile)
 
- 		*logfile << fun;
 
- #endif
 
- 	return *this;
 
- }
 
 
  |