Galois
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy > Class Template Reference

A Graph. More...

#include <Morph_SepInOut_Graph.h>

Inheritance diagram for galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >:

Classes

struct  AuxNode
 
struct  with_directional
 
struct  with_edge_data
 
struct  with_file_edge_data
 
struct  with_no_lockable
 If true, do not use abstract locks in graph. More...
 
struct  with_node_data
 
struct  with_sorted_neighbors
 

Public Types

typedef
read_with_aux_first_graph_tag 
read_tag
 
typedef gNode * GraphNode
 Graph node handle. More...
 
typedef EdgeTy edge_data_type
 Edge data type. More...
 
typedef FileEdgeTy file_edge_data_type
 Edge data type of file we are loading this graph from. More...
 
typedef NodeTy node_data_type
 Node data type. More...
 
typedef boost::filter_iterator
< is_out_edge, typename
gNodeTypes::iterator > 
edge_iterator
 (Out or Undirected) Edge iterator More...
 
typedef boost::filter_iterator
< is_in_edge, typename
gNodeTypes::iterator > 
in_edge_iterator
 In Edge iterator. More...
 
typedef
gNodeTypes::EdgeInfo::reference 
edge_data_reference
 Reference to edge data. More...
 
typedef gNodeTypes::reference node_data_reference
 Reference to node data. More...
 
typedef
boost::transform_iterator
< makeGraphNode,
boost::filter_iterator
< is_node, typename
NodeListTy::iterator > > 
iterator
 Node iterator. More...
 
using AuxNodePadded = typename galois::substrate::CacheLineStorage< AuxNode >
 
using ReadGraphAuxData = typename std::conditional< DirectedNotInOut, LargeArray< GraphNode >, LargeArray< AuxNodePadded >>::type
 
typedef iterator local_iterator
 

Public Member Functions

template<typename... Args>
GraphNode createNode (Args &&...args)
 Creates a new node holding the indicated data. More...
 
void addNode (const GraphNode &n, galois::MethodFlag mflag=MethodFlag::WRITE)
 Adds a node to the graph. More...
 
node_data_reference getData (const GraphNode &n, galois::MethodFlag mflag=MethodFlag::WRITE) const
 Gets the node data for a node. More...
 
bool containsNode (const GraphNode &n, galois::MethodFlag mflag=MethodFlag::WRITE) const
 Checks if a node is in the graph. More...
 
void removeNode (GraphNode n, galois::MethodFlag mflag=MethodFlag::WRITE)
 Removes a node from the graph along with all its outgoing/incoming edges for undirected graphs or outgoing edges for directed graphs. More...
 
void resizeEdges (GraphNode src, size_t size, galois::MethodFlag mflag=MethodFlag::WRITE)
 Resize the edges of the node. More...
 
edge_iterator addEdge (GraphNode src, GraphNode dst, galois::MethodFlag mflag=MethodFlag::WRITE)
 Adds an edge to graph, replacing existing value if edge already exists. More...
 
template<typename... Args>
edge_iterator addMultiEdge (GraphNode src, GraphNode dst, galois::MethodFlag mflag, Args &&...args)
 Adds and initializes an edge to graph but does not check for duplicate edges. More...
 
void removeEdge (GraphNode src, edge_iterator dst, galois::MethodFlag mflag=MethodFlag::WRITE)
 Removes an edge from the graph. More...
 
template<bool _DirectedInOut = (Directional && InOut)>
void removeInEdge (GraphNode dst, in_edge_iterator src, galois::MethodFlag mflag=MethodFlag::WRITE, typename std::enable_if< _DirectedInOut >::type *=0)
 
edge_iterator findEdge (GraphNode src, GraphNode dst, galois::MethodFlag mflag=MethodFlag::WRITE)
 Finds if an edge between src and dst exists. More...
 
edge_iterator findEdgeSortedByDst (GraphNode src, GraphNode dst, galois::MethodFlag mflag=MethodFlag::WRITE)
 
template<bool _Undirected = !Directional>
edge_iterator findInEdge (GraphNode src, GraphNode dst, galois::MethodFlag mflag=MethodFlag::WRITE, typename std::enable_if< _Undirected >::type *=0)
 
