See
- The definition simlogger.h
- The description Loggers
<project-file type=“source”/>
<content> #include <simlogger.h>
SimLogger::SimLogger() { }
SimLogger::~SimLogger() { }
std::list<SimEventLogger*> SimStreamLogger::EventLoggers;
SimStreamLogger::SimStreamLogger(std::ostream &stream) : Stream(stream) { }
SimStreamLogger::~SimStreamLogger() { }
void SimStreamLogger::registerEventLogger(SimEventLogger *logger) {
if (logger == NULL) return; std::list<SimEventLogger*>::iterator i; for (i = EventLoggers.begin(); i != EventLoggers.end() && *i != logger; i++); if (i == EventLoggers.end()) EventLoggers.push_back(logger);
}
void SimStreamLogger::unregisterEventLogger(SimEventLogger *logger) {
if (logger == NULL) return; std::list<SimEventLogger*>::iterator i; for (i = EventLoggers.begin(); i != EventLoggers.end() && *i != logger; i++); if (i != EventLoggers.end()) EventLoggers.erase(i);
}
void SimStreamLogger::log(float time, SimAgent *agent, SimSchedule *event) {
std::list<SimEventLogger*>::iterator i; for (i = EventLoggers.begin(); i != EventLoggers.end(); i++) if ((*i)->loggable(event)) (*i)->log(Stream, time, agent, event);
}
SimFileLogger::SimFileLogger(const char * FileName) : SimStreamLogger(FStream) {
FStream.open(FileName);
}
SimFileLogger::~SimFileLogger() {
FStream.close();
}
SimConditionalLogger::SimConditionalLogger(SimLogger *truepipe, SimLogger *falsepipe) {
TruePipe = truepipe; FalsePipe = falsepipe;
}
SimConditionalLogger::~SimConditionalLogger() {
if (TruePipe != NULL) delete TruePipe; if (FalsePipe != NULL) delete FalsePipe;
}
void SimConditionalLogger::log(float time, SimAgent *agent, SimSchedule *event) {
if (condition(time, agent, event)) { if (TruePipe!=NULL) TruePipe->log(time, agent, event); } else { if (FalsePipe!=NULL) FalsePipe->log(time, agent, event); }
}
SimLoggerList::SimLoggerList() { }
SimLoggerList::~SimLoggerList() {
std::list<SimLogger*>::iterator i; for (i = Loggers.begin(); i != Loggers.end(); i++) delete *i;
}
void SimLoggerList::log(float time, SimAgent *agent, SimSchedule *event) {
std::list<SimLogger*>::iterator i; for (i = Loggers.begin(); i != Loggers.end(); i++) (*i)->log(time, agent, event);
}
void SimLoggerList::addLogger(SimLogger *logger) {
if (logger == NULL) return; std::list<SimLogger*>::iterator i; for (i = Loggers.begin(); i != Loggers.end() && *i != logger; i++); if (i == Loggers.end()) Loggers.push_back(logger);
}
void SimLoggerList::removeLogger(SimLogger *logger) {
if (logger == NULL) return; std::list<SimLogger*>::iterator i; for (i = Loggers.begin(); i != Loggers.end() && *i != logger; i++); if (i != Loggers.end()) Loggers.erase(i);
} </content> <use name=“simlogger.h”/>