equal
deleted
inserted
replaced
18 |
18 |
19 #ifndef LEMON_SUB_GRAPH_H |
19 #ifndef LEMON_SUB_GRAPH_H |
20 #define LEMON_SUB_GRAPH_H |
20 #define LEMON_SUB_GRAPH_H |
21 |
21 |
22 #include <lemon/graph_adaptor.h> |
22 #include <lemon/graph_adaptor.h> |
|
23 #include <lemon/bits/graph_adaptor_extender.h> |
|
24 #include <lemon/bits/default_map.h> |
23 |
25 |
24 namespace lemon { |
26 namespace lemon { |
25 |
27 |
26 /// \brief Base for the SubGraph. |
28 /// \brief Base for the SubGraph. |
27 /// |
29 /// |
240 protected: |
242 protected: |
241 struct NodeT { |
243 struct NodeT { |
242 Node prev, next; |
244 Node prev, next; |
243 Edge firstIn, firstOut; |
245 Edge firstIn, firstOut; |
244 }; |
246 }; |
245 class NodesImpl : public Graph::template NodeMap<NodeT> { |
247 class NodesImpl : public DefaultMap<Graph, Node, NodeT> { |
246 friend class SubGraphBase; |
248 friend class SubGraphBase; |
247 public: |
249 public: |
248 typedef typename Graph::template NodeMap<NodeT> Parent; |
250 typedef DefaultMap<Graph, Node, NodeT> Parent; |
249 |
251 |
250 NodesImpl(SubGraph& _adaptor, const Graph& _graph) |
252 NodesImpl(SubGraph& _adaptor, const Graph& _graph) |
251 : Parent(_graph), adaptor(_adaptor) {} |
253 : Parent(_graph), adaptor(_adaptor) {} |
252 |
254 |
253 virtual ~NodesImpl() {} |
255 virtual ~NodesImpl() {} |
303 |
305 |
304 struct EdgeT { |
306 struct EdgeT { |
305 Edge prevOut, nextOut; |
307 Edge prevOut, nextOut; |
306 Edge prevIn, nextIn; |
308 Edge prevIn, nextIn; |
307 }; |
309 }; |
308 class EdgesImpl : public Graph::template EdgeMap<EdgeT> { |
310 class EdgesImpl : public DefaultMap<Graph, Edge, EdgeT> { |
309 friend class SubGraphBase; |
311 friend class SubGraphBase; |
310 public: |
312 public: |
311 typedef typename Graph::template EdgeMap<EdgeT> Parent; |
313 typedef DefaultMap<Graph, Edge, EdgeT> Parent; |
312 |
314 |
313 EdgesImpl(SubGraph& _adaptor, const Graph& _graph) |
315 EdgesImpl(SubGraph& _adaptor, const Graph& _graph) |
314 : Parent(_graph), adaptor(_adaptor) {} |
316 : Parent(_graph), adaptor(_adaptor) {} |
315 |
317 |
316 virtual ~EdgesImpl() {} |
318 virtual ~EdgesImpl() {} |
558 |
560 |
559 protected: |
561 protected: |
560 struct NodeT { |
562 struct NodeT { |
561 Edge firstIn, firstOut; |
563 Edge firstIn, firstOut; |
562 }; |
564 }; |
563 class NodesImpl : public Graph::template NodeMap<NodeT> { |
565 class NodesImpl : public DefaultMap<Graph, Node, NodeT> { |
564 friend class EdgeSubGraphBase; |
566 friend class EdgeSubGraphBase; |
565 public: |
567 public: |
566 typedef typename Graph::template NodeMap<NodeT> Parent; |
568 typedef DefaultMap<Graph, Node, NodeT> Parent; |
567 |
569 |
568 NodesImpl(SubGraph& _adaptor, const Graph& _graph) |
570 NodesImpl(SubGraph& _adaptor, const Graph& _graph) |
569 : Parent(_graph), adaptor(_adaptor) {} |
571 : Parent(_graph), adaptor(_adaptor) {} |
570 |
572 |
571 virtual ~NodesImpl() {} |
573 virtual ~NodesImpl() {} |
601 |
603 |
602 struct EdgeT { |
604 struct EdgeT { |
603 Edge prevOut, nextOut; |
605 Edge prevOut, nextOut; |
604 Edge prevIn, nextIn; |
606 Edge prevIn, nextIn; |
605 }; |
607 }; |
606 class EdgesImpl : public Graph::template EdgeMap<EdgeT> { |
608 class EdgesImpl : public DefaultMap<Graph, Edge, EdgeT> { |
607 friend class EdgeSubGraphBase; |
609 friend class EdgeSubGraphBase; |
608 public: |
610 public: |
609 typedef typename Graph::template EdgeMap<EdgeT> Parent; |
611 typedef DefaultMap<Graph, Edge, EdgeT> Parent; |
610 |
612 |
611 EdgesImpl(SubGraph& _adaptor, const Graph& _graph) |
613 EdgesImpl(SubGraph& _adaptor, const Graph& _graph) |
612 : Parent(_graph), adaptor(_adaptor) {} |
614 : Parent(_graph), adaptor(_adaptor) {} |
613 |
615 |
614 virtual ~EdgesImpl() {} |
616 virtual ~EdgesImpl() {} |