summaryrefslogtreecommitdiff
path: root/src/Witness_complex/include
diff options
context:
space:
mode:
authorskachano <skachano@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2017-01-20 17:10:45 +0000
committerskachano <skachano@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2017-01-20 17:10:45 +0000
commitecc6aaf89753345a472aac89b73a2deff10cc26c (patch)
tree6cf318fda2bf3dfd9ff5afeac71d3f2254670348 /src/Witness_complex/include
parentdb1398bcf173f372fc3ef7a410e4e72b0192f8cc (diff)
Redesigned the whole Active_witness_iterator, still doesn't work
git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/relaxed-witness@1978 636b058d-ea47-450e-bf9e-a15bfbe3eedb Former-commit-id: 732862e9c29fc326b8ca4f5e6bb5f14945b0d924
Diffstat (limited to 'src/Witness_complex/include')
-rw-r--r--src/Witness_complex/include/gudhi/Active_witness/Active_witness.h6
-rw-r--r--src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h33
2 files changed, 24 insertions, 15 deletions
diff --git a/src/Witness_complex/include/gudhi/Active_witness/Active_witness.h b/src/Witness_complex/include/gudhi/Active_witness/Active_witness.h
index c3edc0b7..4c8ded61 100644
--- a/src/Witness_complex/include/gudhi/Active_witness/Active_witness.h
+++ b/src/Witness_complex/include/gudhi/Active_witness/Active_witness.h
@@ -46,13 +46,13 @@ public:
Table nearest_landmark_table_;
INS_range search_range_;
- INS_iterator iterator_last_;
+ INS_iterator iterator_next_;
INS_iterator iterator_end_;
Active_witness(INS_range search_range)
- : search_range_(search_range), iterator_last_(search_range_.begin()), iterator_end_(search_range_.end())
+ : search_range_(search_range), iterator_next_(++(search_range_.begin())), iterator_end_(search_range_.end())
{
- nearest_landmark_table_.push_back(*iterator_last_);
+ //nearest_landmark_table_.push_back(*iterator_last_);
}
iterator begin()
diff --git a/src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h b/src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h
index b0a88662..79d7fa87 100644
--- a/src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h
+++ b/src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h
@@ -63,8 +63,20 @@ public:
}
Active_witness_iterator(Active_witness* aw, Pair_iterator lh)
- : aw_(aw), lh_(lh), is_end_(false)
- {
+ : aw_(aw), lh_(lh)
+ {
+ is_end_ = false;
+ if (lh_ == aw_->nearest_landmark_table_.end()) {
+ if (aw_->iterator_next_ == aw_->iterator_end_)
+ is_end_ = true;
+ else {
+ aw_->nearest_landmark_table_.push_back(*aw_->iterator_next_);
+ lh_ = --aw_->nearest_landmark_table_.end();
+ ++(aw_->iterator_next_);
+ }
+ }
+ else
+ lh_++;
}
private :
@@ -84,21 +96,18 @@ private :
// the neighbor search can't be at the end iterator of a list
GUDHI_CHECK(!is_end_ && lh_ != aw_->nearest_landmark_table_.end(), std::logic_error("Wrong active witness increment."));
// if the id of the current landmark is the same as the last one
- if (lh_->first == aw_->iterator_last_->first) {
- // if the next iterator is end, lh_it = end pointer
- INS_iterator next_it = aw_->iterator_last_; next_it++;
- if (next_it == aw_->iterator_end_) {
+
+ lh_++;
+ if (lh_ == aw_->nearest_landmark_table_.end()) {
+ if (aw_->iterator_next_ == aw_->iterator_end_)
is_end_ = true;
- return;
- }
else {
- ++(aw_->iterator_last_);
- aw_->nearest_landmark_table_.push_back(*(aw_->iterator_last_));
+ aw_->nearest_landmark_table_.push_back(*aw_->iterator_next_);
+ lh_ = std::prev(aw_->nearest_landmark_table_.end());
+ ++(aw_->iterator_next_);
}
}
- lh_++;
}
-
};
}