/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2011, Tomasz Sowa * All rights reserved. * */ #include "slog.h" SLog::SLog() { cur = 0; locale = 0; } void SLog::SetCur(Cur * pcur) { cur = pcur; } void SLog::SetLocale(Locale * plocale) { locale = plocale; } SLog & SLog::operator<<(const void * s) { return PutLog(s); } SLog & SLog::operator<<(const char * s) { return PutLog(s); } SLog & SLog::operator<<(const std::string * s) { return PutLog(s); } SLog & SLog::operator<<(const std::string & s) { return PutLog(s); } SLog & SLog::operator<<(const wchar_t * s) { return PutLog(s); } SLog & SLog::operator<<(const std::wstring * s) { return PutLog(s); } SLog & SLog::operator<<(const std::wstring & s) { return PutLog(s); } SLog & SLog::operator<<(int s) { return PutLog(s); } SLog & SLog::operator<<(long s) { return PutLog(s); } SLog & SLog::operator<<(char s) { return PutLog(s); } SLog & SLog::operator<<(wchar_t s) { return PutLog(s); } SLog & SLog::operator<<(size_t s) { return PutLog(s); } SLog & SLog::operator<<(double s) { return PutLog(s); } SLog & SLog::operator<<(LogManipulators m) { if( cur && cur->session ) { TextStream & buf = cur->session->log_buffer; switch(m) { case logend: buf << '\n'; if( buf.Size() > WINIX_SLOG_MAX_LOG_SIZE ) { buf.Clear(); (*this) << logwarning << T("slog_turn_over") << " " << WINIX_SLOG_MAX_LOG_SIZE << logend; } break; case loginfo: case logwarning: case logerror: buf << (wchar_t)(int)m; break; default: break; } } return *this; } SLog & SLog::TranslateText(const char * str) { AssignString(str, key_temp); return TranslateText(key_temp.c_str()); } SLog & SLog::TranslateText(const wchar_t * str) { if( cur && cur->session ) { const std::wstring * trans = 0; if( locale ) trans = &locale->Get(str); // !! IMPROVE ME "Not translated" add to locale if( !trans || trans->empty() ) cur->session->log_buffer << "Not translated: " << str; else cur->session->log_buffer << trans; } return *this; } SLog & SLog::operator<<(const TranslateTextHelper & raw) { return TranslateText(raw.par); } SLog & SLog::operator<<(const TranslateTextHelper & raw) { return TranslateText(raw.par); } SLog & SLog::operator<<(TranslateTextHelper raw) { return TranslateText(raw.par->c_str()); } SLog & SLog::operator<<(TranslateTextHelper raw) { return TranslateText(raw.par->c_str()); } SLog & SLog::operator<<(TranslateTextHelper raw) { return TranslateText(raw.par.c_str()); } SLog & SLog::operator<<(TranslateTextHelper raw) { return TranslateText(raw.par.c_str()); }