template<bool _DirectedInOut = (Directional && InOut)>
in_edge_iterator findInEdge (GraphNode src, GraphNode dst, galois::MethodFlag mflag=MethodFlag::WRITE, typename std::enable_if< _DirectedInOut >::type *=0)
 
edge_data_reference getEdgeData (edge_iterator ii, galois::MethodFlag mflag=MethodFlag::UNPROTECTED) const
 Returns the edge data associated with the edge. More...
 
edge_data_reference getEdgeData (in_edge_iterator ii, galois::MethodFlag mflag=MethodFlag::UNPROTECTED) const
 
GraphNode getEdgeDst (edge_iterator ii)
 Returns the destination of an edge. More...
 
GraphNode getEdgeDst (in_edge_iterator ii)
 
void sortEdgesByDst (GraphNode N, galois::MethodFlag mflag=MethodFlag::WRITE)
 
void sortAllEdgesByDst (MethodFlag mflag=MethodFlag::WRITE)
 
edge_iterator edge_begin (GraphNode N, galois::MethodFlag mflag=MethodFlag::WRITE)
 Returns an iterator to the neighbors of a node. More...
 
template<bool _Undirected = !Directional>
in_edge_iterator in_edge_begin (GraphNode N, galois::MethodFlag mflag=MethodFlag::WRITE, typename std::enable_if<!_Undirected >::type *=0)
 
template<bool _Undirected = !Directional>
edge_iterator in_edge_begin (GraphNode N, galois::MethodFlag mflag=MethodFlag::WRITE, typename std::enable_if< _Undirected >::type *=0)
 
edge_iterator edge_end (GraphNode N, galois::MethodFlag GALOIS_UNUSED(mflag)=MethodFlag::WRITE)
 Returns the end of the neighbor iterator. More...
 
template<bool _Undirected = !Directional>
in_edge_iterator in_edge_end (GraphNode N, galois::MethodFlag GALOIS_UNUSED(mflag)=MethodFlag::WRITE, typename std::enable_if<!_Undirected >::type *=0)
 
template<bool _Undirected = !Directional>
edge_iterator in_edge_end (GraphNode N, galois::MethodFlag mflag=MethodFlag::WRITE, typename std::enable_if< _Undirected >::type *=0)
 
runtime::iterable
< NoDerefIterator
< edge_iterator > > 
edges (GraphNode N, galois::MethodFlag mflag=MethodFlag::WRITE)
 
template<bool _Undirected = !Directional>
runtime::iterable
< NoDerefIterator
< in_edge_iterator > > 
in_edges (GraphNode N, galois::MethodFlag mflag=MethodFlag::WRITE, typename std::enable_if<!_Undirected >::type *=0)
 
template<bool _Undirected = !Directional>
runtime::iterable
< NoDerefIterator
< edge_iterator > > 
in_edges (GraphNode N, galois::MethodFlag mflag=MethodFlag::WRITE, typename std::enable_if< _Undirected >::type *=0)
 
internal::EdgesIterator
< Morph_SepInOut_Graph
out_edges (GraphNode N, MethodFlag mflag=MethodFlag::WRITE)
 An object with begin() and end() methods to iterate over the outgoing edges of N. More...
 
iterator begin ()
 Returns an iterator to all the nodes in the graph. More...
 
iterator end ()
 Returns the end of the node iterator. Not thread-safe. More...
 
local_iterator local_begin ()
 
local_iterator local_end ()
 
unsigned int size ()
 Returns the number of nodes in the graph. More...
 
size_t sizeOfEdgeData () const
 Returns the size of edge data. More...
 
void allocateFrom (FileGraph &graph, ReadGraphAuxData &aux)
 
template<bool V = DirectedNotInOut>
std::enable_if_t<!V > constructNodesFrom (FileGraph &graph, unsigned tid, unsigned total, ReadGraphAuxData &aux)
 
template<bool V = DirectedNotInOut>
std::enable_if_t< V > constructNodesFrom (FileGraph &graph, unsigned tid, unsigned total, ReadGraphAuxData &aux)
 
