Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable > Class Template Reference

#include <OCGraph.h>

Inheritance diagram for Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >:
Galois::Graph::detail::LocalIteratorFeature< false > Galois::Graph::detail::OutOfLineLockableFeature< HasOutOfLineLockable &&!HasNoLockable >

List of all members.

Classes

class  segment_type
struct  with_id
struct  with_no_lockable
struct  with_node_data
struct  with_numa_alloc
struct  with_out_of_line_lockable

Public Types

typedef
read_oc_immutable_edge_graph_tag 
read_tag
typedef int tt_is_segmented
typedef OCFileGraph::GraphNode GraphNode
typedef EdgeTy edge_data_type
typedef NodeTy node_data_type
typedef OCFileGraph::template
EdgeReference< EdgeTy >::type 
edge_data_reference
typedef NodeInfo::reference node_data_reference
typedef OCFileGraph::edge_iterator edge_iterator
typedef edge_iterator in_edge_iterator
typedef OCFileGraph::iterator iterator
typedef iterator const_iterator
typedef
boost::counting_iterator
< GraphNode
local_iterator
typedef local_iterator const_local_iterator

Public Member Functions

 ~OCImmutableEdgeGraph ()
void keepInMemory ()
segment_type nextSegment (size_t edges)
 Returns a segment starting from the beginning of the graph with either (1) some number of nodes with all their edges but no more than numEdges else (2) one node and all its edges.
segment_type nextSegment (const segment_type &cur, size_t edges)
 Returns the next segment after cur.
void load (segment_type &seg)
void unload (segment_type &seg)
iterator begin (const segment_type &cur)
iterator end (const segment_type &cur)
node_data_reference getData (GraphNode N, MethodFlag mflag=MethodFlag::ALL)
edge_data_reference getEdgeData (const segment_type &segment, edge_iterator ni, MethodFlag mflag=MethodFlag::NONE)
GraphNode getEdgeDst (const segment_type &segment, edge_iterator ni)
uint64_t size () const
uint64_t sizeEdges () const
iterator begin () const
iterator end () const
const_local_iterator local_begin () const
const_local_iterator local_end () const
local_iterator local_begin ()
local_iterator local_end ()
edge_iterator edge_begin (const segment_type &segment, GraphNode N, MethodFlag mflag=MethodFlag::ALL)
edge_iterator edge_end (const segment_type &segment, GraphNode N, MethodFlag mflag=MethodFlag::ALL)
edge_data_reference getInEdgeData (const segment_type &segment, edge_iterator ni, MethodFlag mflag=MethodFlag::NONE)
GraphNode getInEdgeDst (const segment_type &segment, in_edge_iterator ni)
in_edge_iterator in_edge_begin (const segment_type &segment, GraphNode N, MethodFlag mflag=MethodFlag::ALL)
in_edge_iterator in_edge_end (const segment_type &segment, GraphNode N, MethodFlag mflag=MethodFlag::ALL)
size_t idFromNode (GraphNode N)
GraphNode nodeFromId (size_t N)
void createFrom (const std::string &fname)
 Assumes that the graph is symmetric.
void createFrom (const std::string &fname, const std::string &transpose)

Private Types

typedef detail::NodeInfoBase
< NodeTy,!HasNoLockable
&&!HasOutOfLineLockable > 
NodeInfo
typedef LargeArray< NodeInfoNodeData

Private Member Functions

segment_type computeSegment (size_t startNode, size_t numEdges)
void load (segment_type &seg, size_t sizeof_data)
template<bool _A1 = HasNoLockable, bool _A2 = HasOutOfLineLockable>
void acquireNode (GraphNode N, MethodFlag mflag, typename std::enable_if<!_A1 &&!_A2 >::type *=0)
template<bool _A1 = HasOutOfLineLockable, bool _A2 = HasNoLockable>
void acquireNode (GraphNode N, MethodFlag mflag, typename std::enable_if< _A1 &&!_A2 >::type *=0)
template<bool _A1 = HasOutOfLineLockable, bool _A2 = HasNoLockable>
void acquireNode (GraphNode N, MethodFlag mflag, typename std::enable_if< _A2 >::type *=0)

Private Attributes

NodeData nodeData
OCFileGraph outGraph
OCFileGraph inGraphStorage
OCFileGraphinGraph
uint64_t numNodes
uint64_t numEdges
Galois::optional< segment_typememorySegment

template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool HasOutOfLineLockable = false>
class Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >


Member Typedef Documentation

