Loading...
Searching...
No Matches
AbstractIterator.h
Go to the documentation of this file.
1/* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2
3 This file is part of the TerraLib - a Framework for building GIS enabled applications.
4
5 TerraLib is free software: you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as published by
7 the Free Software Foundation, either version 3 of the License,
8 or (at your option) any later version.
9
10 TerraLib is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public License
16 along with TerraLib. See COPYING. If not, write to
17 TerraLib Team at <terralib-team@terralib.org>.
18 */
19
20/*!
21 \file AbstractIterator.h
22
23 \brief This class defines a commun interface to represents a graph
24 iterator class. The main diferency to anothers iterators is
25 the possibility to iterate over the edges or vertexs from a
26 graph.
27*/
28
29#ifndef __TERRALIB_GRAPH_INTERNAL_ABSTRACTITERATOR_H
30#define __TERRALIB_GRAPH_INTERNAL_ABSTRACTITERATOR_H
31
32// Terralib Includes
35#include "../Config.h"
36
37
38// STL Includes
39#include <memory>
40#include <vector>
41
42namespace te
43{
44 namespace graph
45 {
46 //forward declarations
47 class Edge;
48 class Vertex;
49
50 /*!
51 \class AbstractIterator
52
53 \brief This class defines a commun interface to represents a graph
54 iterator class. The main diferency to anothers iterators is
55 the possibility to iterate over the edges or vertexs from a
56 graph.
57
58 \sa
59 */
60
62 {
63 public:
64
65 /*! \brief Default constructor. */
67
68 /*! \brief Virtual destructor. */
70
71
72 /** @name Vertex Iterator Methods
73 * Method used to access vertex elements from a graph.
74 */
75 //@{
76
77 /*!
78 \brief It returns a pointer to the first vertex element of a graph
79
80 \return A valid vertex point if the element was found and a null pointer in other case.
81 */
83
84 /*!
85 \brief It returns a pointer to the next vertex element of a graph
86
87 \return A valid vertex point if the element was found and a null pointer in other case.
88 */
90
91 /*!
92 \brief It returns a pointer to the previous vertex element of a graph
93
94 \return A valid vertex point if the element was found and a null pointer in other case.
95 */
97
98 /*!
99 \brief Used to check the iterator position
100
101 \return True if the iterator is at after the end and false in other case
102 */
104
105 /*!
106 \brief It returns the number of elements of this iterator
107
108 \return Size t value.
109 */
110 virtual size_t getVertexInteratorCount();
111
112 /*!
113 \brief Used to set that the isolated vertex must be listed
114
115 \param flag Flag used to set.
116 */
117 void listIsolatedVertex(bool flag);
118
119 //@}
120
121 /** @name Vertex Iterator Methods
122 * Method used to access vertex elements from a graph.
123 */
124 //@{
125
126 /*!
127 \brief It returns a pointer to the first edge element of a graph
128
129 \return A valid edge point if the element was found and a null pointer in other case.
130 */
132
133 /*!
134 \brief It returns a pointer to the next edge element of a graph
135
136 \return A valid edge point if the element was found and a null pointer in other case.
137 */
139
140 /*!
141 \brief It returns a pointer to the previous edge element of a graph
142
143 \return A valid edge point if the element was found and a null pointer in other case.
144 */
146
147 /*!
148 \brief Used to check the iterator position
149
150 \return True if the iterator is at after the end and false in other case
151 */
153
154 /*!
155 \brief It returns the number of elements of this iterator
156
157 \return Size t value.
158 */
159 virtual size_t getEdgeInteratorCount();
160
161 //@}
162
163 protected:
164
165 te::graph::AbstractGraph* m_graph; //!< Pointer to a abstract graph used to access the elements
166
167 std::unique_ptr<te::da::DataSet> m_vertexQuery; //!< Attribute used to keep the vertex iterator
168 std::unique_ptr<te::da::DataSet> m_edgeQuery; //!< Attribute used to keep the edge iterator
169
170 bool m_listIsolatedVertex; //!< Flag used to indicated that the isolated vertex will be listed
171 };
172
173 } // end namespace graph
174} // end namespace te
175
176#endif // __TERRALIB_GRAPH_INTERNAL_ABSTRACTITERATOR_H
Abstract class used to define the main functions of graph struct. All graph implementations must used...
Abstract class used to define the main functions of graph struct. All graph implementations must used...
virtual size_t getEdgeInteratorCount()
It returns the number of elements of this iterator.
virtual ~AbstractIterator()
Virtual destructor.
virtual te::graph::Vertex * getPreviousVertex()
It returns a pointer to the previous vertex element of a graph.
AbstractIterator(te::graph::AbstractGraph *g)
Default constructor.
virtual bool isEdgeIteratorAfterEnd()
Used to check the iterator position.
void listIsolatedVertex(bool flag)
Used to set that the isolated vertex must be listed.
virtual te::graph::Vertex * getNextVertex()
It returns a pointer to the next vertex element of a graph.
std::unique_ptr< te::da::DataSet > m_edgeQuery
Attribute used to keep the edge iterator.
virtual te::graph::Vertex * getFirstVertex()=0
It returns a pointer to the first vertex element of a graph.
std::unique_ptr< te::da::DataSet > m_vertexQuery
Attribute used to keep the vertex iterator.
te::graph::AbstractGraph * m_graph
Pointer to a abstract graph used to access the elements.
virtual te::graph::Edge * getFirstEdge()=0
It returns a pointer to the first edge element of a graph.
virtual te::graph::Edge * getPreviousEdge()
It returns a pointer to the previous edge element of a graph.
virtual bool isVertexIteratorAfterEnd()
Used to check the iterator position.
bool m_listIsolatedVertex
Flag used to indicated that the isolated vertex will be listed.
virtual size_t getVertexInteratorCount()
It returns the number of elements of this iterator.
virtual te::graph::Edge * getNextEdge()
It returns a pointer to the next edge element of a graph.
Class used to define the edge struct of a graph. Its compose with a identifier, the vertex origin and...
Definition Edge.h:59
From the point of view of graph theory, vertices are treated as featureless and indivisible objects,...
Definition Vertex.h:69
A dataset is the unit of information manipulated by the data access module of TerraLib.
TerraLib.
Configuration flags for the Graph module of TerraLib.
#define TEGRAPHEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition Config.h:178