GEOS 3.9.1
SegmentString.h
1/**********************************************************************
2 *
3 * GEOS - Geometry Engine Open Source
4 * http://geos.osgeo.org
5 *
6 * Copyright (C) 2011 Sandro Santilli <strk@kbt.io>
7 * Copyright (C) 2005-2006 Refractions Research Inc.
8 * Copyright (C) 2001-2002 Vivid Solutions Inc.
9 *
10 * This is free software; you can redistribute and/or modify it under
11 * the terms of the GNU Lesser General Public Licence as published
12 * by the Free Software Foundation.
13 * See the COPYING file for more information.
14 *
15 **********************************************************************
16 *
17 * Last port: noding/SegmentString.java r430 (JTS-1.12+)
18 *
19 **********************************************************************/
20
21#ifndef GEOS_NODING_SEGMENTSTRING_H
22#define GEOS_NODING_SEGMENTSTRING_H
23
24#include <geos/export.h>
25#include <geos/noding/SegmentNodeList.h>
26
27#include <vector>
28
29// Forward declarations
30namespace geos {
31namespace algorithm {
32class LineIntersector;
33}
34}
35
36namespace geos {
37namespace noding { // geos.noding
38
46class GEOS_DLL SegmentString {
47public:
48 typedef std::vector<const SegmentString*> ConstVect;
49 typedef std::vector<SegmentString*> NonConstVect;
50
51 friend std::ostream& operator<< (std::ostream& os,
52 const SegmentString& ss);
53
58 SegmentString(const void* newContext)
59 :
60 context(newContext)
61 {}
62
63 virtual
65
71 const void*
72 getData() const
73 {
74 return context;
75 }
76
82 void
83 setData(const void* data)
84 {
85 context = data;
86 }
87
88
89 virtual size_t size() const = 0;
90
91 virtual const geom::Coordinate& getCoordinate(size_t i) const = 0;
92
100
101 virtual bool isClosed() const = 0;
102
103 virtual std::ostream& print(std::ostream& os) const;
104
105private:
106
107 const void* context;
108
109 // Declare type as noncopyable
110 SegmentString(const SegmentString& other) = delete;
111 SegmentString& operator=(const SegmentString& rhs) = delete;
112};
113
114std::ostream& operator<< (std::ostream& os, const SegmentString& ss);
115
116} // namespace geos.noding
117} // namespace geos
118
119#endif
120
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:58
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
An interface for classes which represent a sequence of contiguous line segments.
Definition: SegmentString.h:46
const void * getData() const
Gets the user-defined data for this segment string.
Definition: SegmentString.h:72
SegmentString(const void *newContext)
Construct a SegmentString.
Definition: SegmentString.h:58
void setData(const void *data)
Sets the user-defined data for this segment string.
Definition: SegmentString.h:83
virtual geom::CoordinateSequence * getCoordinates() const =0
Return a pointer to the CoordinateSequence associated with this SegmentString.
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:26