/** * @file BayesNet-inl.h * @brief Bayes net template definitions * @author Frank Dellaert */ #include #include #include #include // for += using namespace boost::assign; #include "Ordering.h" #include "BayesNet.h" #include "FactorGraph-inl.h" using namespace std; namespace gtsam { /* ************************************************************************* */ template void BayesNet::print(const string& s) const { cout << s << ":\n"; std::string key; BOOST_FOREACH(sharedConditional conditional,conditionals_) conditional->print("Node[" + conditional->key() + "]"); } /* ************************************************************************* */ template bool BayesNet::equals(const BayesNet& cbn, double tol) const { if(size() != cbn.size()) return false; return equal(conditionals_.begin(),conditionals_.end(),cbn.conditionals_.begin(),equals_star(tol)); } /* ************************************************************************* */ template void BayesNet::push_back(const BayesNet bn) { BOOST_FOREACH(sharedConditional conditional,bn.conditionals_) push_back(conditional); } /* ************************************************************************* */ template void BayesNet::push_front(const BayesNet bn) { BOOST_FOREACH(sharedConditional conditional,bn.conditionals_) push_front(conditional); } /* ************************************************************************* */ template Ordering BayesNet::ordering() const { Ordering ord; BOOST_FOREACH(sharedConditional conditional,conditionals_) ord.push_back(conditional->key()); return ord; } /* ************************************************************************* */ template typename BayesNet::sharedConditional BayesNet::operator[](const std::string& key) const { const_iterator it = find_if(conditionals_.begin(),conditionals_.end(),onKey(key)); if (it == conditionals_.end()) throw(invalid_argument( "BayesNet::operator['"+key+"']: not found")); return *it; } /* ************************************************************************* */ } // namespace gtsam