44
55#pragma once
66
7+ #include " hgl/directional_tags.hpp"
8+ #include " hgl/impl/layout_tags.hpp"
79#include " hgl/types/types.hpp"
8- #include " layout_tags.hpp"
910
1011#include < algorithm>
1112#include < ranges>
@@ -19,28 +20,31 @@ struct test_incidence_matrix;
1920
2021namespace hgl ::impl {
2122
23+ template <
24+ type_traits::c_hypergraph_directional_tag DirectionalTag,
25+ type_traits::c_hypergraph_layout_tag LayoutTag>
26+ class incidence_matrix ;
27+
2228template <type_traits::c_hypergraph_layout_tag LayoutTag>
23- class undirected_incidence_matrix final {
29+ class incidence_matrix <hgl:: undirected_t , LayoutTag> final {
2430public:
2531 using layout_tag = LayoutTag;
2632
27- undirected_incidence_matrix (const undirected_incidence_matrix &) = delete ;
28- undirected_incidence_matrix & operator =(const undirected_incidence_matrix &) = delete ;
33+ incidence_matrix (const incidence_matrix &) = delete ;
34+ incidence_matrix & operator =(const incidence_matrix &) = delete ;
2935
30- undirected_incidence_matrix () = default ;
36+ incidence_matrix () = default ;
3137
32- undirected_incidence_matrix (
33- const types::size_type n_vertices, const types::size_type n_hyperedges
34- )
38+ incidence_matrix (const types::size_type n_vertices, const types::size_type n_hyperedges)
3539 : _matrix_row_size{layout_tag::minor (n_vertices, n_hyperedges)},
3640 _matrix (
3741 layout_tag::major (n_vertices, n_hyperedges), matrix_row_type(_matrix_row_size, false )
3842 ) {}
3943
40- undirected_incidence_matrix (undirected_incidence_matrix &&) = default;
41- undirected_incidence_matrix & operator =(undirected_incidence_matrix &&) = default ;
44+ incidence_matrix (incidence_matrix &&) = default;
45+ incidence_matrix & operator =(incidence_matrix &&) = default ;
4246
43- ~undirected_incidence_matrix () = default ;
47+ ~incidence_matrix () = default ;
4448
4549 // --- vertex methods ---
4650
0 commit comments