diff --git a/cpp/BayesTree.h b/cpp/BayesTree.h index bf97f556e..6d343b2d4 100644 --- a/cpp/BayesTree.h +++ b/cpp/BayesTree.h @@ -31,33 +31,37 @@ namespace gtsam { typedef boost::shared_ptr conditional_ptr; - private: - /** A Node in the tree is an incomplete Bayes net: the variables * in the Bayes net are the frontal nodes, and the variables conditioned * on is the separator. We also have pointers up and down the tree. */ - struct Node : public BayesNet { + struct Node: public BayesNet { + typedef boost::shared_ptr shared_ptr; shared_ptr parent_; std::list separator_; /** separator keys */ std::list children_; //* Constructor */ - Node(const boost::shared_ptr& conditional); + Node(const conditional_ptr& conditional); /** The size *includes* the separator */ - size_t size() const { return this->conditionals_.size() + separator_.size(); } + size_t size() const { + return this->conditionals_.size() + separator_.size(); + } /** print this node */ - void print(const std::string& s="Bayes tree node") const; + void print(const std::string& s = "Bayes tree node") const; /** print this node and entire subtree below it*/ void printTree(const std::string& indent) const; }; - /** Map from keys to Node */ typedef boost::shared_ptr node_ptr; + + private: + + /** Map from keys to Node */ typedef std::map Nodes; Nodes nodes_; @@ -65,7 +69,8 @@ namespace gtsam { node_ptr root_; /** add a clique */ - node_ptr addClique(const conditional_ptr& conditional, node_ptr parent_clique=node_ptr()); + node_ptr addClique(const conditional_ptr& conditional, + node_ptr parent_clique = node_ptr()); public: @@ -76,7 +81,8 @@ namespace gtsam { BayesTree(const BayesNet& bayesNet); /** Destructor */ - virtual ~BayesTree() {} + virtual ~BayesTree() { + } /** print */ void print(const std::string& s = "") const; @@ -85,26 +91,30 @@ namespace gtsam { bool equals(const BayesTree& other, double tol = 1e-9) const; /** insert a new conditional */ - void insert(const boost::shared_ptr& conditional); + void insert(const conditional_ptr& conditional); - /** number of cliques */ - inline size_t size() const { return nodes_.size();} + /** number of cliques */ + inline size_t size() const { + return nodes_.size(); + } /** return root clique */ - boost::shared_ptr > root() const {return root_;} + node_ptr root() const { + return root_; + } /** find the clique to which key belongs */ node_ptr operator[](const std::string& key) const { typename Nodes::const_iterator it = nodes_.find(key); - if (it == nodes_.end()) - throw(std::invalid_argument("BayesTree::operator['"+ key + "'): key not found")); + if (it == nodes_.end()) throw(std::invalid_argument( + "BayesTree::operator['" + key + "'): key not found")); node_ptr clique = it->second; return clique; } /** return marginal on any variable */ template - boost::shared_ptr marginal(const std::string& key) const; + conditional_ptr marginal(const std::string& key) const; }; // BayesTree