5 #ifndef ctrlplane_policy_graph_h
6 #define ctrlplane_policy_graph_h
8 #include <boost/function.hpp>
9 #include <boost/intrusive/list.hpp>
22 boost::intrusive::list_member_hook<>,
44 return root_[vertex].entry;
48 return root_[edge].edge;
56 void WriteDot(
const std::string &fname)
const;
69 open_vertex_reverse_iterator, OpenVertexPathPair,
70 boost::forward_traversal_tag, OpenVertexPathPair> {
boost::graph_traits< graph_t >::vertex_descriptor vertex_descriptor
boost::graph_traits< graph_t >::edge_descriptor edge_descriptor
boost::adjacency_list< boost::setS, boost::listS, boost::bidirectionalS, VertexProperties, EdgeProperties > graph_t
boost::intrusive::list_member_hook open_vertex_
open_vertex_reverse_iterator(PolicyGraph *graph, PolicyGraphVertex *start)
OpenVertexPathPair dereference() const
open_vertex_reverse_iterator()
bool equal(const open_vertex_reverse_iterator &rhs) const
PolicyGraphVertex * open_
friend class boost::iterator_core_access
OpenVertexIterator open_vertex_begin()
PolicyGraphEdge * GetEdge(const PolicyGraphVertex *src, const PolicyGraphVertex *tgt)
void WriteDot(const std::string &fname) const
PolicyGraphVertex * GetRoot() const
void AddNode(PolicyGraphVertex *entry)
OpenVertexList open_vertex_list_
size_t edge_count() const
OpenVertexList::iterator OpenVertexIterator
PolicyGraphBase::edge_descriptor Edge
void Unlink(PolicyGraphVertex *lhs, PolicyGraphVertex *rhs)
OpenVertexIterator open_vertex_end()
boost::intrusive::list< PolicyGraphVertex, OpenVertexListMember > OpenVertexList
const graph_t * graph() const
void RemoveOpenVertex(PolicyGraphVertex *vertex)
PolicyGraphEdge * edge_data(PolicyGraph::Edge edge) const
PolicyGraphBase::vertex_descriptor Vertex
Edge Link(PolicyGraphVertex *lhs, PolicyGraphVertex *rhs)
void RemoveNode(PolicyGraphVertex *entry)
void AddOpenVertex(PolicyGraphVertex *vertex)
size_t vertex_count() const
std::pair< PolicyGraphVertex *, PolicyGraphEdge * > OpenVertexPathPair
open_vertex_reverse_iterator begin(PolicyGraphVertex *open)
PolicyGraphVertex * vertex_data(Vertex vertex) const
void SetEdgeProperty(PolicyGraphEdge *edge)
boost::intrusive::member_hook< PolicyGraphVertex, boost::intrusive::list_member_hook<>, &PolicyGraphVertex::open_vertex_ > OpenVertexListMember
open_vertex_reverse_iterator end(PolicyGraphVertex *open)