diff --git a/Mesh_3/include/CGAL/Compact_mesh_cell_base_3.h b/Mesh_3/include/CGAL/Compact_mesh_cell_base_3.h index 3c52eb24769..e8393e20e55 100644 --- a/Mesh_3/include/CGAL/Compact_mesh_cell_base_3.h +++ b/Mesh_3/include/CGAL/Compact_mesh_cell_base_3.h @@ -261,7 +261,6 @@ public: , next_intrusive_() , previous_intrusive_() #endif - , time_stamp_(-1) , surface_center_index_table_() , sliver_value_(FT(0.)) , subdomain_index_() @@ -298,7 +297,6 @@ public: , next_intrusive_() , previous_intrusive_() #endif - , time_stamp_(-1) , surface_center_index_table_() , sliver_value_(FT(0.)) , subdomain_index_() @@ -323,7 +321,6 @@ public: , next_intrusive_() , previous_intrusive_() #endif - , time_stamp_(-1) , surface_center_index_table_() , sliver_value_(FT(0.)) , subdomain_index_() diff --git a/Mesh_3/include/CGAL/Mesh_cell_base_3.h b/Mesh_3/include/CGAL/Mesh_cell_base_3.h index 0db08cb3329..e565a3e738b 100644 --- a/Mesh_3/include/CGAL/Mesh_cell_base_3.h +++ b/Mesh_3/include/CGAL/Mesh_cell_base_3.h @@ -149,7 +149,6 @@ public: , next_intrusive_() , previous_intrusive_() #endif - , time_stamp_(-1) {} Mesh_cell_base_3 (Vertex_handle v0, @@ -164,7 +163,6 @@ public: , next_intrusive_() , previous_intrusive_() #endif - , time_stamp_(-1) {} Mesh_cell_base_3 (Vertex_handle v0, @@ -183,7 +181,6 @@ public: , next_intrusive_() , previous_intrusive_() #endif - , time_stamp_(-1) {} // Default copy constructor and assignment operator are ok diff --git a/Mesh_3/include/CGAL/Mesh_vertex_base_3.h b/Mesh_3/include/CGAL/Mesh_vertex_base_3.h index 1801c1f7e97..9661194be06 100644 --- a/Mesh_3/include/CGAL/Mesh_vertex_base_3.h +++ b/Mesh_3/include/CGAL/Mesh_vertex_base_3.h @@ -136,7 +136,6 @@ public: , next_intrusive_() , previous_intrusive_() #endif //CGAL_INTRUSIVE_LIST - , time_stamp_(-1) {} // Default copy constructor and assignment operator are ok diff --git a/STL_Extension/include/CGAL/Compact_container.h b/STL_Extension/include/CGAL/Compact_container.h index af65d886e3d..78b1d63312d 100644 --- a/STL_Extension/include/CGAL/Compact_container.h +++ b/STL_Extension/include/CGAL/Compact_container.h @@ -921,6 +921,7 @@ void Compact_container::allocate_ne for (size_type i = block_size; i >= 1; --i) { EraseCounterStrategy::set_erase_counter(*(new_block + i), 0); + time_stamper->initialize_time_stamp(new_block + i); put_on_free_list(new_block + i); } // We insert this new block at the end. diff --git a/STL_Extension/include/CGAL/Time_stamper.h b/STL_Extension/include/CGAL/Time_stamper.h index 1c19f3686a5..57c58f5ce58 100644 --- a/STL_Extension/include/CGAL/Time_stamper.h +++ b/STL_Extension/include/CGAL/Time_stamper.h @@ -32,8 +32,14 @@ struct Time_stamper Time_stamper(const Time_stamper& ts) : time_stamp_(ts.time_stamp_) {} + static void initialize_time_stamp(T* pt) { + pt->set_time_stamp(std::size_t(-1)); + } + void set_time_stamp(T* pt) { - pt->set_time_stamp(time_stamp_++); + if(pt->time_stamp() == std::size_t(-1)) + pt->set_time_stamp(time_stamp_++); + // else: the time stamp is re-used } @@ -66,6 +72,9 @@ public: return p_t1 < p_t2; } + static void initialize_time_stamp(T*) { + } + static std::size_t hash_value(const T* p) { return reinterpret_cast(p)/sizeof(T); }