#include <graph.hh>
Public Types | |
typedef arcset_t | aset_t |
Convenience alias. | |
typedef nodeset_t | nset_t |
Convenience alias. | |
Public Member Functions | |
std::string | to_string () const |
AdjGraph () | |
AdjGraph (const This &other) | |
This & | operator= (const This &other) |
const aset_t & | arcs () const |
const nset_t & | nodes () const |
std::pair < nset_t::const_iterator, bool > | insert_node (const AdjNode &n) |
std::pair < aset_t::const_iterator, bool > | insert_arc (const AdjInfo &a) |
void | insert_edge (const AdjInfo &a) |
void | remove_arc (aset_t::iterator pos) |
void | remove_arc (const AdjInfo &a) |
void | remove_edge (aset_t::iterator pos) |
void | remove_edge (const AdjInfo &a) |
void | remove_arc_then_node (aset_t::iterator pos) |
void | remove_arc_then_node (const AdjInfo &a) |
void | remove_edge_then_node (aset_t::iterator pos) |
void | remove_edge_then_node (const AdjInfo &a) |
void | remove_node (nset_t::iterator pos) |
void | remove_node (const AdjNode &n) |
void | remove_node_if_alone (nset_t::iterator pos) |
void | remove_node_if_alone (const AdjNode &n) |
Private Types | |
typedef AdjGraph | This |
typedef std::hash_set< const AdjInfo *, hash_AdjInfo, utl::pequal_to< AdjInfo > > | apset_t |
Set of pointers to arc. | |
typedef std::hash_map< const AdjNode *, apset_t, hash_AdjNode, utl::pequal_to < AdjNode > > | apsetmap_t |
Map from node pointer to apset_t. | |
Private Member Functions | |
void | build_asetmap () |
Private Attributes | |
aset_t | _aset |
Set of arcs. | |
nset_t | _nset |
Set of nodes. | |
apsetmap_t | _apset_map |
Map of nodes to connecting arcs. |
typedef AdjGraph olsr::gra::AdjGraph::This [private] |
std::hash_set< const AdjInfo * > olsr::gra::AdjGraph::apset_t [private] |
Set of pointers to arc.
Used to build subsets of the set of arcs.
std::hash_map< const AdjNode *, apset_t > olsr::gra::AdjGraph::apsetmap_t [private] |
Convenience alias.
Convenience alias.
olsr::gra::AdjGraph::AdjGraph | ( | ) | [inline] |
Graph constructor
olsr::gra::AdjGraph::AdjGraph | ( | const This & | other | ) | [inline] |
Graph copy constructor
References build_asetmap().
std::string olsr::gra::AdjGraph::to_string | ( | ) | const [inline] |
Graph assignment operator
References _apset_map, _aset, _nset, and build_asetmap().
const aset_t& olsr::gra::AdjGraph::arcs | ( | ) | const [inline] |
Accessor to the set of arcs.
References _aset.
Referenced by olsr::alg::dijkstra().
const nset_t& olsr::gra::AdjGraph::nodes | ( | ) | const [inline] |
Accessor to the set of nodes.
References _nset.
Referenced by olsr::alg::dijkstra(), and olsr::set::CoherenceProxy::update_graph().
std::pair< AdjGraph::nset_t::const_iterator, bool > olsr::gra::AdjGraph::insert_node | ( | const AdjNode & | n | ) | [inline] |
Node insertion method.
References _apset_map, _nset, and olsr::utl::Set< Elem, Iset, Iter, CIter >::insert().
Referenced by olsr::set::TopologySet::insert(), olsr::set::TwoHopNeighborSet::insert(), and olsr::set::CoherenceProxy::update_graph().
std::pair< AdjGraph::aset_t::const_iterator, bool > olsr::gra::AdjGraph::insert_arc | ( | const AdjInfo & | a | ) | [inline] |
Arc insertion method.
References _apset_map, _aset, _nset, olsr::utl::Set< Elem, Iset, Iter, CIter >::end(), olsr::gra::AdjInfo::endpoint1(), olsr::gra::AdjInfo::endpoint2(), olsr::utl::Set< Elem, Iset, Iter, CIter >::find(), olsr::utl::Set< Elem, Iset, Iter, CIter >::insert(), and olsr::gra::AdjNode::make_key().
Referenced by olsr::set::TopologySet::insert(), olsr::set::TwoHopNeighborSet::insert(), and insert_edge().
void olsr::gra::AdjGraph::insert_edge | ( | const AdjInfo & | a | ) | [inline] |
Edge insertion method. Inserts both the arc and the inverted arc.
References insert_arc(), and olsr::gra::AdjInfo::invert().
void olsr::gra::AdjGraph::remove_arc | ( | aset_t::iterator | pos | ) | [inline] |
Arc removal method.
References _apset_map, _aset, _nset, olsr::utl::Set< Elem, Iset, Iter, CIter >::end(), olsr::utl::Set< Elem, Iset, Iter, CIter >::erase(), olsr::utl::Set< Elem, Iset, Iter, CIter >::find(), and olsr::gra::AdjNode::make_key().
Referenced by olsr::set::TopologySet::erase(), olsr::set::TwoHopNeighborSet::erase(), remove_arc(), remove_arc_then_node(), and remove_edge().
void olsr::gra::AdjGraph::remove_arc | ( | const AdjInfo & | a | ) | [inline] |
Arc removal method.
References _aset, olsr::utl::Set< Elem, Iset, Iter, CIter >::end(), olsr::utl::Set< Elem, Iset, Iter, CIter >::find(), and remove_arc().
void olsr::gra::AdjGraph::remove_edge | ( | aset_t::iterator | pos | ) | [inline] |
Edge removal method. Removes both the arc and the inverted arc.
References olsr::gra::AdjInfo::invert(), and remove_arc().
void olsr::gra::AdjGraph::remove_edge | ( | const AdjInfo & | a | ) | [inline] |
Edge removal method. Removed both the arc and the inverted arc.
References olsr::gra::AdjInfo::invert(), and remove_arc().
void olsr::gra::AdjGraph::remove_arc_then_node | ( | aset_t::iterator | pos | ) | [inline] |
Arc removal method. Removes the endpoint nodes if they don't belong to other arcs.
References _apset_map, _nset, olsr::utl::Set< Elem, Iset, Iter, CIter >::end(), olsr::utl::Set< Elem, Iset, Iter, CIter >::find(), olsr::gra::AdjNode::make_key(), remove_arc(), and remove_node().
Referenced by remove_arc_then_node(), and remove_edge_then_node().
void olsr::gra::AdjGraph::remove_arc_then_node | ( | const AdjInfo & | a | ) | [inline] |
Arc removal method. Removes the endpoint nodes if they don't belong to other arcs.
References _aset, olsr::utl::Set< Elem, Iset, Iter, CIter >::end(), olsr::utl::Set< Elem, Iset, Iter, CIter >::find(), and remove_arc_then_node().
void olsr::gra::AdjGraph::remove_edge_then_node | ( | aset_t::iterator | pos | ) | [inline] |
Edge removal method. Removed both the arc and the inverted arc. Removes the endpoint nodes if they don't belong to other arcs.
References olsr::gra::AdjInfo::invert(), and remove_arc_then_node().
void olsr::gra::AdjGraph::remove_edge_then_node | ( | const AdjInfo & | a | ) | [inline] |
Edge removal method. Removed both the arc and the inverted arc. Removes the endpoint nodes if they don't belong to other arcs.
References olsr::gra::AdjInfo::invert(), and remove_arc_then_node().
void olsr::gra::AdjGraph::remove_node | ( | nset_t::iterator | pos | ) | [inline] |
Node removal method.
References _apset_map, _aset, _nset, olsr::utl::Set< Elem, Iset, Iter, CIter >::end(), olsr::utl::Set< Elem, Iset, Iter, CIter >::erase(), olsr::utl::Set< Elem, Iset, Iter, CIter >::find(), olsr::gra::AdjNode::make_key(), olsr::routes_recomp, and olsr::utl::Mark::set_mark().
Referenced by remove_arc_then_node(), remove_node(), and remove_node_if_alone().
void olsr::gra::AdjGraph::remove_node | ( | const AdjNode & | n | ) | [inline] |
Node removal method.
References _nset, olsr::utl::Set< Elem, Iset, Iter, CIter >::end(), olsr::utl::Set< Elem, Iset, Iter, CIter >::find(), and remove_node().
void olsr::gra::AdjGraph::remove_node_if_alone | ( | nset_t::iterator | pos | ) | [inline] |
void olsr::gra::AdjGraph::remove_node_if_alone | ( | const AdjNode & | n | ) | [inline] |
Non-connected-node removal method.
References _nset, olsr::utl::Set< Elem, Iset, Iter, CIter >::end(), olsr::utl::Set< Elem, Iset, Iter, CIter >::find(), and remove_node_if_alone().
void olsr::gra::AdjGraph::build_asetmap | ( | ) | [inline, private] |
_apset_map update method.
References _apset_map, _aset, _nset, olsr::utl::Set< Elem, Iset, Iter, CIter >::begin(), olsr::utl::Set< Elem, Iset, Iter, CIter >::end(), olsr::utl::Set< Elem, Iset, Iter, CIter >::find(), and olsr::gra::AdjNode::make_key().
Referenced by AdjGraph(), and operator=().
aset_t olsr::gra::AdjGraph::_aset [private] |
Set of arcs.
Referenced by arcs(), build_asetmap(), insert_arc(), operator=(), remove_arc(), remove_arc_then_node(), remove_node(), and to_string().
nset_t olsr::gra::AdjGraph::_nset [private] |
Set of nodes.
Referenced by build_asetmap(), insert_arc(), insert_node(), nodes(), operator=(), remove_arc(), remove_arc_then_node(), remove_node(), remove_node_if_alone(), and to_string().
apsetmap_t olsr::gra::AdjGraph::_apset_map [private] |
Map of nodes to connecting arcs.
Referenced by build_asetmap(), insert_arc(), insert_node(), operator=(), remove_arc(), remove_arc_then_node(), remove_node(), and remove_node_if_alone().