#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using std::map; using std::string; DistTab::DistTab() { insert(new DBern); insert(new DBeta); insert(new DBin); insert(new DCat); insert(new DChisqr); insert(new DDexp); insert(new DDirch); insert(new DExp); insert(new DGamma); insert(new DInterval); insert(new DLnorm); insert(new DLogis); insert(new DMNorm); insert(new DMState); insert(new DMulti); insert(new DNegBin); insert(new DNorm); insert(new DPar); insert(new DPois); insert(new DT); insert(new DUnif); insert(new DWeib); insert(new DWish); insert(new DHyper); insert(new DSum); insert(new DNormMix); } DistTab::~DistTab() { map::iterator p; for (p = _table.begin(); p != _table.end(); ++p) { delete p->second; } } bool DistTab::insert(Distribution const *dist) { string const &name = dist->name(); if (_table.find(name) == _table.end()) { _table[name] = dist; return true; } else { return false; } } bool DistTab::erase(string const &name) { map::iterator p = _table.find(name); if (p == _table.end()) { return false; } else { _table.erase(p); return true; } } Distribution const *DistTab::find(string const &name) const { map::const_iterator p = _table.find(name); if (p == _table.end()) return 0; else return p->second; }