GEOS 3.4.2

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List

CoordinateArraySequence.h
1 /**********************************************************************
2 *
3 * GEOS - Geometry Engine Open Source
4 * http://geos.osgeo.org
5 *
6 * Copyright (C) 2006 Refractions Research Inc.
7 *
8 * This is free software; you can redistribute and/or modify it under
9 * the terms of the GNU Lesser General Public Licence as published
10 * by the Free Software Foundation.
11 * See the COPYING file for more information.
12 *
13 **********************************************************************/
14
15 #ifndef GEOS_GEOM_COORDINATEARRAYSEQUENCE_H
16 #define GEOS_GEOM_COORDINATEARRAYSEQUENCE_H
17
18 #include <geos/export.h>
19 #include <vector>
20
21 #include <geos/geom/CoordinateSequence.h>
22
23 #include <geos/inline.h>
24
25 // Forward declarations
26 namespace geos {
27 namespace geom {
28 class Coordinate;
29 }
30 }
31
32
33 namespace geos {
34 namespace geom { // geos.geom
35
37 class GEOS_DLL CoordinateArraySequence : public CoordinateSequence {
38 public:
39
40 CoordinateArraySequence(const CoordinateArraySequence &cl);
41
42 CoordinateArraySequence(const CoordinateSequence &cl);
43
44 CoordinateSequence *clone() const;
45
46 //const Coordinate& getCoordinate(int pos) const;
47 const Coordinate& getAt(std::size_t pos) const;
48
50 virtual void getAt(std::size_t i, Coordinate& c) const;
51
52 //int size() const;
53 size_t getSize() const;
54
55 // @deprecated
56 const std::vector<Coordinate>* toVector() const;
57
58 // See dox in CoordinateSequence.h
59 void toVector(std::vector<Coordinate>&) const;
60
62 CoordinateArraySequence();
63
65 CoordinateArraySequence(std::vector<Coordinate> *coords,
66 std::size_t dimension = 0);
67
69 CoordinateArraySequence(std::size_t n, std::size_t dimension = 0);
70
71 ~CoordinateArraySequence();
72
73 bool isEmpty() const { return empty(); }
74
75 bool empty() const { return vect->empty(); }
76
78 void clear() { vect->clear(); }
79
80 void add(const Coordinate& c);
81
82 virtual void add(const Coordinate& c, bool allowRepeated);
83
95 virtual void add(std::size_t i, const Coordinate& coord, bool allowRepeated);
96
97 void setAt(const Coordinate& c, std::size_t pos);
98
99 void deleteAt(std::size_t pos);
100
101 std::string toString() const;
102
103 void setPoints(const std::vector<Coordinate> &v);
104
105 double getOrdinate(std::size_t index,
106 size_t ordinateIndex) const;
107
108 void setOrdinate(std::size_t index, std::size_t ordinateIndex,
109 double value);
110
111 void expandEnvelope(Envelope &env) const;
112
113 std::size_t getDimension() const;
114
115 void apply_rw(const CoordinateFilter *filter);
116
117 void apply_ro(CoordinateFilter *filter) const;
118
119 virtual CoordinateSequence& removeRepeatedPoints();
120
121 private:
122 std::vector<Coordinate> *vect;
123 mutable std::size_t dimension;
124 };
125
127 typedef CoordinateArraySequence DefaultCoordinateSequence;
128
129 } // namespace geos.geom
130 } // namespace geos
131
132 #endif // ndef GEOS_GEOM_COORDINATEARRAYSEQUENCE_H