99 NodeIt() {} |
99 NodeIt() {} |
100 |
100 |
101 NodeIt(Invalid i) : Node(i) { } |
101 NodeIt(Invalid i) : Node(i) { } |
102 |
102 |
103 explicit NodeIt(const Graph& _graph) : graph(&_graph) { |
103 explicit NodeIt(const Graph& _graph) : graph(&_graph) { |
104 _graph.first(*static_cast<Node*>(this)); |
104 _graph.first(static_cast<Node&>(*this)); |
105 } |
105 } |
106 |
106 |
107 NodeIt(const Graph& _graph, const Node& node) |
107 NodeIt(const Graph& _graph, const Node& node) |
108 : Node(node), graph(&_graph) {} |
108 : Node(node), graph(&_graph) {} |
109 |
109 |
122 EdgeIt() { } |
122 EdgeIt() { } |
123 |
123 |
124 EdgeIt(Invalid i) : Edge(i) { } |
124 EdgeIt(Invalid i) : Edge(i) { } |
125 |
125 |
126 explicit EdgeIt(const Graph& _graph) : graph(&_graph) { |
126 explicit EdgeIt(const Graph& _graph) : graph(&_graph) { |
127 _graph.first(*static_cast<Edge*>(this)); |
127 _graph.first(static_cast<Edge&>(*this)); |
128 } |
128 } |
129 |
129 |
130 EdgeIt(const Graph& _graph, const Edge& e) : |
130 EdgeIt(const Graph& _graph, const Edge& e) : |
131 Edge(e), graph(&_graph) { } |
131 Edge(e), graph(&_graph) { } |
132 |
132 |
233 return operator=<EdgeMap>(cmap); |
233 return operator=<EdgeMap>(cmap); |
234 } |
234 } |
235 |
235 |
236 template <typename CMap> |
236 template <typename CMap> |
237 EdgeMap& operator=(const CMap& cmap) { |
237 EdgeMap& operator=(const CMap& cmap) { |
238 checkConcept<concept::ReadMap<Edge, _Value>, CMap>(); |
238 Parent::operator=(cmap); |
239 const typename Parent::Graph* graph = Parent::getGraph(); |
|
240 Edge it; |
|
241 for (graph->first(it); it != INVALID; graph->next(it)) { |
|
242 Parent::set(it, cmap[it]); |
|
243 } |
|
244 return *this; |
239 return *this; |
245 } |
240 } |
|
241 |
246 }; |
242 }; |
247 |
243 |
248 |
244 |
249 // Alteration extension |
245 // Alteration extension |
250 |
246 |
362 NodeIt() {} |
358 NodeIt() {} |
363 |
359 |
364 NodeIt(Invalid i) : Node(i) { } |
360 NodeIt(Invalid i) : Node(i) { } |
365 |
361 |
366 explicit NodeIt(const Graph& _graph) : graph(&_graph) { |
362 explicit NodeIt(const Graph& _graph) : graph(&_graph) { |
367 _graph.first(*static_cast<Node*>(this)); |
363 _graph.first(static_cast<Node&>(*this)); |
368 } |
364 } |
369 |
365 |
370 NodeIt(const Graph& _graph, const Node& node) |
366 NodeIt(const Graph& _graph, const Node& node) |
371 : Node(node), graph(&_graph) {} |
367 : Node(node), graph(&_graph) {} |
372 |
368 |
385 EdgeIt() { } |
381 EdgeIt() { } |
386 |
382 |
387 EdgeIt(Invalid i) : Edge(i) { } |
383 EdgeIt(Invalid i) : Edge(i) { } |
388 |
384 |
389 explicit EdgeIt(const Graph& _graph) : graph(&_graph) { |
385 explicit EdgeIt(const Graph& _graph) : graph(&_graph) { |
390 _graph.first(*static_cast<Edge*>(this)); |
386 _graph.first(static_cast<Edge&>(*this)); |
391 } |
387 } |
392 |
388 |
393 EdgeIt(const Graph& _graph, const Edge& e) : |
389 EdgeIt(const Graph& _graph, const Edge& e) : |
394 Edge(e), graph(&_graph) { } |
390 Edge(e), graph(&_graph) { } |
395 |
391 |
456 UEdgeIt() { } |
452 UEdgeIt() { } |
457 |
453 |
458 UEdgeIt(Invalid i) : UEdge(i) { } |
454 UEdgeIt(Invalid i) : UEdge(i) { } |
459 |
455 |
460 explicit UEdgeIt(const Graph& _graph) : graph(&_graph) { |
456 explicit UEdgeIt(const Graph& _graph) : graph(&_graph) { |
461 _graph.first(*static_cast<UEdge*>(this)); |
457 _graph.first(static_cast<UEdge&>(*this)); |
462 } |
458 } |
463 |
459 |
464 UEdgeIt(const Graph& _graph, const UEdge& e) : |
460 UEdgeIt(const Graph& _graph, const UEdge& e) : |
465 UEdge(e), graph(&_graph) { } |
461 UEdge(e), graph(&_graph) { } |
466 |
462 |
554 return operator=<EdgeMap>(cmap); |
550 return operator=<EdgeMap>(cmap); |
555 } |
551 } |
556 |
552 |
557 template <typename CMap> |
553 template <typename CMap> |
558 EdgeMap& operator=(const CMap& cmap) { |
554 EdgeMap& operator=(const CMap& cmap) { |
559 checkConcept<concept::ReadMap<Edge, _Value>, CMap>(); |
555 Parent::operator=(cmap); |
560 const typename Parent::Graph* graph = Parent::getGraph(); |
|
561 Edge it; |
|
562 for (graph->first(it); it != INVALID; graph->next(it)) { |
|
563 Parent::set(it, cmap[it]); |
|
564 } |
|
565 return *this; |
556 return *this; |
566 } |
557 } |
|
558 |
567 }; |
559 }; |
568 |
560 |
569 |
561 |
570 template <typename _Value> |
562 template <typename _Value> |
571 class UEdgeMap |
563 class UEdgeMap |
574 typedef UEdgeSetExtender Graph; |
566 typedef UEdgeSetExtender Graph; |
575 typedef MapExtender<DefaultMap<Graph, UEdge, _Value> > Parent; |
567 typedef MapExtender<DefaultMap<Graph, UEdge, _Value> > Parent; |
576 |
568 |
577 UEdgeMap(const Graph& _g) |
569 UEdgeMap(const Graph& _g) |
578 : Parent(_g) {} |
570 : Parent(_g) {} |
|
571 |
579 UEdgeMap(const Graph& _g, const _Value& _v) |
572 UEdgeMap(const Graph& _g, const _Value& _v) |
580 : Parent(_g, _v) {} |
573 : Parent(_g, _v) {} |
581 |
574 |
582 UEdgeMap& operator=(const UEdgeMap& cmap) { |
575 UEdgeMap& operator=(const UEdgeMap& cmap) { |
583 return operator=<UEdgeMap>(cmap); |
576 return operator=<UEdgeMap>(cmap); |
584 } |
577 } |
585 |
578 |
586 template <typename CMap> |
579 template <typename CMap> |
587 UEdgeMap& operator=(const CMap& cmap) { |
580 UEdgeMap& operator=(const CMap& cmap) { |
588 checkConcept<concept::ReadMap<UEdge, _Value>, CMap>(); |
581 Parent::operator=(cmap); |
589 const typename Parent::Graph* graph = Parent::getGraph(); |
|
590 UEdge it; |
|
591 for (graph->first(it); it != INVALID; graph->next(it)) { |
|
592 Parent::set(it, cmap[it]); |
|
593 } |
|
594 return *this; |
582 return *this; |
595 } |
583 } |
|
584 |
596 }; |
585 }; |
597 |
586 |
598 |
587 |
599 // Alteration extension |
588 // Alteration extension |
600 |
589 |