Fishnet 2.0.1
Framework for Graph-Based Analysis of GIS Vector Data
Loading...
Searching...
No Matches
fishnet::graph::GraphDecorator< DecoratorImpl, G, E > Class Template Reference

Abstract Graph Decorator using CRTP. More...

#include <GraphDecorator.hpp>

Inheritance diagram for fishnet::graph::GraphDecorator< DecoratorImpl, G, E >:
Collaboration diagram for fishnet::graph::GraphDecorator< DecoratorImpl, G, E >:

Public Types

using edge_type = E
 
using adj_container_type = G::adj_container_type
 
using node_type = N
 

Public Member Functions

bool addNode (N &node)
 
bool addNode (N &&node)
 
template<typename... Args>
bool addNode (const N &node, Args... args)
 
template<typename... Args>
bool addNode (N &&node, Args... args)
 
bool addNodes (util::forward_range_of< N > auto &nodes)
 
bool addNodes (util::forward_range_of< N > auto &&nodes)
 
bool containsNode (const N &node) const noexcept
 
void removeNode (const N &node)
 
bool addEdge (const N &from, const N &to)
 
bool addEdge (N &&from, N &&to)
 
bool addEdge (const E &edge)
 
void addEdges (util::forward_range_of< std::pair< N, N > > auto &&edges)
 
void addEdges (util::forward_range_of< E > auto &&edges)
 
bool containsEdge (const N &from, const N &to) const noexcept
 
bool containsEdge (const E &edge) const noexcept
 
void removeEdge (const N &from, const N &to)
 
void removeEdge (const E &edge)
 
E makeEdge (const N &from, const N &to) const
 
auto getNodes () const noexcept
 
auto getEdges () const
 
auto getNeighbours (const N &node) const noexcept
 
auto getReachableFrom (const N &node) const noexcept
 
auto getOutboundEdges (const N &node) const
 
auto getInboundEdges (const N &node) const
 
const auto & getAdjacencyContainer () const
 
void clear ()
 
virtual ~GraphDecorator ()=default
 

Protected Types

using N = G::node_type
 

Protected Member Functions

 GraphDecorator ()=default
 
 GraphDecorator (G &&source)
 
 GraphDecorator (typename G::adj_container_type &&adjContainer)
 
 GraphDecorator (util::forward_range_of< N > auto &&nodes)
 

Protected Attributes

G g
 

Detailed Description

template<class DecoratorImpl, class G, Edge E = typename G::edge_type>
class fishnet::graph::GraphDecorator< DecoratorImpl, G, E >

Abstract Graph Decorator using CRTP.

Template Parameters
DecoratorImplgraph decorator implementation type
Ggraph type
G::edge_typeedge type of graph

Member Typedef Documentation

◆ adj_container_type

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
using fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::adj_container_type = G::adj_container_type

◆ edge_type

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
using fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::edge_type = E

◆ N

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
using fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::N = G::node_type
protected

◆ node_type

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
using fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::node_type = N

Constructor & Destructor Documentation

◆ GraphDecorator() [1/4]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::GraphDecorator ( )
protecteddefault

◆ GraphDecorator() [2/4]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::GraphDecorator ( G &&  source)
inlineprotected

◆ GraphDecorator() [3/4]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::GraphDecorator ( typename G::adj_container_type &&  adjContainer)
inlineprotected

◆ GraphDecorator() [4/4]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::GraphDecorator ( util::forward_range_of< N > auto &&  nodes)
inlineprotected

◆ ~GraphDecorator()

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
virtual fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::~GraphDecorator ( )
virtualdefault

Member Function Documentation

◆ addEdge() [1/3]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
bool fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::addEdge ( const E &  edge)
inline

◆ addEdge() [2/3]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
bool fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::addEdge ( const N &  from,
const N &  to 
)
inline

◆ addEdge() [3/3]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
bool fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::addEdge ( N &&  from,
N &&  to 
)
inline

◆ addEdges() [1/2]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
void fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::addEdges ( util::forward_range_of< E > auto &&  edges)
inline

◆ addEdges() [2/2]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
void fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::addEdges ( util::forward_range_of< std::pair< N, N > > auto &&  edges)
inline

◆ addNode() [1/4]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
template<typename... Args>
bool fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::addNode ( const N &  node,
Args...  args 
)
inline

◆ addNode() [2/4]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
bool fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::addNode ( N &&  node)
inline

◆ addNode() [3/4]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
template<typename... Args>
bool fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::addNode ( N &&  node,
Args...  args 
)
inline

◆ addNode() [4/4]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
bool fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::addNode ( N &  node)
inline

◆ addNodes() [1/2]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
bool fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::addNodes ( util::forward_range_of< N > auto &&  nodes)
inline

◆ addNodes() [2/2]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
bool fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::addNodes ( util::forward_range_of< N > auto &  nodes)
inline

◆ clear()

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
void fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::clear ( )
inline

◆ containsEdge() [1/2]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
bool fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::containsEdge ( const E &  edge) const
inlinenoexcept

◆ containsEdge() [2/2]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
bool fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::containsEdge ( const N &  from,
const N &  to 
) const
inlinenoexcept

◆ containsNode()

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
bool fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::containsNode ( const N &  node) const
inlinenoexcept

◆ getAdjacencyContainer()

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
const auto & fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::getAdjacencyContainer ( ) const
inline

◆ getEdges()

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
auto fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::getEdges ( ) const
inline

◆ getInboundEdges()

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
auto fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::getInboundEdges ( const N &  node) const
inline

◆ getNeighbours()

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
auto fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::getNeighbours ( const N &  node) const
inlinenoexcept

◆ getNodes()

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
auto fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::getNodes ( ) const
inlinenoexcept

◆ getOutboundEdges()

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
auto fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::getOutboundEdges ( const N &  node) const
inline

◆ getReachableFrom()

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
auto fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::getReachableFrom ( const N &  node) const
inlinenoexcept

◆ makeEdge()

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
E fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::makeEdge ( const N &  from,
const N &  to 
) const
inline

◆ removeEdge() [1/2]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
void fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::removeEdge ( const E &  edge)
inline

◆ removeEdge() [2/2]

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
void fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::removeEdge ( const N &  from,
const N &  to 
)
inline

◆ removeNode()

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
void fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::removeNode ( const N &  node)
inline

Member Data Documentation

◆ g

template<class DecoratorImpl , class G , Edge E = typename G::edge_type>
G fishnet::graph::GraphDecorator< DecoratorImpl, G, E >::g
protected

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