223 std::map<t_id,std::map<t_id,t_id> >
_edges;
236 friend std::ostream& operator<<(std::ostream& os,
const Graph& o);
void readLock()
Set a lock on reading.
Definition: graph.cpp:412
std::string t_id
Definition: typedefs.h:35
unsigned short int _rlock_count
Definition: graph.h:227
t_id getEdge(const libgexf::t_id source_id, const libgexf::t_id target_id) const
Get the edge id.
Definition: graph.cpp:255
unsigned int getEdgeCount() const
Count the edges.
Definition: graph.cpp:280
Definition: abstractiter.h:32
unsigned int getDegree(const libgexf::t_id node_id) const
Get node degree.
Definition: graph.cpp:295
std::set< t_id > _nodes
Definition: graph.h:222
unsigned int getNodeCount() const
Count the nodes.
Definition: graph.cpp:271
void removeEdge(const libgexf::t_id source_id, const libgexf::t_id target_id)
Remove an edge.
Definition: graph.cpp:190
void writeUnlock()
Unset a lock on writing.
Definition: graph.cpp:438
std::map< t_id, std::map< t_edge_property, t_edge_value > > _edges_properties
Definition: graph.h:226
t_edge_type
Available edge types.
Definition: typedefs.h:50
bool isReadLock()
Test if a read lock exists.
Definition: graph.cpp:444
void writeLock()
Get a lock on writing.
Definition: graph.cpp:431
Exception occuring on a read-lock.
Definition: exceptions.h:43
bool isWriteLock()
Test if a write lock exists.
Definition: graph.cpp:450
std::set< t_id > _bloom_edges
Definition: graph.h:225
bool isUnlock()
Unset all locks.
Definition: graph.cpp:456
std::map< t_id, std::set< t_id > > _reverse_edges
Definition: graph.h:224
char _lock_flag
Flag used for determining the lock type:
Definition: graph.h:234
Topology structure of the graph.
Definition: graph.h:49
void readUnlock()
Unset a lock on reading.
Definition: graph.cpp:422
void addNode(const libgexf::t_id id)
Add a node.
Definition: graph.cpp:57
std::map< t_id, std::map< t_id, t_id > > _edges
Definition: graph.h:223
bool containsEdge(const libgexf::t_id source_id, const libgexf::t_id target_id) const
Test edge existence.
Definition: graph.cpp:242
libgexf::EdgeIter * getEdges() const
Get all edges.
Definition: graph.cpp:227
void addEdge(const libgexf::t_id id, const libgexf::t_id source_id, const libgexf::t_id target_id, const float weight=1.0, const libgexf::t_edge_type type=EDGE_UNDEF)
Add an edge.
Definition: graph.cpp:65
Iterator on edges.
Definition: edgeiter.h:45
libgexf::NodeIter * getNodes() const
Get all nodes.
Definition: graph.cpp:221
void clearEdges()
Delete all edges.
Definition: graph.cpp:402
Iterator on nodes.
Definition: nodeiter.h:45
bool containsNode(const libgexf::t_id id) const
Test node existence.
Definition: graph.cpp:233
Exception occuring on a write-lock.
Definition: exceptions.h:57
void removeNode(const libgexf::t_id id)
Remove a node.
Definition: graph.cpp:178
std::vector< libgexf::t_id > getNeighbors(const libgexf::t_id node_id) const
Get node neighbors.
Definition: graph.cpp:328
void clear()
Clear the graph.
Definition: graph.cpp:390