17#include <geos/geom/SimpleCurve.h>
24class GEOS_DLL CompoundCurve :
public Curve {
25 friend class GeometryFactory;
28 using Curve::apply_ro;
29 using Curve::apply_rw;
31 void apply_ro(CoordinateFilter* filter)
const override;
33 void apply_ro(CoordinateSequenceFilter& filter)
const override;
35 void apply_rw(CoordinateSequenceFilter& filter)
override;
37 void apply_rw(
const CoordinateFilter* filter)
override;
39 int compareToSameClass(
const Geometry* geom)
const override;
41 std::unique_ptr<CompoundCurve> clone()
const;
43 bool equalsExact(
const Geometry* other,
double tolerance = 0)
46 bool equalsIdentical(
const Geometry* other)
const override;
48 std::unique_ptr<Geometry> getBoundary()
const override;
50 const CoordinateXY* getCoordinate()
const override;
52 uint8_t getCoordinateDimension()
const override;
54 std::unique_ptr<CoordinateSequence> getCoordinates()
const override;
57 const SimpleCurve* getCurveN(std::size_t)
const override;
59 const Envelope* getEnvelopeInternal()
const override
64 std::string getGeometryType()
const override;
68 double getLength()
const override;
71 std::size_t getNumCurves()
const override;
73 std::size_t getNumPoints()
const override;
75 bool hasCurvedComponents()
const override;
77 bool hasM()
const override;
79 bool hasZ()
const override;
81 bool isClosed()
const override;
83 bool isEmpty()
const override;
85 void normalize()
override;
87 std::unique_ptr<CompoundCurve> reverse()
const;
89 void validateConstruction()
const;
94 CompoundCurve(std::vector<std::unique_ptr<SimpleCurve>>&&,
95 const GeometryFactory&);
97 CompoundCurve(
const CompoundCurve&);
99 CompoundCurve& operator=(
const CompoundCurve&);
101 CompoundCurve* cloneImpl()
const override;
103 Envelope computeEnvelopeInternal()
const;
105 void geometryChangedAction()
override
107 envelope = computeEnvelopeInternal();
110 int getSortIndex()
const override
112 return SORTINDEX_COMPOUNDCURVE;
115 CompoundCurve* reverseImpl()
const override;
118 std::vector<std::unique_ptr<SimpleCurve>> curves;
GeometryTypeId
Geometry types.
Definition Geometry.h:74
Basic namespace for all GEOS functionalities.
Definition geos.h:39