77#include " directional_tags.hpp"
88#include " hypergraph_elements.hpp"
99#include " impl/impl_tags.hpp"
10+ #include " impl/layout_tags.hpp"
1011
1112namespace hgl {
1213
1314template <
1415 type_traits::c_hypergraph_directional_tag DirectionalTag = undirected_t ,
1516 type_traits::c_properties VertexProperties = types::empty_properties,
1617 type_traits::c_properties HyperedgeProperties = types::empty_properties,
17- type_traits::c_hypergraph_impl_tag ImplTag = impl::hyperedge_list_t >
18+ type_traits::c_hypergraph_impl_tag ImplTag = impl::list_t <impl:: hyperedge_major_t > >
1819struct hypergraph_traits {
1920 using directional_tag = DirectionalTag;
2021 using implementation_tag = ImplTag;
@@ -27,64 +28,57 @@ struct hypergraph_traits {
2728};
2829
2930template <
31+ type_traits::c_hypergraph_layout_tag LayoutTag = impl::hyperedge_major_t ,
3032 type_traits::c_hypergraph_directional_tag DirectionalTag = undirected_t ,
3133 type_traits::c_properties VertexProperties = types::empty_properties,
3234 type_traits::c_properties HyperedgeProperties = types::empty_properties>
33- using hyperedge_list_hg_traits =
34- hypergraph_traits<DirectionalTag, VertexProperties, HyperedgeProperties, impl::hyperedge_list_t >;
35+ using list_hypergraph_traits =
36+ hypergraph_traits<DirectionalTag, VertexProperties, HyperedgeProperties, impl::list_t <LayoutTag> >;
3537
3638template <
39+ type_traits::c_hypergraph_layout_tag LayoutTag = impl::hyperedge_major_t ,
3740 type_traits::c_hypergraph_directional_tag DirectionalTag = undirected_t ,
3841 type_traits::c_properties VertexProperties = types::empty_properties,
3942 type_traits::c_properties HyperedgeProperties = types::empty_properties>
40- using vertex_list_hg_traits =
41- hypergraph_traits<DirectionalTag, VertexProperties, HyperedgeProperties, impl::vertex_list_t >;
42-
43- template <
44- type_traits::c_hypergraph_directional_tag DirectionalTag = undirected_t ,
45- type_traits::c_properties VertexProperties = types::empty_properties,
46- type_traits::c_properties HyperedgeProperties = types::empty_properties>
47- using incidence_matrix_hg_traits =
48- hypergraph_traits<DirectionalTag, VertexProperties, HyperedgeProperties, impl::incidence_matrix_t >;
43+ using matrix_hypergraph_traits = hypergraph_traits<
44+ DirectionalTag,
45+ VertexProperties,
46+ HyperedgeProperties,
47+ impl::matrix_t <LayoutTag>>;
4948
5049template <
5150 type_traits::c_properties VertexProperties = types::empty_properties,
5251 type_traits::c_properties HyperedgeProperties = types::empty_properties,
53- type_traits::c_hypergraph_impl_tag ImplTag = impl::hyperedge_list_t >
54- using undirected_hg_traits =
52+ type_traits::c_hypergraph_impl_tag ImplTag = impl::list_t <impl:: hyperedge_major_t > >
53+ using undirected_hypergraph_traits =
5554 hypergraph_traits<undirected_t , VertexProperties, HyperedgeProperties, ImplTag>;
5655
5756template <
5857 type_traits::c_properties VertexProperties = types::empty_properties,
5958 type_traits::c_properties HyperedgeProperties = types::empty_properties,
60- type_traits::c_hypergraph_impl_tag ImplTag = impl::hyperedge_list_t >
61- using bf_directed_hg_traits =
59+ type_traits::c_hypergraph_impl_tag ImplTag = impl::list_t <impl:: hyperedge_major_t > >
60+ using bf_directed_hypergraph_traits =
6261 hypergraph_traits<bf_directed_t , VertexProperties, HyperedgeProperties, ImplTag>;
6362
6463namespace type_traits {
6564
6665template <typename TraitsType>
67- concept c_hyperedge_list_hg_traits =
68- c_instantiation_of<TraitsType, hypergraph_traits>
69- and std::same_as<typename TraitsType::implementation_tag, impl::hyperedge_list_t >;
70-
71- template <typename TraitsType>
72- concept c_vertex_list_hg_traits =
66+ concept c_list_hypergraph_traits =
7367 c_instantiation_of<TraitsType, hypergraph_traits>
74- and std::same_as <typename TraitsType::implementation_tag, impl:: vertex_list_t >;
68+ and c_hypergraph_list_impl <typename TraitsType::implementation_tag>;
7569
7670template <typename TraitsType>
77- concept c_incidence_matrix_hg_traits =
71+ concept c_matrix_hypergraph_traits =
7872 c_instantiation_of<TraitsType, hypergraph_traits>
79- and std::same_as <typename TraitsType::implementation_tag, impl:: incidence_matrix_t >;
73+ and c_hypergraph_matrix_impl <typename TraitsType::implementation_tag>;
8074
8175template <typename TraitsType>
82- concept c_undirected_hg_traits =
76+ concept c_undirected_hypergraph_traits =
8377 c_instantiation_of<TraitsType, hypergraph_traits>
8478 and std::same_as<typename TraitsType::hyperedge_directional_tag, undirected_t >;
8579
8680template <typename TraitsType>
87- concept c_bf_directed_hg_traits =
81+ concept c_bf_directed_hypergraph_traits =
8882 c_instantiation_of<TraitsType, hypergraph_traits>
8983 and std::same_as<typename TraitsType::hyperedge_directional_tag, bf_directed_t >;
9084
0 commit comments