21#ifndef TULIP_GRAPHITERATORS_H
22#define TULIP_GRAPHITERATORS_H
23#include <tulip/BasicIterators.h>
24#include <tulip/tulipconf.h>
34class TLP_SCOPE OutNodesIterator :
public FactorNodeIterator,
public MemoryPool<OutNodesIterator> {
37#if !defined(NDEBUG) && !defined(_OPENMP)
41 OutNodesIterator(
const GraphView *sG, node n);
42 ~OutNodesIterator()
override;
44 bool hasNext()
override;
48class InNodesIterator :
public FactorNodeIterator,
public MemoryPool<InNodesIterator> {
51#if !defined(NDEBUG) && !defined(_OPENMP)
55 InNodesIterator(
const GraphView *sG, node n);
56 ~InNodesIterator()
override;
58 bool hasNext()
override;
62class TLP_SCOPE InOutNodesIterator :
public FactorNodeIterator,
63 public MemoryPool<InOutNodesIterator> {
67#if !defined(NDEBUG) && !defined(_OPENMP)
71 InOutNodesIterator(
const GraphView *sG, node n);
72 ~InOutNodesIterator()
override;
74 bool hasNext()
override;
78class TLP_SCOPE OutEdgesIterator :
public FactorEdgeIterator,
public MemoryPool<OutEdgesIterator> {
85 OutEdgesIterator(
const GraphView *sG, node n);
86 ~OutEdgesIterator()
override;
88 bool hasNext()
override;
95class TLP_SCOPE InEdgesIterator :
public FactorEdgeIterator,
public MemoryPool<InEdgesIterator> {
102 InEdgesIterator(
const GraphView *sG, node n);
103 ~InEdgesIterator()
override;
104 edge next()
override;
105 bool hasNext()
override;
112class TLP_SCOPE InOutEdgesIterator :
public FactorEdgeIterator,
113 public MemoryPool<InOutEdgesIterator> {
120 InOutEdgesIterator(
const GraphView *sG, node n);
121 ~InOutEdgesIterator()
override;
122 edge next()
override;
123 bool hasNext()
override;
132class TLP_SCOPE GraphNodeIterator :
public NodeIterator
133#if defined(NDEBUG) || defined(_OPENMP)
135 public MemoryPool<GraphNodeIterator>
139#if !defined(NDEBUG) && !defined(_OPENMP)
143 Iterator<node> *itId;
146 GraphNodeIterator(
const Graph *g, Iterator<node> *it);
147 ~GraphNodeIterator()
override;
148 node next()
override;
149 bool hasNext()
override;
153class TLP_SCOPE GraphEdgeIterator :
public EdgeIterator
154#if defined(NDEBUG) || defined(_OPENMP)
156 public MemoryPool<GraphEdgeIterator>
160#if !defined(NDEBUG) && !defined(_OPENMP)
164 Iterator<edge> *itId;
167 GraphEdgeIterator(
const Graph *g, Iterator<edge> *it);
168 ~GraphEdgeIterator()
override;
169 edge next()
override;
170 bool hasNext()
override;