Sequoia
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Protected Member Functions | Static Protected Attributes | Friends | List of all members
sequoia::maths::graph_primitive< Connectivity, Nodes > Class Template Reference
Inheritance diagram for sequoia::maths::graph_primitive< Connectivity, Nodes >:
sequoia::maths::graph_base< graph_flavour::directed, EdgeWeight, NodeWeight, null_meta_data, bucketed_edge_storage_config, node_storage< NodeWeight > > sequoia::maths::graph_base< Flavour, EdgeWeight, NodeWeight, null_meta_data, bucketed_edge_storage_config, node_storage< NodeWeight > > sequoia::maths::graph_base< graph_flavour::undirected_embedded, EdgeWeight, NodeWeight, null_meta_data, bucketed_edge_storage_config, node_storage< NodeWeight > > sequoia::maths::graph_base< Flavour, EdgeWeight, NodeWeight, EdgeMetaData, bucketed_edge_storage_config, node_storage< NodeWeight > > sequoia::maths::graph_base< graph_flavour::undirected, EdgeWeight, NodeWeight, null_meta_data, bucketed_edge_storage_config, node_storage< NodeWeight > > sequoia::maths::graph_base< Flavour, maths::null_weight, suite_node, null_meta_data, bucketed_edge_storage_config, node_storage< suite_node > > sequoia::maths::static_directed_graph< Size, Order, EdgeWeight, NodeWeight, EdgeStorageConfig > sequoia::maths::static_embedded_graph< Size, Order, EdgeWeight, NodeWeight, EdgeMetaData, EdgeStorageConfig > sequoia::maths::static_undirected_graph< Size, Order, EdgeWeight, NodeWeight, EdgeMetaData, EdgeStorageConfig >

Public Types

using connectivity_type = Connectivity
 
using nodes_type = Nodes
 
using edge_init_type = typename Connectivity::edge_init_type
 
using edge_index_type = typename Connectivity::edge_index_type
 
using size_type = std::common_type_t< typename Connectivity::size_type, typename Nodes::size_type >
 
using pseudo_iterator = graph_impl::pseudo_iterator< Connectivity, Nodes >
 
using edges_initializer = std::initializer_list< std::initializer_list< edge_init_type > >
 

Public Member Functions

constexpr graph_primitive (edges_initializer edges)
 
constexpr graph_primitive (edges_initializer edges)
 
constexpr graph_primitive (edges_initializer edges, std::initializer_list< node_weight_type > nodeWeights)
 
template<class... NodeWeights>
requires heterogeneous_nodes<graph_primitive>
constexpr graph_primitive (edges_initializer edges, NodeWeights &&... nodeWeights)
 
template<tree_link_direction dir>
requires ( !heterogeneous_nodes<graph_primitive> && ((dir == tree_link_direction::symmetric) || is_directed(Connectivity::flavour)))
constexpr graph_primitive (std::initializer_list< tree_initializer< node_weight_type > > forest, tree_link_direction_constant< dir > tdc)
 
template<tree_link_direction dir>
requires ( !heterogeneous_nodes<graph_primitive> && ((dir == tree_link_direction::symmetric) || is_directed(Connectivity::flavour)))
constexpr graph_primitive (tree_initializer< node_weight_type > tree, tree_link_direction_constant< dir > tdc)
 
constexpr graph_primitive (const graph_primitive &)=default
 
constexpr size_type size () const noexcept
 
constexpr void swap_nodes (edge_index_type i, edge_index_type j)
 
template<class Compare >
constexpr void sort_nodes (Compare c)
 
template<class Compare >
constexpr void sort_nodes (const edge_index_type first, const edge_index_type last, Compare c)
 

Protected Member Functions

template<alloc EdgeAllocator, alloc NodeAllocator>
requires enableNodeAllocation<node_weight_type>
constexpr graph_primitive (const EdgeAllocator &edgeAlloc, const NodeAllocator &nodeAlloc)
 
template<alloc EdgeAllocator, alloc EdgePartitionsAllocator, alloc NodeAllocator>
requires (enableNodeAllocation<node_weight_type>)
constexpr graph_primitive (const EdgeAllocator &edgeAlloc, const EdgePartitionsAllocator &edgeParitionsAlloc, const NodeAllocator &nodeAlloc)
 
template<alloc EdgeAllocator>
requires (!enableNodeAllocation<node_weight_type>)
constexpr graph_primitive (const EdgeAllocator &edgeAlloc)
 
template<alloc EdgeAllocator, alloc EdgePartitionsAllocator>
requires (!enableNodeAllocation<node_weight_type>)
constexpr graph_primitive (const EdgeAllocator &edgeAlloc, const EdgePartitionsAllocator &edgeParitionsAlloc)
 
template<alloc EdgeAllocator, alloc NodeAllocator>
requires enableNodeAllocation<node_weight_type>
constexpr graph_primitive (edges_initializer edges, const EdgeAllocator &edgeAlloc, std::initializer_list< node_weight_type > nodeWeights, const NodeAllocator &nodeAlloc)
 
template<alloc EdgeAllocator, alloc EdgePartitionsAllocator, alloc NodeAllocator>
requires enableNodeAllocation<node_weight_type>
constexpr graph_primitive (edges_initializer edges, const EdgeAllocator &edgeAlloc, const EdgePartitionsAllocator &edgeParitionsAlloc, std::initializer_list< node_weight_type > nodeWeights, const NodeAllocator &nodeAlloc)
 
