21 #ifndef TULIP_GGRAPHITERATOR_H 22 #define TULIP_GGRAPHITERATOR_H 23 #include <tulip/Iterator.h> 24 #include <tulip/memorypool.h> 27 #include <tulip/MutableContainer.h> 28 #include <tulip/Observable.h> 29 #include <tulip/tulipconf.h> 38 class NodeIterator :
public Iterator<node> {
41 class EdgeIterator :
public Iterator<edge> {
44 #if !defined(NDEBUG) && !defined(_OPENMP) 45 class NodeIteratorObserver :
public NodeIterator,
public Observable {
48 void treatEvent(
const Event&);
51 class EdgeIteratorObserver :
public EdgeIterator,
public Observable {
54 void treatEvent(
const Event&);
59 class FactorNodeIterator
60 #if defined(NDEBUG) || defined(_OPENMP)
63 :
public NodeIteratorObserver
68 const MutableContainer<bool>& _filter;
70 FactorNodeIterator(
const Graph *sG,
const MutableContainer<bool>& filter):
71 _parentGraph(sG->getSuperGraph()),
76 class FactorEdgeIterator
77 #if defined(NDEBUG) || defined(_OPENMP)
80 :
public EdgeIteratorObserver
85 const MutableContainer<bool>& _filter;
87 FactorEdgeIterator(
const Graph *sG,
const MutableContainer<bool>& filter):
88 _parentGraph(sG->getSuperGraph()),
94 class SGraphNodeIterator:
public FactorNodeIterator,
public MemoryPool<SGraphNodeIterator> {
102 SGraphNodeIterator(
const Graph *sG,
const MutableContainer<bool>& filter,
104 ~SGraphNodeIterator();
112 class OutNodesIterator:
public FactorNodeIterator,
public MemoryPool<OutNodesIterator> {
115 #if !defined(NDEBUG) && !defined(_OPENMP) 119 OutNodesIterator(
const Graph *sG,
const MutableContainer<bool>& filter, node n);
126 class InNodesIterator:
public FactorNodeIterator,
public MemoryPool<InNodesIterator> {
129 #if !defined(NDEBUG) && !defined(_OPENMP) 133 InNodesIterator(
const Graph *sG,
const MutableContainer<bool>& filter ,node n);
140 class InOutNodesIterator:
public FactorNodeIterator,
public MemoryPool<InOutNodesIterator> {
144 #if !defined(NDEBUG) && !defined(_OPENMP) 148 InOutNodesIterator(
const Graph *sG,
const MutableContainer<bool>& filter,node n);
149 ~InOutNodesIterator();
155 class SGraphEdgeIterator:
public FactorEdgeIterator,
public MemoryPool<SGraphEdgeIterator> {
163 SGraphEdgeIterator(
const Graph *sG,
const MutableContainer<bool>& filter,
165 ~SGraphEdgeIterator();
173 class OutEdgesIterator:
public FactorEdgeIterator,
public MemoryPool<OutEdgesIterator> {
179 OutEdgesIterator(
const Graph *sG,
const MutableContainer<bool>& filter, node n);
188 class InEdgesIterator:
public FactorEdgeIterator,
public MemoryPool<InEdgesIterator> {
194 InEdgesIterator(
const Graph *sG,
const MutableContainer<bool>& filter,node n);
203 class InOutEdgesIterator:
public FactorEdgeIterator,
public MemoryPool<InOutEdgesIterator> {
209 InOutEdgesIterator(
const Graph *sG,
const MutableContainer<bool>& filter, node n);
210 ~InOutEdgesIterator();
220 class GraphImplNodeIterator
221 #if defined(NDEBUG) || defined(_OPENMP)
222 :
public NodeIterator,
public MemoryPool<GraphImplNodeIterator>
224 :
public NodeIteratorObserver
228 #if !defined(NDEBUG) && !defined(_OPENMP) 234 ~GraphImplNodeIterator();
240 class GraphImplEdgeIterator
241 #if defined(NDEBUG) || defined(_OPENMP)
242 :
public EdgeIterator,
public MemoryPool<GraphImplEdgeIterator>
244 :
public EdgeIteratorObserver
248 #if !defined(NDEBUG) && !defined(_OPENMP) 254 ~GraphImplEdgeIterator();
Interface for Tulip iterators. Allows basic iteration operations only.