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> 
   32 #ifndef DOXYGEN_NOTFOR_DEVEL 
   39 class NodeIterator :
public Iterator<node> {
 
   42 class EdgeIterator :
public Iterator<edge> {
 
   45 #if !defined(NDEBUG) && !defined(_OPENMP) 
   46 class NodeIteratorObserver :
public NodeIterator, 
public Observable {
 
   49   void treatEvent(
const Event&);
 
   52 class EdgeIteratorObserver :
public EdgeIterator, 
public Observable {
 
   55   void treatEvent(
const Event&);
 
   60 class FactorNodeIterator
 
   61 #if defined(NDEBUG) || defined(_OPENMP)
 
   64   :
public NodeIteratorObserver
 
   69   const MutableContainer<bool>& _filter;
 
   71   FactorNodeIterator(
const Graph *sG,
const MutableContainer<bool>& filter):
 
   72     _parentGraph(sG->getSuperGraph()),
 
   77 class FactorEdgeIterator
 
   78 #if defined(NDEBUG) || defined(_OPENMP)
 
   81   :
public EdgeIteratorObserver
 
   86   const MutableContainer<bool>& _filter;
 
   88   FactorEdgeIterator(
const Graph *sG,
const MutableContainer<bool>& filter):
 
   89     _parentGraph(sG->getSuperGraph()),
 
   95 class SGraphNodeIterator:
public FactorNodeIterator, 
public MemoryPool<SGraphNodeIterator> {
 
  103   SGraphNodeIterator(
const Graph *sG, 
const MutableContainer<bool>& filter,
 
  105   ~SGraphNodeIterator();
 
  113 class OutNodesIterator:
public FactorNodeIterator, 
public MemoryPool<OutNodesIterator> {
 
  116 #if !defined(NDEBUG) && !defined(_OPENMP) 
  120   OutNodesIterator(
const Graph *sG, 
const MutableContainer<bool>& filter, node n);
 
  127 class InNodesIterator:
public FactorNodeIterator, 
public MemoryPool<InNodesIterator> {
 
  130 #if !defined(NDEBUG) && !defined(_OPENMP) 
  134   InNodesIterator(
const Graph *sG, 
const MutableContainer<bool>& filter ,node n);
 
  141 class InOutNodesIterator:
public FactorNodeIterator, 
public MemoryPool<InOutNodesIterator> {
 
  145 #if !defined(NDEBUG) && !defined(_OPENMP) 
  149   InOutNodesIterator(
const Graph *sG,
const MutableContainer<bool>& filter,node n);
 
  150   ~InOutNodesIterator();
 
  156 class SGraphEdgeIterator:
public FactorEdgeIterator, 
public MemoryPool<SGraphEdgeIterator> {
 
  164   SGraphEdgeIterator(
const Graph *sG, 
const MutableContainer<bool>& filter,
 
  166   ~SGraphEdgeIterator();
 
  174 class OutEdgesIterator:
public FactorEdgeIterator, 
public MemoryPool<OutEdgesIterator> {
 
  180   OutEdgesIterator(
const Graph *sG, 
const MutableContainer<bool>& filter, node n);
 
  189 class InEdgesIterator:
public FactorEdgeIterator, 
public MemoryPool<InEdgesIterator> {
 
  195   InEdgesIterator(
const Graph *sG,
const MutableContainer<bool>& filter,node n);
 
  204 class InOutEdgesIterator:
public FactorEdgeIterator, 
public MemoryPool<InOutEdgesIterator> {
 
  210   InOutEdgesIterator(
const Graph *sG, 
const MutableContainer<bool>& filter, node n);
 
  211   ~InOutEdgesIterator();
 
  221 class GraphImplNodeIterator
 
  222 #if defined(NDEBUG) || defined(_OPENMP)
 
  223   :
public NodeIterator, 
public MemoryPool<GraphImplNodeIterator>
 
  225   :
public NodeIteratorObserver
 
  229 #if !defined(NDEBUG) && !defined(_OPENMP) 
  232   Iterator<node> *itId;
 
  234   GraphImplNodeIterator(
const Graph *g, Iterator<node>* it);
 
  235   ~GraphImplNodeIterator();
 
  241 class GraphImplEdgeIterator
 
  242 #if defined(NDEBUG) || defined(_OPENMP)
 
  243   :
public EdgeIterator, 
public MemoryPool<GraphImplEdgeIterator>
 
  245   :
public EdgeIteratorObserver
 
  249 #if !defined(NDEBUG) && !defined(_OPENMP) 
  252   Iterator<edge> *itId;
 
  254   GraphImplEdgeIterator(
const Graph *g, Iterator<edge>* it);
 
  255   ~GraphImplEdgeIterator();
 
  262 #endif // DOXYGEN_NOTFOR_DEVEL