src/hugo/graph_wrapper.h
changeset 854 baf0b6e40211
parent 849 cc3867a7d380
child 861 021e513a2d83
equal deleted inserted replaced
32:3735f4608902 33:9739fae12b37
   376     public:
   376     public:
   377       NodeIt() { }
   377       NodeIt() { }
   378       //      NodeIt(const NodeIt& n) : Node(n), gw(n.gw) { }
   378       //      NodeIt(const NodeIt& n) : Node(n), gw(n.gw) { }
   379       NodeIt(Invalid i) : Node(i) { }
   379       NodeIt(Invalid i) : Node(i) { }
   380       NodeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw) : 
   380       NodeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw) : 
   381 	Node(typename Graph::NodeIt(*(_gw.graph))), gw(&_gw) { }
   381 	Node(typename Graph::NodeIt(*(_gw.graph))), gw(&_gw) { 
       
   382 	while (*static_cast<Node*>(this)!=INVALID && 
       
   383 	       !(*(gw->edge_filter_map))[*this]) 
       
   384 	  *(static_cast<Node*>(this))=
       
   385 	    ++(typename Graph::NodeIt(*(gw->graph), *this));
       
   386       }
   382       NodeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw, 
   387       NodeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw, 
   383 	     const Node& n) : 
   388 	     const Node& n) : 
   384 	Node(n), gw(&_gw) { }
   389 	Node(n), gw(&_gw) { }
   385       NodeIt& operator++() { 
   390       NodeIt& operator++() { 
   386 	*(static_cast<Node*>(this))=
   391 	*(static_cast<Node*>(this))=
   399     public:
   404     public:
   400       OutEdgeIt() { }
   405       OutEdgeIt() { }
   401       //      OutEdgeIt(const OutEdgeIt& e) : Edge(e), gw(e.gw) { }
   406       //      OutEdgeIt(const OutEdgeIt& e) : Edge(e), gw(e.gw) { }
   402       OutEdgeIt(Invalid i) : Edge(i) { }
   407       OutEdgeIt(Invalid i) : Edge(i) { }
   403       OutEdgeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw, const Node& n) : 
   408       OutEdgeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw, const Node& n) : 
   404 	Edge(typename Graph::OutEdgeIt(*(_gw.graph), n)), gw(&_gw) { }
   409 	Edge(typename Graph::OutEdgeIt(*(_gw.graph), n)), gw(&_gw) { 
       
   410 	while (*static_cast<Edge*>(this)!=INVALID && 
       
   411 	       !(*(gw->edge_filter_map))[*this]) 
       
   412 	  *(static_cast<Edge*>(this))=
       
   413 	    ++(typename Graph::OutEdgeIt(*(gw->graph), *this));
       
   414       }
   405       OutEdgeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw, 
   415       OutEdgeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw, 
   406 	     const Edge& e) : 
   416 	     const Edge& e) : 
   407 	Edge(e), gw(&_gw) { }
   417 	Edge(e), gw(&_gw) { }
   408       OutEdgeIt& operator++() { 
   418       OutEdgeIt& operator++() { 
   409 	*(static_cast<Edge*>(this))=
   419 	*(static_cast<Edge*>(this))=
   421     public:
   431     public:
   422       InEdgeIt() { }
   432       InEdgeIt() { }
   423       //      InEdgeIt(const InEdgeIt& e) : Edge(e), gw(e.gw) { }
   433       //      InEdgeIt(const InEdgeIt& e) : Edge(e), gw(e.gw) { }
   424       InEdgeIt(Invalid i) : Edge(i) { }
   434       InEdgeIt(Invalid i) : Edge(i) { }
   425       InEdgeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw, const Node& n) : 
   435       InEdgeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw, const Node& n) : 
   426 	Edge(typename Graph::InEdgeIt(*(_gw.graph), n)), gw(&_gw) { }
   436 	Edge(typename Graph::InEdgeIt(*(_gw.graph), n)), gw(&_gw) { 
       
   437 	while (*static_cast<Edge*>(this)!=INVALID && 
       
   438 	       !(*(gw->edge_filter_map))[*this]) 
       
   439 	  *(static_cast<Edge*>(this))=
       
   440 	    ++(typename Graph::InEdgeIt(*(gw->graph), *this));
       
   441       }
   427       InEdgeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw, 
   442       InEdgeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw, 
   428 	     const Edge& e) : 
   443 	     const Edge& e) : 
   429 	Edge(e), gw(&_gw) { }
   444 	Edge(e), gw(&_gw) { }
   430       InEdgeIt& operator++() { 
   445       InEdgeIt& operator++() { 
   431 	*(static_cast<Edge*>(this))=
   446 	*(static_cast<Edge*>(this))=
   443     public:
   458     public:
   444       EdgeIt() { }
   459       EdgeIt() { }
   445       //      EdgeIt(const EdgeIt& e) : Edge(e), gw(e.gw) { }
   460       //      EdgeIt(const EdgeIt& e) : Edge(e), gw(e.gw) { }
   446       EdgeIt(Invalid i) : Edge(i) { }
   461       EdgeIt(Invalid i) : Edge(i) { }
   447       EdgeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw) : 
   462       EdgeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw) : 
   448 	Edge(typename Graph::EdgeIt(*(_gw.graph))), gw(&_gw) { }
   463 	Edge(typename Graph::EdgeIt(*(_gw.graph))), gw(&_gw) { 
       
   464 	while (*static_cast<Edge*>(this)!=INVALID && 
       
   465 	       !(*(gw->edge_filter_map))[*this]) 
       
   466 	  *(static_cast<Edge*>(this))=
       
   467 	    ++(typename Graph::EdgeIt(*(gw->graph), *this));
       
   468       }
   449       EdgeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw, 
   469       EdgeIt(const SubGraphWrapper<Graph, NodeFilterMap, EdgeFilterMap>& _gw, 
   450 	     const Edge& e) : 
   470 	     const Edge& e) : 
   451 	Edge(e), gw(&_gw) { }
   471 	Edge(e), gw(&_gw) { }
   452       EdgeIt& operator++() { 
   472       EdgeIt& operator++() { 
   453 	*(static_cast<Edge*>(this))=
   473 	*(static_cast<Edge*>(this))=