More functionality in TupleConfigs
parent
94d50ddfb9
commit
e5a7d4c878
|
|
@ -184,23 +184,30 @@ namespace gtsam {
|
||||||
|
|
||||||
// erase an element by key
|
// erase an element by key
|
||||||
template<class Key>
|
template<class Key>
|
||||||
void erase(const Key& j) { }
|
void erase(const Key& j) { second_.erase(j); }
|
||||||
void erase(const Key1& j) { }
|
void erase(const Key1& j) { first_.erase(j); }
|
||||||
|
|
||||||
// determine whether an element exists
|
// determine whether an element exists
|
||||||
template<class Key>
|
template<class Key>
|
||||||
bool exists(const Key& j) const { return second_.exists(j); }
|
bool exists(const Key& j) const { return second_.exists(j); }
|
||||||
bool exists(const Key1& j) const { return first_.exists(j); }
|
bool exists(const Key1& j) const { return first_.exists(j); }
|
||||||
|
|
||||||
// access operator - currently configs after the first one will not be found
|
// access operator
|
||||||
template<class Key>
|
template<class Key>
|
||||||
const typename Key::Value_t & operator[](const Key& j) const { return second_[j]; }
|
const typename Key::Value_t & operator[](const Key& j) const { return second_[j]; }
|
||||||
const Value1& operator[](const Key1& j) const { return first_[j]; }
|
const Value1& operator[](const Key1& j) const { return first_[j]; }
|
||||||
|
|
||||||
|
// at access function
|
||||||
template<class Key>
|
template<class Key>
|
||||||
const typename Key::Value_t & at(const Key& j) const { return second_.at(j); }
|
const typename Key::Value_t & at(const Key& j) const { return second_.at(j); }
|
||||||
const Value1& at(const Key1& j) const { return first_.at(j); }
|
const Value1& at(const Key1& j) const { return first_.at(j); }
|
||||||
|
|
||||||
|
// size function - adds recursively
|
||||||
|
size_t size() const { return first_.size() + second_.size(); }
|
||||||
|
|
||||||
|
// dim function
|
||||||
|
size_t dim() const { return first_.dim() + second_.dim(); }
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class Config>
|
template<class Config>
|
||||||
|
|
@ -230,11 +237,15 @@ namespace gtsam {
|
||||||
|
|
||||||
const Value1& operator[](const Key1& j) const { return first_[j]; }
|
const Value1& operator[](const Key1& j) const { return first_[j]; }
|
||||||
|
|
||||||
void erase(const Key1& j) { }
|
void erase(const Key1& j) { first_.erase(j); }
|
||||||
|
|
||||||
bool exists(const Key1& j) const { return first_.exists(j); }
|
bool exists(const Key1& j) const { return first_.exists(j); }
|
||||||
|
|
||||||
const Value1& at(const Key1& j) const { return first_.at(j); }
|
const Value1& at(const Key1& j) const { return first_.at(j); }
|
||||||
|
|
||||||
|
size_t size() const { return first_.size(); }
|
||||||
|
|
||||||
|
size_t dim() const { return first_.dim(); }
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -183,7 +183,7 @@ typedef TupleConfig<PoseConfig, TupleConfigEnd<PointConfig> > ConfigA;
|
||||||
typedef TupleConfig<PoseConfig, TupleConfig<PointConfig, TupleConfigEnd<LamConfig> > > ConfigB;
|
typedef TupleConfig<PoseConfig, TupleConfig<PointConfig, TupleConfigEnd<LamConfig> > > ConfigB;
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
TEST(TupleConfig, create_insert) {
|
TEST(TupleConfig, basic_functions) {
|
||||||
// create some tuple configs
|
// create some tuple configs
|
||||||
ConfigA configA;
|
ConfigA configA;
|
||||||
ConfigB configB;
|
ConfigB configB;
|
||||||
|
|
@ -223,6 +223,14 @@ TEST(TupleConfig, create_insert) {
|
||||||
CHECK(assert_equal(configB.at(x1), pose1));
|
CHECK(assert_equal(configB.at(x1), pose1));
|
||||||
CHECK(assert_equal(configB.at(l1), point1));
|
CHECK(assert_equal(configB.at(l1), point1));
|
||||||
CHECK(assert_equal(configB.at(L1), lam1));
|
CHECK(assert_equal(configB.at(L1), lam1));
|
||||||
|
|
||||||
|
// size
|
||||||
|
CHECK(configA.size() == 2);
|
||||||
|
CHECK(configB.size() == 3);
|
||||||
|
|
||||||
|
// dim
|
||||||
|
CHECK(configA.dim() == 5);
|
||||||
|
CHECK(configB.dim() == 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue