diff --git a/gtsam/inference/FactorGraph.h b/gtsam/inference/FactorGraph.h index df684d7d2..96786b88f 100644 --- a/gtsam/inference/FactorGraph.h +++ b/gtsam/inference/FactorGraph.h @@ -83,18 +83,26 @@ template class BayesTree; /** convert from a derived type */ template - FactorGraph(const FactorGraph& factors) { factors_.insert(end(), factors.begin(), factors.end()); } + FactorGraph(const FactorGraph& factors) { + factors_.insert(end(), factors.begin(), factors.end()); + } /** Add a factor */ template - void push_back(const boost::shared_ptr& factor) { factors_.push_back(sharedFactor(factor)); } + void push_back(const boost::shared_ptr& factor) { + factors_.push_back(boost::shared_ptr(factor)); + } /** push back many factors */ - void push_back(const FactorGraph& factors) { factors_.insert(end(), factors.begin(), factors.end()); } + void push_back(const FactorGraph& factors) { + factors_.insert(end(), factors.begin(), factors.end()); + } /** push back many factors with an iterator */ template - void push_back(ITERATOR firstFactor, ITERATOR lastFactor) { factors_.insert(end(), firstFactor, lastFactor); } + void push_back(ITERATOR firstFactor, ITERATOR lastFactor) { + factors_.insert(end(), firstFactor, lastFactor); + } /** push back many factors stored in a vector*/ template diff --git a/gtsam/linear/GaussianFactorGraph.h b/gtsam/linear/GaussianFactorGraph.h index 3ec8a78f0..f48f7f13f 100644 --- a/gtsam/linear/GaussianFactorGraph.h +++ b/gtsam/linear/GaussianFactorGraph.h @@ -25,6 +25,7 @@ #include #include +#include #include #include @@ -84,22 +85,32 @@ namespace gtsam { push_back(fg); } + /** Add a Jacobian factor */ + void add(const boost::shared_ptr& factor) { + factors_.push_back(boost::shared_ptr(factor)); + } + + /** Add a Hessian factor */ + void add(const boost::shared_ptr& factor) { + factors_.push_back(boost::shared_ptr(factor)); + } + /** Add a null factor */ void add(const Vector& b) { - push_back(sharedFactor(new JacobianFactor(b))); + add(JacobianFactor::shared_ptr(new JacobianFactor(b))); } /** Add a unary factor */ void add(Index key1, const Matrix& A1, const Vector& b, const SharedDiagonal& model) { - push_back(sharedFactor(new JacobianFactor(key1,A1,b,model))); + add(JacobianFactor::shared_ptr(new JacobianFactor(key1,A1,b,model))); } /** Add a binary factor */ void add(Index key1, const Matrix& A1, Index key2, const Matrix& A2, const Vector& b, const SharedDiagonal& model) { - push_back(sharedFactor(new JacobianFactor(key1,A1,key2,A2,b,model))); + add(JacobianFactor::shared_ptr(new JacobianFactor(key1,A1,key2,A2,b,model))); } /** Add a ternary factor */ @@ -107,13 +118,13 @@ namespace gtsam { Index key2, const Matrix& A2, Index key3, const Matrix& A3, const Vector& b, const SharedDiagonal& model) { - push_back(sharedFactor(new JacobianFactor(key1,A1,key2,A2,key3,A3,b,model))); + add(JacobianFactor::shared_ptr(new JacobianFactor(key1,A1,key2,A2,key3,A3,b,model))); } /** Add an n-ary factor */ void add(const std::vector > &terms, const Vector &b, const SharedDiagonal& model) { - push_back(sharedFactor(new JacobianFactor(terms,b,model))); + add(JacobianFactor::shared_ptr(new JacobianFactor(terms,b,model))); } /**