template<bool V = DirectedNotInOut>
std::enable_if_t<!V > constructOutEdgesFrom (FileGraph &graph, unsigned tid, unsigned total, ReadGraphAuxData &aux)
 
template<bool V = DirectedNotInOut>
std::enable_if_t< V > constructOutEdgesFrom (FileGraph &graph, unsigned tid, unsigned total, const ReadGraphAuxData &aux)
 
template<bool V = DirectedNotInOut>
std::enable_if_t<!V > constructInEdgesFrom (FileGraph &graph, unsigned tid, unsigned total, ReadGraphAuxData &aux)
 
template<bool V = DirectedNotInOut>
std::enable_if_t< V > constructInEdgesFrom (FileGraph &, unsigned, unsigned, ReadGraphAuxData &)
 

Static Public Attributes

static constexpr const bool DirectedNotInOut = (Directional && !InOut)
 

Detailed Description

template<typename NodeTy, typename EdgeTy, bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
class galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >

A Graph.

An example of use:

struct Node {
... // Definition of node data
};
// Create graph
Graph g;
Node n1, n2;
Graph::GraphNode a, b;
a = g.createNode(n1);
g.addNode(a);
b = g.createNode(n2);
g.addNode(b);
g.getEdgeData(g.addEdge(a, b)) = 5;
// Traverse graph
for (Graph::iterator ii = g.begin(), ei = g.end(); ii != ei; ++ii) {
Graph::GraphNode src = *ii;
for (Graph::edge_iterator jj = g.edge_begin(src), ej = g.edge_end(src);
++jj) { Graph::GraphNode dst = graph.getEdgeDst(jj); int edgeData =
g.getEdgeData(jj); assert(edgeData == 5);
}
}

And in C++11:

// Traverse graph
for (Graph::GraphNode src : g) {
for (Graph::edge_iterator edge : g.out_edges(src)) {
Graph::GraphNode dst = g.getEdgeDst(edge);
int edgeData = g.getEdgeData(edge);
assert(edgeData == 5);
}
}
Template Parameters
NodeTyType of node data
EdgeTyType of edge data
Directionaltrue if graph is directed
InOuttrue if directed graph tracks in-edges
SortedNeighborsKeep neighbors sorted (for faster findEdge)

Member Typedef Documentation

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
using galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::AuxNodePadded = typename galois::substrate::CacheLineStorage<AuxNode>
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
typedef gNodeTypes::EdgeInfo::reference galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::edge_data_reference

Reference to edge data.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
typedef EdgeTy galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::edge_data_type

Edge data type.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
typedef boost::filter_iterator<is_out_edge, typename gNodeTypes::iterator> galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::edge_iterator

(Out or Undirected) Edge iterator

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
typedef FileEdgeTy galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::file_edge_data_type

Edge data type of file we are loading this graph from.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
typedef gNode* galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::GraphNode

Graph node handle.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
typedef boost::filter_iterator<is_in_edge, typename gNodeTypes::iterator> galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::in_edge_iterator

In Edge iterator.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
typedef boost::transform_iterator< makeGraphNode, boost::filter_iterator<is_node, typename NodeListTy::iterator> > galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::iterator

Node iterator.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
typedef iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::local_iterator
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
typedef gNodeTypes::reference galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::node_data_reference

Reference to node data.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
typedef NodeTy galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::node_data_type

Node data type.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
typedef read_with_aux_first_graph_tag galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::read_tag
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
using galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::ReadGraphAuxData = typename std::conditional<DirectedNotInOut, LargeArray<GraphNode>, LargeArray<AuxNodePadded>>::type

Member Function Documentation

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
edge_iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::addEdge ( GraphNode  src,
GraphNode  dst,
galois::MethodFlag  mflag = MethodFlag::WRITE 
)
inline

Adds an edge to graph, replacing existing value if edge already exists.

Ignore the edge data, let the caller use the returned iterator to set the value if desired. This frees us from dealing with the void edge data problem in this API

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<typename... Args>
edge_iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::addMultiEdge ( GraphNode  src,
GraphNode  dst,
galois::MethodFlag  mflag,
Args &&...  args 
)
inline

