equal
deleted
inserted
replaced
378 friend std::ostream& operator<<(std::ostream& os, const NodeIt& i); |
378 friend std::ostream& operator<<(std::ostream& os, const NodeIt& i); |
379 }; |
379 }; |
380 |
380 |
381 class EachNodeIt : public NodeIt { |
381 class EachNodeIt : public NodeIt { |
382 friend class ListGraph; |
382 friend class ListGraph; |
383 protected: |
383 //protected: |
|
384 public: //for alpar |
384 EachNodeIt(const ListGraph& G) : NodeIt(G._first_node) { } |
385 EachNodeIt(const ListGraph& G) : NodeIt(G._first_node) { } |
385 public: |
386 public: |
386 EachNodeIt() : NodeIt() { } |
387 EachNodeIt() : NodeIt() { } |
387 EachNodeIt(node_item* v) : NodeIt(v) { } |
388 EachNodeIt(node_item* v) : NodeIt(v) { } |
388 EachNodeIt& operator++() { node=node->_next_node; return *this; } |
389 EachNodeIt& operator++() { node=node->_next_node; return *this; } |
416 friend std::ostream& operator<<(std::ostream& os, const EdgeIt& i); |
417 friend std::ostream& operator<<(std::ostream& os, const EdgeIt& i); |
417 }; |
418 }; |
418 |
419 |
419 class EachEdgeIt : public EdgeIt { |
420 class EachEdgeIt : public EdgeIt { |
420 friend class ListGraph; |
421 friend class ListGraph; |
421 protected: |
422 //protected: |
|
423 public: //for alpar |
422 EachEdgeIt(const ListGraph& G) { |
424 EachEdgeIt(const ListGraph& G) { |
423 node_item* v=G._first_node; |
425 node_item* v=G._first_node; |
424 if (v) edge=v->_first_out_edge; else edge=0; |
426 if (v) edge=v->_first_out_edge; else edge=0; |
425 while (v && !edge) { v=v->_next_node; if (v) edge=v->_first_out_edge; } |
427 while (v && !edge) { v=v->_next_node; if (v) edge=v->_first_out_edge; } |
426 } |
428 } |
436 }; |
438 }; |
437 |
439 |
438 class OutEdgeIt : public EdgeIt { |
440 class OutEdgeIt : public EdgeIt { |
439 friend class ListGraph; |
441 friend class ListGraph; |
440 //node_item* v; |
442 //node_item* v; |
441 protected: |
443 //protected: |
|
444 public: //for alpar |
442 OutEdgeIt(const NodeIt& _v) /*: v(_v.node)*/ { edge=_v.node->_first_out_edge; } |
445 OutEdgeIt(const NodeIt& _v) /*: v(_v.node)*/ { edge=_v.node->_first_out_edge; } |
443 public: |
446 public: |
444 OutEdgeIt() : EdgeIt()/*, v(0)*/ { } |
447 OutEdgeIt() : EdgeIt()/*, v(0)*/ { } |
445 OutEdgeIt(const ListGraph& G, NodeIt _v) /*: v(_v.node)*/ { edge=_v.node->_first_out_edge; } |
448 OutEdgeIt(const ListGraph& G, NodeIt _v) /*: v(_v.node)*/ { edge=_v.node->_first_out_edge; } |
446 OutEdgeIt& operator++() { edge=edge->_next_out; return *this; } |
449 OutEdgeIt& operator++() { edge=edge->_next_out; return *this; } |
450 }; |
453 }; |
451 |
454 |
452 class InEdgeIt : public EdgeIt { |
455 class InEdgeIt : public EdgeIt { |
453 friend class ListGraph; |
456 friend class ListGraph; |
454 //node_item* v; |
457 //node_item* v; |
455 protected: |
458 //protected: |
|
459 public: //for alpar |
456 InEdgeIt(const NodeIt& _v) /*: v(_v.node)*/ { edge=_v.node->_first_in_edge; } |
460 InEdgeIt(const NodeIt& _v) /*: v(_v.node)*/ { edge=_v.node->_first_in_edge; } |
457 public: |
461 public: |
458 InEdgeIt() : EdgeIt()/*, v(0)*/ { } |
462 InEdgeIt() : EdgeIt()/*, v(0)*/ { } |
459 InEdgeIt(const ListGraph& G, NodeIt _v) /*: v(_v.node)*/ { edge=_v.node->_first_in_edge; } |
463 InEdgeIt(const ListGraph& G, NodeIt _v) /*: v(_v.node)*/ { edge=_v.node->_first_in_edge; } |
460 InEdgeIt& operator++() { edge=edge->_next_in; return *this; } |
464 InEdgeIt& operator++() { edge=edge->_next_in; return *this; } |
465 |
469 |
466 class SymEdgeIt : public EdgeIt { |
470 class SymEdgeIt : public EdgeIt { |
467 friend class ListGraph; |
471 friend class ListGraph; |
468 bool out_or_in; //1 iff out, 0 iff in |
472 bool out_or_in; //1 iff out, 0 iff in |
469 //node_item* v; |
473 //node_item* v; |
470 protected: |
474 //protected: |
|
475 public: //for alpar |
471 SymEdgeIt(const NodeIt& _v) /*: v(_v.node)*/ { |
476 SymEdgeIt(const NodeIt& _v) /*: v(_v.node)*/ { |
472 out_or_in=1; |
477 out_or_in=1; |
473 edge=_v.node->_first_out_edge; |
478 edge=_v.node->_first_out_edge; |
474 if (!edge) { edge=_v.node->_first_in_edge; out_or_in=0; } |
479 if (!edge) { edge=_v.node->_first_in_edge; out_or_in=0; } |
475 } |
480 } |