Removed useless typedef, add empty()
parent
bf904f9ff8
commit
0a95ac292f
|
@ -98,7 +98,7 @@ namespace gtsam {
|
||||||
for (size_t j = 0; j < n; j++)
|
for (size_t j = 0; j < n; j++)
|
||||||
{
|
{
|
||||||
// Retrieve the factors involving this variable and create the current node
|
// Retrieve the factors involving this variable and create the current node
|
||||||
const VariableIndex::Factors& factors = structure[order[j]];
|
const FactorIndices& factors = structure[order[j]];
|
||||||
const sharedNode node = boost::make_shared<Node>();
|
const sharedNode node = boost::make_shared<Node>();
|
||||||
node->key = order[j];
|
node->key = order[j];
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ Ordering Ordering::ColamdConstrained(const VariableIndex& variableIndex,
|
||||||
size_t index = 0;
|
size_t index = 0;
|
||||||
for (auto key_factors: variableIndex) {
|
for (auto key_factors: variableIndex) {
|
||||||
// Arrange factor indices into COLAMD format
|
// Arrange factor indices into COLAMD format
|
||||||
const VariableIndex::Factors& column = key_factors.second;
|
const FactorIndices& column = key_factors.second;
|
||||||
for(size_t factorIndex: column) {
|
for(size_t factorIndex: column) {
|
||||||
A[count++] = (int) factorIndex; // copy sparse column
|
A[count++] = (int) factorIndex; // copy sparse column
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,8 +67,8 @@ void VariableIndex::remove(ITERATOR firstFactor, ITERATOR lastFactor,
|
||||||
"Internal error, requested inconsistent number of factor indices and factors in VariableIndex::remove");
|
"Internal error, requested inconsistent number of factor indices and factors in VariableIndex::remove");
|
||||||
if (factors[i]) {
|
if (factors[i]) {
|
||||||
for(Key j: *factors[i]) {
|
for(Key j: *factors[i]) {
|
||||||
Factors& factorEntries = internalAt(j);
|
FactorIndices& factorEntries = internalAt(j);
|
||||||
Factors::iterator entry = std::find(factorEntries.begin(),
|
auto entry = std::find(factorEntries.begin(),
|
||||||
factorEntries.end(), *factorIndex);
|
factorEntries.end(), *factorIndex);
|
||||||
if (entry == factorEntries.end())
|
if (entry == factorEntries.end())
|
||||||
throw std::invalid_argument(
|
throw std::invalid_argument(
|
||||||
|
|
|
@ -41,26 +41,22 @@ namespace gtsam {
|
||||||
* \nosubgrouping
|
* \nosubgrouping
|
||||||
*/
|
*/
|
||||||
class GTSAM_EXPORT VariableIndex {
|
class GTSAM_EXPORT VariableIndex {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
typedef boost::shared_ptr<VariableIndex> shared_ptr;
|
typedef boost::shared_ptr<VariableIndex> shared_ptr;
|
||||||
typedef FactorIndices Factors;
|
typedef FactorIndices::iterator Factor_iterator;
|
||||||
typedef Factors::iterator Factor_iterator;
|
typedef FactorIndices::const_iterator Factor_const_iterator;
|
||||||
typedef Factors::const_iterator Factor_const_iterator;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
typedef FastMap<Key,Factors> KeyMap;
|
typedef FastMap<Key, FactorIndices> KeyMap;
|
||||||
KeyMap index_;
|
KeyMap index_;
|
||||||
size_t nFactors_; // Number of factors in the original factor graph.
|
size_t nFactors_; // Number of factors in the original factor graph.
|
||||||
size_t nEntries_; // Sum of involved variable counts of each factor.
|
size_t nEntries_; // Sum of involved variable counts of each factor.
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef KeyMap::const_iterator const_iterator;
|
typedef KeyMap::const_iterator const_iterator;
|
||||||
typedef KeyMap::const_iterator iterator;
|
typedef KeyMap::const_iterator iterator;
|
||||||
typedef KeyMap::value_type value_type;
|
typedef KeyMap::value_type value_type;
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
/// @name Standard Constructors
|
/// @name Standard Constructors
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
|
@ -71,8 +67,10 @@ public:
|
||||||
* Create a VariableIndex that computes and stores the block column structure
|
* Create a VariableIndex that computes and stores the block column structure
|
||||||
* of a factor graph.
|
* of a factor graph.
|
||||||
*/
|
*/
|
||||||
template<class FG>
|
template <class FG>
|
||||||
VariableIndex(const FG& factorGraph) : nFactors_(0), nEntries_(0) { augment(factorGraph); }
|
explicit VariableIndex(const FG& factorGraph) : nFactors_(0), nEntries_(0) {
|
||||||
|
augment(factorGraph);
|
||||||
|
}
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
/// @name Standard Interface
|
/// @name Standard Interface
|
||||||
|
@ -88,7 +86,7 @@ public:
|
||||||
size_t nEntries() const { return nEntries_; }
|
size_t nEntries() const { return nEntries_; }
|
||||||
|
|
||||||
/// Access a list of factors by variable
|
/// Access a list of factors by variable
|
||||||
const Factors& operator[](Key variable) const {
|
const FactorIndices& operator[](Key variable) const {
|
||||||
KeyMap::const_iterator item = index_.find(variable);
|
KeyMap::const_iterator item = index_.find(variable);
|
||||||
if(item == index_.end())
|
if(item == index_.end())
|
||||||
throw std::invalid_argument("Requested non-existent variable from VariableIndex");
|
throw std::invalid_argument("Requested non-existent variable from VariableIndex");
|
||||||
|
@ -96,6 +94,11 @@ public:
|
||||||
return item->second;
|
return item->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Return true if no factors associated with a variable
|
||||||
|
const bool empty(Key variable) const {
|
||||||
|
return (*this)[variable].empty();
|
||||||
|
}
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
/// @name Testable
|
/// @name Testable
|
||||||
/// @{
|
/// @{
|
||||||
|
@ -166,16 +169,18 @@ protected:
|
||||||
Factor_const_iterator factorsEnd(Key variable) const { return internalAt(variable).end(); }
|
Factor_const_iterator factorsEnd(Key variable) const { return internalAt(variable).end(); }
|
||||||
|
|
||||||
/// Internal version of 'at' that asserts existence
|
/// Internal version of 'at' that asserts existence
|
||||||
const Factors& internalAt(Key variable) const {
|
const FactorIndices& internalAt(Key variable) const {
|
||||||
const KeyMap::const_iterator item = index_.find(variable);
|
const KeyMap::const_iterator item = index_.find(variable);
|
||||||
assert(item != index_.end());
|
assert(item != index_.end());
|
||||||
return item->second; }
|
return item->second;
|
||||||
|
}
|
||||||
|
|
||||||
/// Internal version of 'at' that asserts existence
|
/// Internal version of 'at' that asserts existence
|
||||||
Factors& internalAt(Key variable) {
|
FactorIndices& internalAt(Key variable) {
|
||||||
const KeyMap::iterator item = index_.find(variable);
|
const KeyMap::iterator item = index_.find(variable);
|
||||||
assert(item != index_.end());
|
assert(item != index_.end());
|
||||||
return item->second; }
|
return item->second;
|
||||||
|
}
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
};
|
};
|
||||||
|
|
|
@ -43,7 +43,7 @@ namespace gtsam {
|
||||||
// keep track of which domains changed
|
// keep track of which domains changed
|
||||||
changed[v] = false;
|
changed[v] = false;
|
||||||
// loop over all factors/constraints for variable v
|
// loop over all factors/constraints for variable v
|
||||||
const VariableIndex::Factors& factors = index[v];
|
const FactorIndices& factors = index[v];
|
||||||
for(size_t f: factors) {
|
for(size_t f: factors) {
|
||||||
// if not already a singleton
|
// if not already a singleton
|
||||||
if (!domains[v].isSingleton()) {
|
if (!domains[v].isSingleton()) {
|
||||||
|
|
Loading…
Reference in New Issue