diff --git a/gtsam/inference/VariableSlots.cpp b/gtsam/inference/VariableSlots.cpp index b1519c120..783071ae2 100644 --- a/gtsam/inference/VariableSlots.cpp +++ b/gtsam/inference/VariableSlots.cpp @@ -24,6 +24,8 @@ using namespace std; namespace gtsam { +const size_t VariableSlots::Empty = numeric_limits::max(); + /** print */ void VariableSlots::print(const std::string& str) const { if(this->empty()) @@ -37,7 +39,7 @@ void VariableSlots::print(const std::string& str) const { for(size_t i=0; ibegin()->second.size(); ++i) { cout << " \t"; BOOST_FOREACH(const value_type& slot, *this) { - if(slot.second[i] == numeric_limits::max()) + if(slot.second[i] == Empty) cout << "x" << "\t"; else cout << slot.second[i] << "\t"; diff --git a/gtsam/inference/VariableSlots.h b/gtsam/inference/VariableSlots.h index a2ed9e5f1..d393b61b1 100644 --- a/gtsam/inference/VariableSlots.h +++ b/gtsam/inference/VariableSlots.h @@ -55,6 +55,7 @@ class VariableSlots : public FastMap > { public: typedef FastMap > Base; + static const size_t Empty; /// @name Standard Constructors /// @{ @@ -108,7 +109,7 @@ VariableSlots::VariableSlots(const FG& factorGraph) iterator thisVarSlots; bool inserted; boost::tie(thisVarSlots, inserted) = this->insert(std::make_pair(involvedVariable, FastVector())); if(inserted) - thisVarSlots->second.resize(factorGraph.size(), std::numeric_limits::max()); + thisVarSlots->second.resize(factorGraph.size(), Empty); thisVarSlots->second[jointFactorPos] = factorVarSlot; if(debug) std::cout << " var " << involvedVariable << " rowblock " << jointFactorPos << " comes from factor's slot " << factorVarSlot << std::endl; ++ factorVarSlot; diff --git a/gtsam/linear/JacobianFactor.cpp b/gtsam/linear/JacobianFactor.cpp index 61170129e..139f726bd 100644 --- a/gtsam/linear/JacobianFactor.cpp +++ b/gtsam/linear/JacobianFactor.cpp @@ -158,7 +158,7 @@ namespace gtsam { for(size_t sourceFactorI = 0; sourceFactorI < slots->second.size(); ++sourceFactorI) { const size_t sourceVarpos = slots->second[sourceFactorI]; - if(sourceVarpos < numeric_limits::max()) { + if(sourceVarpos != VariableSlots::Empty) { const JacobianFactor& sourceFactor = *factors[sourceFactorI]; if(sourceFactor.cols() > 1) { foundVariable = true; @@ -303,7 +303,7 @@ namespace gtsam { if(sourceRows > 0) { JacobianFactor::ABlock::RowsBlockXpr destBlock(destSlot.middleRows(nextRow, sourceRows)); // Copy if exists in source factor, otherwise set zero - if(sourceSlot != numeric_limits::max()) + if(sourceSlot != VariableSlots::Empty) destBlock = jacobians[factorI]->getA(jacobians[factorI]->begin()+sourceSlot); else destBlock.setZero();