Sequoia
Loading...
Searching...
No Matches
Classes | Typedefs | Enumerations | Functions | Variables
GraphDetails.hpp File Reference

Meta-programming elements for graph implementation. More...

#include "sequoia/Maths/Graph/Edge.hpp"
#include "sequoia/Core/Object/Handlers.hpp"

Go to the source code of this file.

Classes

struct  sequoia::maths::edge_init_type_generator< partial_edge< WeightHandler, MetaData, IndexType > >
 
struct  sequoia::maths::edge_init_type_generator< embedded_partial_edge< WeightHandler, MetaData, IndexType > >
 
struct  sequoia::maths::graph_impl::flavour_to_edge< GraphFlavour, Handler, MetaData, IndexType >
 
struct  sequoia::maths::graph_impl::flavour_to_edge< graph_flavour::undirected_embedded, Handler, MetaData, IndexType >
 
struct  sequoia::maths::graph_impl::edge_storage_generator< GraphFlavour, EdgeWeight, EdgeMetaData, IndexType, EdgeStorageConfig >
 

Typedefs

template<class T >
using sequoia::maths::edge_init_type_generator_t = typename edge_init_type_generator< T >::type
 
template<bool Shared, class Weight >
using sequoia::maths::graph_impl::shared_to_handler_t = std::conditional_t< Shared, object::shared< Weight >, object::by_value< Weight > >
 
template<graph_flavour GraphFlavour, class Handler , class MetaData , std::integral IndexType>
using sequoia::maths::graph_impl::flavour_to_edge_t = typename flavour_to_edge< GraphFlavour, Handler, MetaData, IndexType >::edge_type
 
template<graph_flavour GraphFlavour, class EdgeWeight , class EdgeMetaData , std::integral IndexType, class EdgeStorageConfig >
using sequoia::maths::graph_impl::edge_storage_generator_t = typename edge_storage_generator< GraphFlavour, EdgeWeight, EdgeMetaData, IndexType, EdgeStorageConfig >::storage_type
 

Enumerations

enum class  graph_flavour { undirected , undirected_embedded , directed }
 
enum class  edge_sharing_preference { agnostic , shared_weight , independent }
 

Functions

constexpr bool sequoia::maths::is_embedded (const graph_flavour gf) noexcept
 
constexpr bool sequoia::maths::is_directed (const graph_flavour gf) noexcept
 
constexpr std::size_t sequoia::maths::graph_impl::num_static_edges (const graph_flavour flavour, const std::size_t size) noexcept
 
template<class Weight >
constexpr bool sequoia::maths::graph_impl::big_weight () noexcept
 

Variables

template<class Edge >
constexpr bool sequoia::maths::graph_impl::has_shared_weight_v
 
template<class T >
constexpr bool sequoia::maths::graph_impl::has_reservable_partitions
 

Detailed Description

Meta-programming elements for graph implementation.

Variable Documentation

◆ has_reservable_partitions

template<class T >
constexpr bool sequoia::maths::graph_impl::has_reservable_partitions
inlineconstexpr
Initial value:
= requires(T& t) {
t.reserve_partition(0, 0);
}

◆ has_shared_weight_v

template<class Edge >
constexpr bool sequoia::maths::graph_impl::has_shared_weight_v
inlineconstexpr
Initial value:
{
requires{
typename Edge::weight_handler_type;
typename Edge::weight_type;
requires std::is_same_v<object::shared<typename Edge::weight_type>, typename Edge::weight_handler_type>;
}
}