OpenWalnut
1.4.0
|
00001 //--------------------------------------------------------------------------- 00002 // 00003 // Project: OpenWalnut ( http://www.openwalnut.org ) 00004 // 00005 // Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS 00006 // For more information see http://www.openwalnut.org/copying 00007 // 00008 // This file is part of OpenWalnut. 00009 // 00010 // OpenWalnut is free software: you can redistribute it and/or modify 00011 // it under the terms of the GNU Lesser General Public License as published by 00012 // the Free Software Foundation, either version 3 of the License, or 00013 // (at your option) any later version. 00014 // 00015 // OpenWalnut is distributed in the hope that it will be useful, 00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 // GNU Lesser General Public License for more details. 00019 // 00020 // You should have received a copy of the GNU Lesser General Public License 00021 // along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>. 00022 // 00023 //--------------------------------------------------------------------------- 00024 00025 #include <iostream> 00026 #include <fstream> 00027 #include <string> 00028 00029 #include "core/common/WAssert.h" 00030 #include "core/common/WLogger.h" 00031 #include "core/common/WLogStream.h" 00032 00033 #include "WLoggerWrapper.h" 00034 00035 WLoggerWrapper::WLoggerWrapper() 00036 { 00037 } 00038 00039 WLoggerWrapper::WLoggerWrapper( WLogger* logger ) 00040 { 00041 WAssert( logger, "Null pointer" ); 00042 m_logger = logger; 00043 } 00044 00045 WLoggerWrapper::~WLoggerWrapper() 00046 { 00047 removeAllFileStreams(); 00048 } 00049 00050 void WLoggerWrapper::removeFileStreamNumber( size_t i ) 00051 { 00052 m_logger->removeStream( m_fileStreamList[ i ].m_WLogStream ); 00053 m_fileStreamList.erase( m_fileStreamList.begin() + i ); 00054 } 00055 00056 bool WLoggerWrapper::addFileStream( std::string filename ) 00057 { 00058 boost::shared_ptr< std::ofstream > fileStream( new std::ofstream( filename.c_str() ) ); 00059 if( !fileStream ) 00060 { 00061 return false; 00062 } 00063 FileStreamEntry newEntry; 00064 newEntry.m_filename = filename; 00065 newEntry.m_fileStream = fileStream; 00066 newEntry.m_WLogStream = WLogStream::SharedPtr( new WLogStream( *fileStream ) ); 00067 m_fileStreamList.push_back( newEntry ); 00068 m_logger->addStream( newEntry.m_WLogStream ); 00069 return true; 00070 } 00071 00072 bool WLoggerWrapper::removeFileStream( std::string filename ) 00073 { 00074 for( size_t i = 0; i < m_fileStreamList.size(); ++i ) 00075 { 00076 if( filename == m_fileStreamList[ i ].m_filename ) 00077 { 00078 removeFileStreamNumber( i ); 00079 return true; 00080 } 00081 } 00082 return false; 00083 } 00084 00085 void WLoggerWrapper::removeAllFileStreams() 00086 { 00087 for( size_t i = 0; i < m_fileStreamList.size(); ++i ) 00088 { 00089 removeFileStreamNumber( i ); 00090 } 00091 }