removed caching of size and dim in PairConfig as it was buggy

release/4.3a0
Manohar Paluri 2010-03-07 06:16:49 +00:00
parent 2f72d585c5
commit 9b93731ed9
2 changed files with 6 additions and 14 deletions

View File

@ -42,7 +42,7 @@ namespace gtsam {
/* ************************************************************************* */ /* ************************************************************************* */
template<class J1, class X1, class J2, class X2> template<class J1, class X1, class J2, class X2>
void PairConfig<J1,X1,J2,X2>::print(const std::string& s) const { void PairConfig<J1,X1,J2,X2>::print(const std::string& s) const {
std::cout << "TupleConfig " << s << ", size " << size_ << "\n"; std::cout << "TupleConfig " << s << ", size " << size() << "\n";
first().print(s + "Config1: "); first().print(s + "Config1: ");
second().print(s + "Config2: "); second().print(s + "Config2: ");
} }

View File

@ -376,25 +376,21 @@ namespace gtsam {
private: private:
size_t size_;
size_t dim_;
PairConfig(const LieConfig<J1,X1>& config1, const LieConfig<J2,X2>& config2) : PairConfig(const LieConfig<J1,X1>& config1, const LieConfig<J2,X2>& config2) :
first_(config1), second_(config2), first_(config1), second_(config2){}
size_(config1.size()+config2.size()), dim_(gtsam::dim(config1)+gtsam::dim(config2)) {}
public: public:
/** /**
* Default constructor creates an empty config. * Default constructor creates an empty config.
*/ */
PairConfig(): size_(0), dim_(0) {} PairConfig(){}
/** /**
* Copy constructor * Copy constructor
*/ */
PairConfig(const PairConfig<J1, X1, J2, X2>& c): PairConfig(const PairConfig<J1, X1, J2, X2>& c):
first_(c.first_), second_(c.second_), size_(c.size_), dim_(c.dim_) {} first_(c.first_), second_(c.second_){}
/** /**
* Print * Print
@ -422,27 +418,23 @@ namespace gtsam {
/** /**
* size is the total number of variables in this config. * size is the total number of variables in this config.
*/ */
size_t size() const { return size_; } size_t size() const { return first_.size() + second_.size(); }
/** /**
* dim is the dimensionality of the tangent space * dim is the dimensionality of the tangent space
*/ */
size_t dim() const { return dim_; } size_t dim() const { return first_.dim() + second_.dim(); }
private: private:
template<class Config, class Key, class Value> template<class Config, class Key, class Value>
void insert_helper(Config& config, const Key& j, const Value& value) { void insert_helper(Config& config, const Key& j, const Value& value) {
config.insert(j, value); config.insert(j, value);
size_ ++;
dim_ += gtsam::dim(value);
} }
template<class Config, class Key> template<class Config, class Key>
void erase_helper(Config& config, const Key& j) { void erase_helper(Config& config, const Key& j) {
size_t dim; size_t dim;
config.erase(j, dim); config.erase(j, dim);
dim_ -= dim;
size_ --;
} }
public: public: