From 0726a5ffbc898a46c769e874fb9cc8efd17969cd Mon Sep 17 00:00:00 2001 From: Richard Roberts Date: Thu, 8 Aug 2013 16:30:02 +0000 Subject: [PATCH] Instantiating template base classes in derived class .cpp files --- gtsam/inference/FactorGraph.h | 4 ++-- gtsam/linear/GaussianBayesNet.cpp | 3 +++ gtsam/linear/GaussianBayesTree.cpp | 4 ++++ gtsam/linear/GaussianEliminationTree.cpp | 3 +++ gtsam/linear/GaussianFactorGraph.cpp | 4 ++++ gtsam/linear/GaussianISAM.cpp | 3 +++ gtsam/linear/GaussianJunctionTree.cpp | 3 +++ gtsam/symbolic/SymbolicBayesNet.cpp | 3 +++ gtsam/symbolic/SymbolicBayesTree.cpp | 4 ++++ gtsam/symbolic/SymbolicEliminationTree.cpp | 3 +++ gtsam/symbolic/SymbolicFactorGraph.cpp | 4 ++++ gtsam/symbolic/SymbolicISAM.cpp | 3 +++ gtsam/symbolic/SymbolicJunctionTree.cpp | 3 +++ 13 files changed, 42 insertions(+), 2 deletions(-) diff --git a/gtsam/inference/FactorGraph.h b/gtsam/inference/FactorGraph.h index 004303245..672fbdaef 100644 --- a/gtsam/inference/FactorGraph.h +++ b/gtsam/inference/FactorGraph.h @@ -335,10 +335,10 @@ namespace gtsam { void replace(size_t index, sharedFactor factor) { at(index) = factor; } /** Erase factor and rearrange other factors to take up the empty space */ - void erase(const_iterator item) { factors_.erase(item); } + void erase(iterator item) { factors_.erase(item); } /** Erase factors and rearrange other factors to take up the empty space */ - void erase(const_iterator first, const_iterator last) { factors_.erase(first, last); } + void erase(iterator first, iterator last) { factors_.erase(first, last); } /// @} /// @name Advanced Interface diff --git a/gtsam/linear/GaussianBayesNet.cpp b/gtsam/linear/GaussianBayesNet.cpp index 7e66d4ce3..8b3dc0084 100644 --- a/gtsam/linear/GaussianBayesNet.cpp +++ b/gtsam/linear/GaussianBayesNet.cpp @@ -30,6 +30,9 @@ using namespace gtsam; namespace gtsam { + // Instantiate base class + template class FactorGraph; + /* ************************************************************************* */ bool GaussianBayesNet::equals(const This& bn, double tol) const { diff --git a/gtsam/linear/GaussianBayesTree.cpp b/gtsam/linear/GaussianBayesTree.cpp index 688334918..63dcefeb7 100644 --- a/gtsam/linear/GaussianBayesTree.cpp +++ b/gtsam/linear/GaussianBayesTree.cpp @@ -26,6 +26,10 @@ namespace gtsam { + // Instantiate base class + template class BayesTreeCliqueBase; + template class BayesTree; + /* ************************************************************************* */ namespace internal { diff --git a/gtsam/linear/GaussianEliminationTree.cpp b/gtsam/linear/GaussianEliminationTree.cpp index 3979b7e6e..5933643bf 100644 --- a/gtsam/linear/GaussianEliminationTree.cpp +++ b/gtsam/linear/GaussianEliminationTree.cpp @@ -21,6 +21,9 @@ namespace gtsam { + // Instantiate base class + template class EliminationTree; + /* ************************************************************************* */ GaussianEliminationTree::GaussianEliminationTree( const GaussianFactorGraph& factorGraph, const VariableIndex& structure, diff --git a/gtsam/linear/GaussianFactorGraph.cpp b/gtsam/linear/GaussianFactorGraph.cpp index 2d0e47a47..3275409c2 100644 --- a/gtsam/linear/GaussianFactorGraph.cpp +++ b/gtsam/linear/GaussianFactorGraph.cpp @@ -35,6 +35,10 @@ using namespace gtsam; namespace gtsam { + // Instantiate base classes + template class FactorGraph; + template class EliminateableFactorGraph; + /* ************************************************************************* */ bool GaussianFactorGraph::equals(const This& fg, double tol) const { diff --git a/gtsam/linear/GaussianISAM.cpp b/gtsam/linear/GaussianISAM.cpp index dffc532c7..ddbc5c1b3 100644 --- a/gtsam/linear/GaussianISAM.cpp +++ b/gtsam/linear/GaussianISAM.cpp @@ -21,6 +21,9 @@ namespace gtsam { + // Instantiate base class + template class ISAM; + /* ************************************************************************* */ GaussianISAM::GaussianISAM() {} diff --git a/gtsam/linear/GaussianJunctionTree.cpp b/gtsam/linear/GaussianJunctionTree.cpp index 10cf8e11f..ae5f116c2 100644 --- a/gtsam/linear/GaussianJunctionTree.cpp +++ b/gtsam/linear/GaussianJunctionTree.cpp @@ -22,6 +22,9 @@ namespace gtsam { + // Instantiate base class + template class JunctionTree; + /* ************************************************************************* */ GaussianJunctionTree::GaussianJunctionTree( const GaussianEliminationTree& eliminationTree) : diff --git a/gtsam/symbolic/SymbolicBayesNet.cpp b/gtsam/symbolic/SymbolicBayesNet.cpp index 179e99c0c..c5a04eb0d 100644 --- a/gtsam/symbolic/SymbolicBayesNet.cpp +++ b/gtsam/symbolic/SymbolicBayesNet.cpp @@ -24,6 +24,9 @@ namespace gtsam { + // Instantiate base class + template class FactorGraph; + /* ************************************************************************* */ bool SymbolicBayesNet::equals(const This& bn, double tol) const { diff --git a/gtsam/symbolic/SymbolicBayesTree.cpp b/gtsam/symbolic/SymbolicBayesTree.cpp index 1779964ad..f6665c39b 100644 --- a/gtsam/symbolic/SymbolicBayesTree.cpp +++ b/gtsam/symbolic/SymbolicBayesTree.cpp @@ -27,6 +27,10 @@ namespace gtsam { + // Instantiate base classes + template class BayesTreeCliqueBase; + template class BayesTree; + /* ************************************************************************* */ SymbolicBayesTree::SymbolicBayesTree(const SymbolicBayesTree& other) : Base(other) {} diff --git a/gtsam/symbolic/SymbolicEliminationTree.cpp b/gtsam/symbolic/SymbolicEliminationTree.cpp index e01d04bd6..588983a79 100644 --- a/gtsam/symbolic/SymbolicEliminationTree.cpp +++ b/gtsam/symbolic/SymbolicEliminationTree.cpp @@ -21,6 +21,9 @@ namespace gtsam { + // Instantiate base class + template class EliminationTree; + /* ************************************************************************* */ SymbolicEliminationTree::SymbolicEliminationTree( const SymbolicFactorGraph& factorGraph, const VariableIndex& structure, diff --git a/gtsam/symbolic/SymbolicFactorGraph.cpp b/gtsam/symbolic/SymbolicFactorGraph.cpp index ff34b27e0..270930472 100644 --- a/gtsam/symbolic/SymbolicFactorGraph.cpp +++ b/gtsam/symbolic/SymbolicFactorGraph.cpp @@ -27,6 +27,10 @@ namespace gtsam { + // Instantiate base classes + template class FactorGraph; + template class EliminateableFactorGraph; + using namespace std; /* ************************************************************************* */ diff --git a/gtsam/symbolic/SymbolicISAM.cpp b/gtsam/symbolic/SymbolicISAM.cpp index f53b96754..d7af82e5c 100644 --- a/gtsam/symbolic/SymbolicISAM.cpp +++ b/gtsam/symbolic/SymbolicISAM.cpp @@ -21,6 +21,9 @@ namespace gtsam { + // Instantiate base class + template class ISAM; + /* ************************************************************************* */ SymbolicISAM::SymbolicISAM() {} diff --git a/gtsam/symbolic/SymbolicJunctionTree.cpp b/gtsam/symbolic/SymbolicJunctionTree.cpp index ca4f82deb..4b3aadf53 100644 --- a/gtsam/symbolic/SymbolicJunctionTree.cpp +++ b/gtsam/symbolic/SymbolicJunctionTree.cpp @@ -22,6 +22,9 @@ namespace gtsam { + // Instantiate base class + template class JunctionTree; + /* ************************************************************************* */ SymbolicJunctionTree::SymbolicJunctionTree( const SymbolicEliminationTree& eliminationTree) :