diff options
Diffstat (limited to 'src/Contraction/include/gudhi/Skeleton_blocker_contractor.h')
-rw-r--r-- | src/Contraction/include/gudhi/Skeleton_blocker_contractor.h | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/src/Contraction/include/gudhi/Skeleton_blocker_contractor.h b/src/Contraction/include/gudhi/Skeleton_blocker_contractor.h index a0d9f2b2..6911ca2e 100644 --- a/src/Contraction/include/gudhi/Skeleton_blocker_contractor.h +++ b/src/Contraction/include/gudhi/Skeleton_blocker_contractor.h @@ -171,8 +171,13 @@ typename GeometricSimplifiableComplex::Vertex_handle> { Self const* algorithm_; }; +#if CGAL_VERSION_NR < 1050500000 typedef CGAL::Modifiable_priority_queue<Edge_handle, Compare_cost, Undirected_edge_id> PQ; - typedef typename PQ::handle pq_handle; +#else + typedef CGAL::Modifiable_priority_queue<Edge_handle, Compare_cost, Undirected_edge_id, CGAL::CGAL_BOOST_PENDING_RELAXED_HEAP> PQ; +#endif + + typedef bool pq_handle; // An Edge_data is associated with EVERY edge in the complex (collapsible or not). @@ -196,7 +201,7 @@ typename GeometricSimplifiableComplex::Vertex_handle> { } bool is_in_PQ() const { - return PQHandle_ != PQ::null_handle(); + return PQHandle_ != false; } void set_PQ_handle(pq_handle h) { @@ -204,7 +209,7 @@ typename GeometricSimplifiableComplex::Vertex_handle> { } void reset_PQ_handle() { - PQHandle_ = PQ::null_handle(); + PQHandle_ = false; } private: @@ -238,16 +243,22 @@ typename GeometricSimplifiableComplex::Vertex_handle> { } void insert_in_PQ(Edge_handle edge, Edge_data& data) { - data.set_PQ_handle(heap_PQ_->push(edge)); + heap_PQ_->push(edge); + data.set_PQ_handle(true); ++current_num_edges_heap_; } void update_in_PQ(Edge_handle edge, Edge_data& data) { +#if CGAL_VERSION_NR < 1050500000 data.set_PQ_handle(heap_PQ_->update(edge, data.PQ_handle())); +#else + heap_PQ_->update(edge); +#endif } void remove_from_PQ(Edge_handle edge, Edge_data& data) { - data.set_PQ_handle(heap_PQ_->erase(edge, data.PQ_handle())); + heap_PQ_->erase(edge); + data.set_PQ_handle(false); --current_num_edges_heap_; } @@ -280,7 +291,7 @@ typename GeometricSimplifiableComplex::Vertex_handle> { std::size_t id = 0; - // xxx do a parralel for + // xxx do a parallel for for (auto edge : complex_.edge_range()) { complex_[edge].index() = id++; Profile const& profile = create_profile(edge); @@ -474,7 +485,7 @@ typename GeometricSimplifiableComplex::Vertex_handle> { } void update_changed_edges() { - // xxx do a parralel for + // xxx do a parallel for DBG("update edges"); // sequential loop @@ -530,7 +541,7 @@ typename GeometricSimplifiableComplex::Vertex_handle> { // by definition of a blocker // todo uniqument utile pour la link condition - // laisser a l'utilisateur ? booleen update_heap_on_removed_blocker? + // laisser a l'utilisateur ? boolean update_heap_on_removed_blocker? Simplex blocker_copy(*blocker); for (auto x = blocker_copy.begin(); x != blocker_copy.end(); ++x) { for (auto y = x; ++y != blocker_copy.end();) { |