Loading...
Searching...
No Matches
Visitor.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 terralib/geometry/Visitor.h
22
23 \brief A visitor interface for the Geometry hierarchy.
24*/
25
26#ifndef __TERRALIB_GEOMETRY_INTERNAL_VISITOR_H
27#define __TERRALIB_GEOMETRY_INTERNAL_VISITOR_H
28
29// TerraLib
30#include "Config.h"
31
32// Forward declarations
33#include "../geometry_fw.h"
34
35namespace te
36{
37 namespace gm
38 {
39 /*!
40 \class Visitor
41
42 \brief A visitor interface for the Geometry hierarchy.
43 */
45 {
46 public:
47
48 /** @name Initializer Methods
49 * Methods related to instantiation and destruction.
50 */
51 //@{
52
53 /*! \brief Default constructor. */
55
56 /*! \brief Virtual destructor. */
57 virtual ~Visitor() {}
58
59 //@}
60
61 /** @name Select
62 * All concrete visitors must implement these methods.
63 */
64 //@{
65
66 virtual void visit(const Curve& visited) = 0;
67 virtual void visit(const Geometry& visited) = 0;
68 virtual void visit(const GeometryCollection& visited) = 0;
69 virtual void visit(const LinearRing& visited) = 0;
70 virtual void visit(const LineString& visited) = 0;
71 virtual void visit(const MultiCurve& visited) = 0;
72 virtual void visit(const MultiLineString& visited) = 0;
73 virtual void visit(const MultiPoint& visited) = 0;
74 virtual void visit(const MultiPolygon& visited) = 0;
75 virtual void visit(const MultiSurface& visited) = 0;
76 virtual void visit(const Point& visited) = 0;
77 virtual void visit(const Polygon& visited) = 0;
78 virtual void visit(const PolyhedralSurface& visited) = 0;
79 virtual void visit(const Surface& visited) = 0;
80 virtual void visit(const TIN& visited) = 0;
81 virtual void visit(const Triangle& visited) = 0;
82 virtual void visit(const CircularString& visited) = 0;
83 virtual void visit(const CompoundCurve& visited) = 0;
84 virtual void visit(const CurvePolygon& visited) = 0;
85
86 //@}
87 };
88
89 } // end namespace gm
90} // end namespace te
91
92
93#endif // __TERRALIB_GEOMETRY_INTERNAL_VISITOR_H
94
CircularString is a curve with circular interpolation between points.
CompoundCurve is a curve that may have circular and linear segments.
Definition: CompoundCurve.h:54
CurvePolygon is a planar surface defined by 1 exterior boundary and 0 or more interior boundaries.
Definition: CurvePolygon.h:58
Curve is an abstract class that represents 1-dimensional geometric objects stored as a sequence of co...
Definition: Curve.h:59
It is a collection of other geometric objects.
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
Definition: Geometry.h:78
LineString is a curve with linear interpolation between points.
Definition: LineString.h:65
A LinearRing is a LineString that is both closed and simple.
Definition: LinearRing.h:54
MultiCurve is a class that represents a 1-dimensional GeometryCollection whose elements are curves.
Definition: MultiCurve.h:51
MultiLineString is a MultiCurve whose elements are LineStrings.
MultiPoint is a GeometryCollection whose elements are restricted to points.
Definition: MultiPoint.h:54
MultiPolygon is a MultiSurface whose elements are Polygons.
Definition: MultiPolygon.h:51
MultiSurface is a class that represents a 2-dimensional GeometryCollection whose elements are surface...
Definition: MultiSurface.h:55
A point with x and y coordinate values.
Definition: Point.h:51
Polygon is a subclass of CurvePolygon whose rings are defined by linear rings.
Definition: Polygon.h:51
PolyhedralSurface is a contiguous collection of polygons, which share common boundary segments.
Surface is an abstract class that represents a 2-dimensional geometric objects.
Definition: Surface.h:55
TIN (triangulated irregular network) is a PolyhedralSurface consisting only of Triangle patches.
Definition: TIN.h:51
Triangle is a polygon with 3 distinct, non-collinear vertices and no interior boundary.
Definition: Triangle.h:51
A visitor interface for the Geometry hierarchy.
Definition: Visitor.h:45
Visitor()
Default constructor.
Definition: Visitor.h:54
virtual void visit(const MultiSurface &visited)=0
virtual void visit(const MultiPolygon &visited)=0
virtual void visit(const MultiPoint &visited)=0
virtual void visit(const CompoundCurve &visited)=0
virtual void visit(const MultiLineString &visited)=0
virtual void visit(const LinearRing &visited)=0
virtual void visit(const TIN &visited)=0
virtual void visit(const Curve &visited)=0
virtual ~Visitor()
Virtual destructor.
Definition: Visitor.h:57
virtual void visit(const GeometryCollection &visited)=0
virtual void visit(const Geometry &visited)=0
virtual void visit(const Triangle &visited)=0
virtual void visit(const LineString &visited)=0
virtual void visit(const PolyhedralSurface &visited)=0
virtual void visit(const Point &visited)=0
virtual void visit(const CircularString &visited)=0
virtual void visit(const Surface &visited)=0
virtual void visit(const CurvePolygon &visited)=0
virtual void visit(const Polygon &visited)=0
virtual void visit(const MultiCurve &visited)=0
TerraLib.
#define TEGEOMEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:76
Proxy configuration file for TerraView (see terraview_config.h).