template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
typedef iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::const_iterator
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
typedef local_iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::const_local_iterator
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
typedef OCFileGraph::template EdgeReference<EdgeTy>::type Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::edge_data_reference
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
typedef EdgeTy Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::edge_data_type
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
typedef OCFileGraph::edge_iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::edge_iterator
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
typedef OCFileGraph::GraphNode Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::GraphNode
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
typedef edge_iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::in_edge_iterator
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
typedef OCFileGraph::iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::iterator
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
typedef boost::counting_iterator<GraphNode> Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::local_iterator
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
typedef NodeInfo::reference Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::node_data_reference
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
typedef NodeTy Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::node_data_type
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
typedef LargeArray<NodeInfo> Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::NodeData [private]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
typedef detail::NodeInfoBase<NodeTy,!HasNoLockable && !HasOutOfLineLockable> Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::NodeInfo [private]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
typedef read_oc_immutable_edge_graph_tag Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::read_tag
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
typedef int Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::tt_is_segmented

Constructor & Destructor Documentation

template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::~OCImmutableEdgeGraph (  )  [inline]

Member Function Documentation

template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
template<bool _A1 = HasOutOfLineLockable, bool _A2 = HasNoLockable>
void Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::acquireNode ( GraphNode  N,
MethodFlag  mflag,
typename std::enable_if< _A2 >::type = 0 
) [inline, private]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
template<bool _A1 = HasOutOfLineLockable, bool _A2 = HasNoLockable>
void Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::acquireNode ( GraphNode  N,
MethodFlag  mflag,
typename std::enable_if< _A1 &&!_A2 >::type = 0 
) [inline, private]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
template<bool _A1 = HasNoLockable, bool _A2 = HasOutOfLineLockable>
void Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::acquireNode ( GraphNode  N,
MethodFlag  mflag,
typename std::enable_if<!_A1 &&!_A2 >::type = 0 
) [inline, private]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::begin (  )  const [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::begin ( const segment_type cur  )  [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
segment_type Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::computeSegment ( size_t  startNode,
size_t  numEdges 
) [inline, private]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
void Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::createFrom ( const std::string &  fname,
const std::string &  transpose 
) [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
void Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::createFrom ( const std::string &  fname  )  [inline]

Assumes that the graph is symmetric.

template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
edge_iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::edge_begin ( const segment_type segment,
GraphNode  N,
MethodFlag  mflag = MethodFlag::ALL 
) [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
edge_iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::edge_end ( const segment_type segment,
GraphNode  N,
MethodFlag  mflag = MethodFlag::ALL 
) [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::end (  )  const [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::end ( const segment_type cur  )  [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
node_data_reference Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::getData ( GraphNode  N,
MethodFlag  mflag = MethodFlag::ALL 
) [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
edge_data_reference Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::getEdgeData ( const segment_type segment,
edge_iterator  ni,
MethodFlag  mflag = MethodFlag::NONE 
) [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
GraphNode Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::getEdgeDst ( const segment_type segment,
edge_iterator  ni 
) [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
edge_data_reference Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::getInEdgeData ( const segment_type segment,
edge_iterator  ni,
MethodFlag  mflag = MethodFlag::NONE 
) [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
GraphNode Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::getInEdgeDst ( const segment_type segment,
in_edge_iterator  ni 
) [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
size_t Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::idFromNode ( GraphNode  N  )  [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
in_edge_iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::in_edge_begin ( const segment_type segment,
GraphNode  N,
MethodFlag  mflag = MethodFlag::ALL 
) [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
in_edge_iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::in_edge_end ( const segment_type segment,
GraphNode  N,
MethodFlag  mflag = MethodFlag::ALL 
) [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
void Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::keepInMemory (  )  [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
void Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::load ( segment_type seg  )  [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
void Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::load ( segment_type seg,
size_t  sizeof_data 
) [inline, private]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
local_iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::local_begin (  )  [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
const_local_iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::local_begin (  )  const [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
local_iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::local_end (  )  [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
const_local_iterator Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::local_end (  )  const [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
segment_type Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::nextSegment ( const segment_type cur,
size_t  edges 
) [inline]

Returns the next segment after cur.

template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
segment_type Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::nextSegment ( size_t  edges  )  [inline]

Returns a segment starting from the beginning of the graph with either (1) some number of nodes with all their edges but no more than numEdges else (2) one node and all its edges.

template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
GraphNode Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::nodeFromId ( size_t  N  )  [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
uint64_t Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::size (  )  const [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
uint64_t Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::sizeEdges (  )  const [inline]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
void Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::unload ( segment_type seg  )  [inline]

Member Data Documentation

template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
OCFileGraph* Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::inGraph [private]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
OCFileGraph Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::inGraphStorage [private]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
Galois::optional<segment_type> Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::memorySegment [private]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
NodeData Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::nodeData [private]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
uint64_t Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::numEdges [private]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
uint64_t Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::numNodes [private]
template<typename NodeTy , typename EdgeTy , bool HasNoLockable = false, bool HasOutOfLineLockable = false>
OCFileGraph Galois::Graph::OCImmutableEdgeGraph< NodeTy, EdgeTy, HasNoLockable, HasOutOfLineLockable >::outGraph [private]

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

Generated on 2 Nov 2013 for Galois by  doxygen 1.6.1