#ifndef RAW_MDCOUNTER_H_ #define RAW_MDCOUNTER_H_ #define MDIKNOWWHATIMDOING #include "../MdCommon/CommonMdCounter.h" #undef MDIKNOWWHATIMDOING #include "MdModule.h" namespace md { inline Counter::Iterator findModule(std::list &l, ID id) { Counter::Iterator it = l.begin(); for(; it != l.end() && id < it->GetId(); ++it); return it; } inline Counter::Counter() : fId(-1), fT3Delay( -1), fOffset(0), fWindow(255) {} inline Counter::Counter(ID id) : fId(id), fT3Delay( -1), fOffset(0), fWindow(255) {} inline void Counter::ClearModules() { fModList.clear(); } inline void Counter::DeleteModules() {} inline void Counter::AddModule (const Module &m) { Counter::Iterator i = findModule(fModList, m.GetId()); fModList.insert(i, m); } inline Module & Counter::MakeModule (ID id) { return GetModule(id); } inline Module & Counter::GetModule (ID id) { Counter::Iterator i = findModule(fModList, id); if (i != fModList.end() && i->GetId() == id) return *i; return *fModList.insert(i, Module(id)); } inline bool Counter::HasModule (const Module &m) { Counter::Iterator i = findModule(fModList, m.GetId()); bool res = (i != fModList.end() && i->GetId() == m.GetId()); if (!res) fModList.insert(i, m); return res; } } #endif /*#ifndef RAW_MDCOUNTER_H_*/