149 return graph->maxEdgeId(); |
149 return graph->maxEdgeId(); |
150 } |
150 } |
151 |
151 |
152 typedef typename ItemSetTraits<Graph, Node>::ItemNotifier NodeNotifier; |
152 typedef typename ItemSetTraits<Graph, Node>::ItemNotifier NodeNotifier; |
153 |
153 |
154 NodeNotifier& getNotifier(Node) const { |
154 NodeNotifier& notifier(Node) const { |
155 return graph->getNotifier(Node()); |
155 return graph->notifier(Node()); |
156 } |
156 } |
157 |
157 |
158 typedef typename ItemSetTraits<Graph, Edge>::ItemNotifier EdgeNotifier; |
158 typedef typename ItemSetTraits<Graph, Edge>::ItemNotifier EdgeNotifier; |
159 |
159 |
160 EdgeNotifier& getNotifier(Edge) const { |
160 EdgeNotifier& notifier(Edge) const { |
161 return graph->getNotifier(Edge()); |
161 return graph->notifier(Edge()); |
162 } |
162 } |
163 |
163 |
164 typedef typename ItemSetTraits<Graph, UEdge>::ItemNotifier UEdgeNotifier; |
164 typedef typename ItemSetTraits<Graph, UEdge>::ItemNotifier UEdgeNotifier; |
165 |
165 |
166 UEdgeNotifier& getNotifier(UEdge) const { |
166 UEdgeNotifier& notifier(UEdge) const { |
167 return graph->getNotifier(UEdge()); |
167 return graph->notifier(UEdge()); |
168 } |
168 } |
169 |
169 |
170 template <typename _Value> |
170 template <typename _Value> |
171 class NodeMap : public Graph::template NodeMap<_Value> { |
171 class NodeMap : public Graph::template NodeMap<_Value> { |
172 public: |
172 public: |
309 } |
309 } |
310 |
310 |
311 void firstInc(UEdge& i, bool& d, const Node& n) const { |
311 void firstInc(UEdge& i, bool& d, const Node& n) const { |
312 Parent::firstInc(i, d, n); |
312 Parent::firstInc(i, d, n); |
313 while (i!=INVALID && (!(*uedge_filter_map)[i] |
313 while (i!=INVALID && (!(*uedge_filter_map)[i] |
|
314 || !(*node_filter_map)[Parent::source(i)] |
314 || !(*node_filter_map)[Parent::target(i)])) Parent::nextInc(i, d); |
315 || !(*node_filter_map)[Parent::target(i)])) Parent::nextInc(i, d); |
315 } |
316 } |
316 |
317 |
317 void next(Node& i) const { |
318 void next(Node& i) const { |
318 Parent::next(i); |
319 Parent::next(i); |
345 || !(*node_filter_map)[Parent::target(i)])) Parent::nextOut(i); |
346 || !(*node_filter_map)[Parent::target(i)])) Parent::nextOut(i); |
346 } |
347 } |
347 |
348 |
348 void nextInc(UEdge& i, bool& d) const { |
349 void nextInc(UEdge& i, bool& d) const { |
349 Parent::nextInc(i, d); |
350 Parent::nextInc(i, d); |
350 while (i!=INVALID && (!(*uedge_filter_map)[i] |
351 while (i!=INVALID && (!(*uedge_filter_map)[i] |
351 || !(*node_filter_map)[Parent::source(i)])) Parent::nextInc(i, d); |
352 || !(*node_filter_map)[Parent::source(i)] |
|
353 || !(*node_filter_map)[Parent::target(i)])) Parent::nextInc(i, d); |
352 } |
354 } |
353 |
355 |
354 /// \brief Hide the given node in the graph. |
356 /// \brief Hide the given node in the graph. |
355 /// |
357 /// |
356 /// This function hides \c n in the graph, i.e. the iteration |
358 /// This function hides \c n in the graph, i.e. the iteration |
985 return graph->maxEdgeId(); |
987 return graph->maxEdgeId(); |
986 } |
988 } |
987 |
989 |
988 typedef typename ItemSetTraits<Graph, Node>::ItemNotifier NodeNotifier; |
990 typedef typename ItemSetTraits<Graph, Node>::ItemNotifier NodeNotifier; |
989 |
991 |
990 NodeNotifier& getNotifier(Node) const { |
992 NodeNotifier& notifier(Node) const { |
991 return graph->getNotifier(Node()); |
993 return graph->notifier(Node()); |
992 } |
994 } |
993 |
995 |
994 typedef typename ItemSetTraits<Graph, Edge>::ItemNotifier EdgeNotifier; |
996 typedef typename ItemSetTraits<Graph, Edge>::ItemNotifier EdgeNotifier; |
995 |
997 |
996 EdgeNotifier& getNotifier(Edge) const { |
998 EdgeNotifier& notifier(Edge) const { |
997 return graph->getNotifier(Edge()); |
999 return graph->notifier(Edge()); |
998 } |
1000 } |
999 |
1001 |
1000 template <typename _Value> |
1002 template <typename _Value> |
1001 class NodeMap : public _UGraph::template NodeMap<_Value> { |
1003 class NodeMap : public _UGraph::template NodeMap<_Value> { |
1002 public: |
1004 public: |