www.pudn.com > zfxcengine-0.1.0.zip > ceLogDomain.cpp


/* $Id: ceLogDomain.cpp,v 1.3 2005/07/03 17:01:44 andreaskohn Exp $ */ 
#include  
#include  
 
namespace ZFXCE { 
namespace Logging { 
 
using std::make_pair; 
 
//////////////////////////////////////////////////////////////////////////////// 
ceLogDomain::ceLogDomain(string domain) : _domain(domain) { 
	// Disable all levels, define empty lists of streams. 
	for (ceLogLevel i = LOG_DEBUG; i < LOG_NUMLEVELS; i++) { 
		_streams[i] = make_pair(false, list()); 
	} 
} 
////////////////////////////////////////////////////////////////////////////////	 
string ceLogDomain::getDomain() const { 
	return _domain; 
} 
//////////////////////////////////////////////////////////////////////////////// 
void ceLogDomain::attachStream(const ceLogLevel& level, ceLogStream* stream) { 
	ceLogStreamList streams = _streams[level].second; 
	streams.push_back(stream); 
	_streams[level] = make_pair(_streams[level].first, streams); 
} 
//////////////////////////////////////////////////////////////////////////////// 
void ceLogDomain::removeStream(const ceLogLevel& level, ceLogStream* stream) { 
	ceLogStreamList newStreams = _streams[level].second; 
	newStreams.remove(stream); 
	_streams[level] = make_pair(_streams[level].first, newStreams); 
} 
//////////////////////////////////////////////////////////////////////////////// 
void ceLogDomain::enableLevel(const ceLogLevel& level, bool enable) { 
	_streams[level] = make_pair(enable, _streams[level].second); 
} 
//////////////////////////////////////////////////////////////////////////////// 
bool ceLogDomain::isLevelEnabled(const ceLogLevel& level) { 
	return _streams[level].first && !ceLogConfig::getAllDisabled(); 
} 
//////////////////////////////////////////////////////////////////////////////// 
ceLogStreamList ceLogDomain::getStreams(const ceLogLevel& level, bool includeDefault) { 
	ceLogStreamList streams = _streams[level].second; 
	if (includeDefault) { 
		streams.insert( 
			streams.begin(),  
			ceLogConfig::getDefaultDomain()._streams[level].second.begin(),  
			ceLogConfig::getDefaultDomain()._streams[level].second.end()); 
	} 
	return streams; 
} 
//////////////////////////////////////////////////////////////////////////////// 
} // namespace Logging 
} // namespace ZFXCE