Adds and initializes an edge to graph but does not check for duplicate edges.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::addNode ( const GraphNode n,
galois::MethodFlag  mflag = MethodFlag::WRITE 
)
inline

Adds a node to the graph.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::allocateFrom ( FileGraph graph,
ReadGraphAuxData aux 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::begin ( )
inline

Returns an iterator to all the nodes in the graph.

Not thread-safe.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<bool V = DirectedNotInOut>
std::enable_if_t<!V> galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::constructInEdgesFrom ( FileGraph graph,
unsigned  tid,
unsigned  total,
ReadGraphAuxData aux 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<bool V = DirectedNotInOut>
std::enable_if_t<V> galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::constructInEdgesFrom ( FileGraph ,
unsigned  ,
unsigned  ,
ReadGraphAuxData  
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<bool V = DirectedNotInOut>
std::enable_if_t<!V> galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::constructNodesFrom ( FileGraph graph,
unsigned  tid,
unsigned  total,
ReadGraphAuxData aux 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<bool V = DirectedNotInOut>
std::enable_if_t<V> galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::constructNodesFrom ( FileGraph graph,
unsigned  tid,
unsigned  total,
ReadGraphAuxData aux 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<bool V = DirectedNotInOut>
std::enable_if_t<!V> galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::constructOutEdgesFrom ( FileGraph graph,
unsigned  tid,
unsigned  total,
ReadGraphAuxData aux 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<bool V = DirectedNotInOut>
std::enable_if_t<V> galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::constructOutEdgesFrom ( FileGraph graph,
unsigned  tid,
unsigned  total,
const ReadGraphAuxData aux 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
bool galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::containsNode ( const GraphNode n,
galois::MethodFlag  mflag = MethodFlag::WRITE 
) const
inline

Checks if a node is in the graph.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<typename... Args>
GraphNode galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::createNode ( Args &&...  args)
inline

Creates a new node holding the indicated data.

Usually you should call addNode() afterwards.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
edge_iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::edge_begin ( GraphNode  N,
galois::MethodFlag  mflag = MethodFlag::WRITE 
)
inline

Returns an iterator to the neighbors of a node.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
edge_iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::edge_end ( GraphNode  N,
galois::MethodFlag   GALOIS_UNUSEDmflag = MethodFlag::WRITE 
)
inline

Returns the end of the neighbor iterator.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
runtime::iterable<NoDerefIterator<edge_iterator> > galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::edges ( GraphNode  N,
galois::MethodFlag  mflag = MethodFlag::WRITE 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::end ( )
inline

Returns the end of the node iterator. Not thread-safe.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
edge_iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::findEdge ( GraphNode  src,
GraphNode  dst,
galois::MethodFlag  mflag = MethodFlag::WRITE 
)
inline

Finds if an edge between src and dst exists.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
edge_iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::findEdgeSortedByDst ( GraphNode  src,
GraphNode  dst,
galois::MethodFlag  mflag = MethodFlag::WRITE 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<bool _Undirected = !Directional>
edge_iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::findInEdge ( GraphNode  src,
GraphNode  dst,
galois::MethodFlag  mflag = MethodFlag::WRITE,
typename std::enable_if< _Undirected >::type *  = 0 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<bool _DirectedInOut = (Directional && InOut)>
in_edge_iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::findInEdge ( GraphNode  src,
GraphNode  dst,
galois::MethodFlag  mflag = MethodFlag::WRITE,
typename std::enable_if< _DirectedInOut >::type *  = 0 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
node_data_reference galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::getData ( const GraphNode n,
galois::MethodFlag  mflag = MethodFlag::WRITE 
) const
inline

Gets the node data for a node.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
edge_data_reference galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::getEdgeData ( edge_iterator  ii,
galois::MethodFlag  mflag = MethodFlag::UNPROTECTED 
) const
inline

Returns the edge data associated with the edge.

It is an error to get the edge data for a non-existent edge. It is an error to get edge data for inactive edges. By default, the mflag is galois::MethodFlag::UNPROTECTED because edge_begin() dominates this call and should perform the appropriate locking.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
edge_data_reference galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::getEdgeData ( in_edge_iterator  ii,
galois::MethodFlag  mflag = MethodFlag::UNPROTECTED 
) const
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
GraphNode galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::getEdgeDst ( edge_iterator  ii)
inline

Returns the destination of an edge.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
GraphNode galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::getEdgeDst ( in_edge_iterator  ii)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<bool _Undirected = !Directional>
in_edge_iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::in_edge_begin ( GraphNode  N,
galois::MethodFlag  mflag = MethodFlag::WRITE,
typename std::enable_if<!_Undirected >::type *  = 0 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<bool _Undirected = !Directional>
edge_iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::in_edge_begin ( GraphNode  N,
galois::MethodFlag  mflag = MethodFlag::WRITE,
typename std::enable_if< _Undirected >::type *  = 0 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<bool _Undirected = !Directional>
in_edge_iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::in_edge_end ( GraphNode  N,
galois::MethodFlag   GALOIS_UNUSEDmflag = MethodFlag::WRITE,
typename std::enable_if<!_Undirected >::type *  = 0 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<bool _Undirected = !Directional>
edge_iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::in_edge_end ( GraphNode  N,
galois::MethodFlag  mflag = MethodFlag::WRITE,
typename std::enable_if< _Undirected >::type *  = 0 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<bool _Undirected = !Directional>
runtime::iterable<NoDerefIterator<in_edge_iterator> > galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::in_edges ( GraphNode  N,
galois::MethodFlag  mflag = MethodFlag::WRITE,
typename std::enable_if<!_Undirected >::type *  = 0 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<bool _Undirected = !Directional>
runtime::iterable<NoDerefIterator<edge_iterator> > galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::in_edges ( GraphNode  N,
galois::MethodFlag  mflag = MethodFlag::WRITE,
typename std::enable_if< _Undirected >::type *  = 0 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
local_iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::local_begin ( )
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
local_iterator galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::local_end ( )
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
internal::EdgesIterator<Morph_SepInOut_Graph> galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::out_edges ( GraphNode  N,
MethodFlag  mflag = MethodFlag::WRITE 
)
inline

An object with begin() and end() methods to iterate over the outgoing edges of N.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::removeEdge ( GraphNode  src,
edge_iterator  dst,
galois::MethodFlag  mflag = MethodFlag::WRITE 
)
inline

Removes an edge from the graph.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
template<bool _DirectedInOut = (Directional && InOut)>
void galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::removeInEdge ( GraphNode  dst,
in_edge_iterator  src,
galois::MethodFlag  mflag = MethodFlag::WRITE,
typename std::enable_if< _DirectedInOut >::type *  = 0 
)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::removeNode ( GraphNode  n,
galois::MethodFlag  mflag = MethodFlag::WRITE 
)
inline

Removes a node from the graph along with all its outgoing/incoming edges for undirected graphs or outgoing edges for directed graphs.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::resizeEdges ( GraphNode  src,
size_t  size,
galois::MethodFlag  mflag = MethodFlag::WRITE 
)
inline

Resize the edges of the node.

For best performance, should be done serially.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
unsigned int galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::size ( )
inline

Returns the number of nodes in the graph.

Not thread-safe.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
size_t galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::sizeOfEdgeData ( ) const
inline

Returns the size of edge data.

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::sortAllEdgesByDst ( MethodFlag  mflag = MethodFlag::WRITE)
inline
template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::sortEdgesByDst ( GraphNode  N,
galois::MethodFlag  mflag = MethodFlag::WRITE 
)
inline

Member Data Documentation

template<typename NodeTy , typename EdgeTy , bool Directional, bool InOut = false, bool HasNoLockable = false, bool SortedNeighbors = false, typename FileEdgeTy = EdgeTy>
constexpr const bool galois::graphs::Morph_SepInOut_Graph< NodeTy, EdgeTy, Directional, InOut, HasNoLockable, SortedNeighbors, FileEdgeTy >::DirectedNotInOut = (Directional && !InOut)
static

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