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> {
108 #endif // ctrlplane_policy_graph_h
boost::intrusive::list_member_hook open_vertex_
PolicyGraphBase::edge_descriptor Edge
PolicyGraphEdge * edge_data(PolicyGraph::Edge edge) const
boost::intrusive::member_hook< PolicyGraphVertex, boost::intrusive::list_member_hook<>,&PolicyGraphVertex::open_vertex_ > OpenVertexListMember
OpenVertexList open_vertex_list_
boost::intrusive::list< PolicyGraphVertex, OpenVertexListMember > OpenVertexList
boost::graph_traits< graph_t >::edge_descriptor edge_descriptor
void RemoveNode(PolicyGraphVertex *entry)
open_vertex_reverse_iterator()
OpenVertexList::iterator OpenVertexIterator
std::pair< PolicyGraphVertex *, PolicyGraphEdge * > OpenVertexPathPair
open_vertex_reverse_iterator begin(PolicyGraphVertex *open)
const graph_t * graph() const
PolicyGraphVertex * GetRoot() const
OpenVertexIterator open_vertex_end()
void AddNode(PolicyGraphVertex *entry)
friend class boost::iterator_core_access
void SetEdgeProperty(PolicyGraphEdge *edge)
void WriteDot(const std::string &fname) const
PolicyGraphBase::vertex_descriptor Vertex
bool equal(const open_vertex_reverse_iterator &rhs) const
Edge Link(PolicyGraphVertex *lhs, PolicyGraphVertex *rhs)
void AddOpenVertex(PolicyGraphVertex *vertex)
OpenVertexPathPair dereference() const
size_t edge_count() const
boost::graph_traits< graph_t >::vertex_descriptor vertex_descriptor
void Unlink(PolicyGraphVertex *lhs, PolicyGraphVertex *rhs)
size_t vertex_count() const
void RemoveOpenVertex(PolicyGraphVertex *vertex)
boost::adjacency_list< boost::setS, boost::listS, boost::bidirectionalS, VertexProperties, EdgeProperties > graph_t
open_vertex_reverse_iterator(PolicyGraph *graph, PolicyGraphVertex *start)
OpenVertexIterator open_vertex_begin()
PolicyGraphVertex * open_
PolicyGraphEdge * GetEdge(const PolicyGraphVertex *src, const PolicyGraphVertex *tgt)
open_vertex_reverse_iterator end(PolicyGraphVertex *open)
PolicyGraphVertex * vertex_data(Vertex vertex) const