From e1b4634010a06b8595a6eb2721ca9dc491789044 Mon Sep 17 00:00:00 2001 From: hschreiber Date: Wed, 23 Oct 2024 11:15:47 +0200 Subject: [PATCH] add gudhi_check for column push_back --- .../include/gudhi/Persistence_matrix/columns/heap_column.h | 3 +++ .../gudhi/Persistence_matrix/columns/intrusive_list_column.h | 2 ++ .../gudhi/Persistence_matrix/columns/intrusive_set_column.h | 2 ++ .../include/gudhi/Persistence_matrix/columns/list_column.h | 2 ++ .../gudhi/Persistence_matrix/columns/naive_vector_column.h | 2 ++ .../include/gudhi/Persistence_matrix/columns/set_column.h | 2 ++ .../gudhi/Persistence_matrix/columns/unordered_set_column.h | 2 ++ .../include/gudhi/Persistence_matrix/columns/vector_column.h | 2 ++ 8 files changed, 17 insertions(+) diff --git a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/heap_column.h b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/heap_column.h index c7b0fa8e0..e195dfea4 100644 --- a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/heap_column.h +++ b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/heap_column.h @@ -25,6 +25,7 @@ #include //std::swap, std::move & std::exchange #include +#include "gudhi/Debug_utils.h" #include @@ -875,6 +876,8 @@ inline void Heap_column::push_back(const Entry& entry) { static_assert(Master_matrix::Option_list::is_of_boundary_type, "`push_back` is not available for Chain matrices."); + GUDHI_CHECK(entry.get_row_index() > get_pivot(), "The new row index has to be higher than the current pivot."); + Entry* newEntry = entryPool_->construct(entry.get_row_index()); if constexpr (!Master_matrix::Option_list::is_z2) { newEntry->set_element(operators_->get_value(entry.get_element())); diff --git a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/intrusive_list_column.h b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/intrusive_list_column.h index 773058019..0f5aaa832 100644 --- a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/intrusive_list_column.h +++ b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/intrusive_list_column.h @@ -828,6 +828,8 @@ inline void Intrusive_list_column::push_back(const Entry& entry) { static_assert(Master_matrix::Option_list::is_of_boundary_type, "`push_back` is not available for Chain matrices."); + GUDHI_CHECK(entry.get_row_index() > get_pivot(), "The new row index has to be higher than the current pivot."); + if constexpr (Master_matrix::Option_list::is_z2) { _insert_entry(entry.get_row_index(), column_.end()); } else { diff --git a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/intrusive_set_column.h b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/intrusive_set_column.h index 17cb7d86b..994a5014d 100644 --- a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/intrusive_set_column.h +++ b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/intrusive_set_column.h @@ -828,6 +828,8 @@ inline void Intrusive_set_column::push_back(const Entry& entry) { static_assert(Master_matrix::Option_list::is_of_boundary_type, "`push_back` is not available for Chain matrices."); + GUDHI_CHECK(entry.get_row_index() > get_pivot(), "The new row index has to be higher than the current pivot."); + if constexpr (Master_matrix::Option_list::is_z2) { _insert_entry(entry.get_row_index(), column_.end()); } else { diff --git a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/list_column.h b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/list_column.h index 5793d5239..658541f97 100644 --- a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/list_column.h +++ b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/list_column.h @@ -812,6 +812,8 @@ inline void List_column::push_back(const Entry& entry) { static_assert(Master_matrix::Option_list::is_of_boundary_type, "`push_back` is not available for Chain matrices."); + GUDHI_CHECK(entry.get_row_index() > get_pivot(), "The new row index has to be higher than the current pivot."); + if constexpr (Master_matrix::Option_list::is_z2) { _insert_entry(entry.get_row_index(), column_.end()); } else { diff --git a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/naive_vector_column.h b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/naive_vector_column.h index 21809f121..e99d37b7e 100644 --- a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/naive_vector_column.h +++ b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/naive_vector_column.h @@ -808,6 +808,8 @@ inline void Naive_vector_column::push_back(const Entry& entry) { static_assert(Master_matrix::Option_list::is_of_boundary_type, "`push_back` is not available for Chain matrices."); + GUDHI_CHECK(entry.get_row_index() > get_pivot(), "The new row index has to be higher than the current pivot."); + if constexpr (Master_matrix::Option_list::is_z2) { _insert_entry(entry.get_row_index(), column_); } else { diff --git a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/set_column.h b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/set_column.h index c2efb18b2..6f69c53c9 100644 --- a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/set_column.h +++ b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/set_column.h @@ -804,6 +804,8 @@ inline void Set_column::push_back(const Entry& entry) { static_assert(Master_matrix::Option_list::is_of_boundary_type, "`push_back` is not available for Chain matrices."); + GUDHI_CHECK(entry.get_row_index() > get_pivot(), "The new row index has to be higher than the current pivot."); + if constexpr (Master_matrix::Option_list::is_z2) { _insert_entry(entry.get_row_index(), column_.end()); } else { diff --git a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/unordered_set_column.h b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/unordered_set_column.h index 9513a2022..b63adcbac 100644 --- a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/unordered_set_column.h +++ b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/unordered_set_column.h @@ -807,6 +807,8 @@ inline void Unordered_set_column::push_back(const Entry& entry) { static_assert(Master_matrix::Option_list::is_of_boundary_type, "`push_back` is not available for Chain matrices."); + GUDHI_CHECK(entry.get_row_index() > get_pivot(), "The new row index has to be higher than the current pivot."); + if constexpr (Master_matrix::Option_list::is_z2) { _insert_entry(entry.get_row_index()); } else { diff --git a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/vector_column.h b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/vector_column.h index 0721d86ed..f6a7da8e8 100644 --- a/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/vector_column.h +++ b/src/Persistence_matrix/include/gudhi/Persistence_matrix/columns/vector_column.h @@ -910,6 +910,8 @@ inline void Vector_column::push_back(const Entry& entry) { static_assert(Master_matrix::Option_list::is_of_boundary_type, "`push_back` is not available for Chain matrices."); + GUDHI_CHECK(entry.get_row_index() > get_pivot(), "The new row index has to be higher than the current pivot."); + if constexpr (Master_matrix::Option_list::is_z2) { _insert_entry(entry.get_row_index(), column_); } else {