template<alloc EdgeAllocator, alloc EdgePartitionsAllocator, class... NodeWeights>
requires heterogeneous_nodes<graph_primitive>
constexpr graph_primitive (edges_initializer edges, const EdgeAllocator &edgeAlloc, const EdgePartitionsAllocator &edgeParitionsAlloc, NodeWeights &&... nodeWeights)
 
template<alloc EdgeAllocator, alloc NodeAllocator>
requires enableNodeAllocation<node_weight_type>
constexpr graph_primitive (edges_initializer edges, const EdgeAllocator &edgeAlloc, const NodeAllocator &nodeAlloc)
 
template<alloc EdgeAllocator, alloc EdgePartitionsAllocator, alloc NodeAllocator>
requires enableNodeAllocation<node_weight_type>
constexpr graph_primitive (edges_initializer edges, const EdgeAllocator &edgeAlloc, const EdgePartitionsAllocator &edgeParitionsAlloc, const NodeAllocator &nodeAlloc)
 
template<alloc EdgeAllocator, alloc EdgePartitionsAllocator>
requires (!enableNodeAllocation<node_weight_type>)
constexpr graph_primitive (edges_initializer edges, const EdgeAllocator &edgeAlloc, const EdgePartitionsAllocator &edgeParitionsAlloc)
 
template<alloc EdgeAllocator>
requires (!enableNodeAllocation<node_weight_type>)
constexpr graph_primitive (edges_initializer edges, const EdgeAllocator &edgeAlloc)
 
template<alloc EdgeAllocator, alloc EdgePartitionsAllocator, alloc NodeAllocator>
requires enableNodeAllocation<node_weight_type>
constexpr graph_primitive (const graph_primitive &in, const EdgeAllocator &edgeAlloc, const EdgePartitionsAllocator &edgeParitionsAlloc, const NodeAllocator &nodeAlloc)
 
template<alloc EdgeAllocator, alloc NodeAllocator>
requires enableNodeAllocation<node_weight_type>
constexpr graph_primitive (const graph_primitive &in, const EdgeAllocator &edgeAlloc, const NodeAllocator &nodeAlloc)
 
template<alloc EdgeAllocator, alloc EdgePartitionsAllocator>
requires (!enableNodeAllocation<node_weight_type>)
constexpr graph_primitive (const graph_primitive &in, const EdgeAllocator &edgeAlloc, const EdgePartitionsAllocator &edgeParitionsAlloc)
 
template<alloc EdgeAllocator>
requires (!enableNodeAllocation<node_weight_type>)
constexpr graph_primitive (const graph_primitive &in, const EdgeAllocator &edgeAlloc)
 
constexpr graph_primitive (graph_primitive &&) noexcept=default
 
template<alloc EdgeAllocator, alloc EdgePartitionsAllocator, alloc NodeAllocator>
requires enableNodeAllocation<node_weight_type>
constexpr graph_primitive (graph_primitive &&in, const EdgeAllocator &edgeAlloc, const EdgePartitionsAllocator &edgeParitionsAlloc, const NodeAllocator &nodeAlloc)
 
template<alloc EdgeAllocator, alloc NodeAllocator>
requires enableNodeAllocation<node_weight_type>
constexpr graph_primitive (graph_primitive &&in, const EdgeAllocator &edgeAlloc, const NodeAllocator &nodeAlloc)
 
template<alloc EdgeAllocator, alloc EdgePartitionsAllocator, alloc NodeAllocator>
requires (!enableNodeAllocation<node_weight_type>)
constexpr graph_primitive (graph_primitive &&in, const EdgeAllocator &edgeAlloc, const EdgePartitionsAllocator &edgeParitionsAlloc)
 
template<alloc EdgeAllocator, alloc NodeAllocator>
requires (!enableNodeAllocation<node_weight_type>)
constexpr graph_primitive (graph_primitive &&in, const EdgeAllocator &edgeAlloc)
 
constexpr graph_primitiveoperator= (graph_primitive &&) noexcept=default
 
constexpr graph_primitiveoperator= (const graph_primitive &)=default
 
void swap (graph_primitive &rhs) noexcept(noexcept(this->Connectivity::swap(rhs)) &&noexcept(this->Nodes::swap(rhs)))
 
void reserve_nodes (const size_type size)
 
size_type node_capacity () const noexcept
 
void shrink_to_fit ()
 
template<class... Args>
size_type add_node (Args &&... args)
 
template<class... Args>
size_type insert_node (const size_type pos, Args &&... args)
 
void erase_node (const size_type node)
 
void clear () noexcept
 
template<tree_link_direction dir, class... Args>
size_type insert_node_to_tree (tree_link_direction_constant< dir >, size_type pos, size_type parent, Args &&... args)
 
template<tree_link_direction dir, class... Args>
size_type add_node_to_tree (tree_link_direction_constant< dir > tldc, size_type parent, Args &&... args)
 

Static Protected Attributes

template<class N >
static constexpr bool enableNodeAllocation {!heterogeneous_nodes<graph_primitive> && !std::is_empty_v<N>}
 

Friends

constexpr bool operator== (const graph_primitive &, const graph_primitive &) noexcept=default
 

The documentation for this class was generated from the following file: