21 #include <geos/export.h>
29 #include <geos/noding/SegmentNode.h>
33 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
39 class CoordinateSequence;
43 class NodedSegmentString;
61 mutable std::vector<SegmentNode> nodeMap;
62 mutable bool ready =
false;
78 void checkSplitEdgesCorrectness(
const std::vector<SegmentString*>& splitEdges)
const;
100 std::unique_ptr<geom::CoordinateSequence> createSplitEdgePts(
const SegmentNode* ei0,
const SegmentNode* ei1)
const;
110 void addCollapsedNodes();
116 void findCollapsesFromExistingVertices(
117 std::vector<std::size_t>& collapsedVertexIndexes)
const;
126 void findCollapsesFromInsertedNodes(
127 std::vector<std::size_t>& collapsedVertexIndexes)
const;
130 size_t& collapsedVertexIndex);
140 friend std::ostream& operator<< (std::ostream& os,
const SegmentNodeList& l);
142 using container = decltype(nodeMap);
143 using iterator = container::iterator;
144 using const_iterator = container::const_iterator;
149 : constructZ(p_constructZ)
150 , constructM(p_constructM)
161 bool getConstructZ()
const {
165 bool getConstructM()
const {
176 template<
typename CoordType>
177 void add(
const CoordType& intPt, std::size_t segmentIndex) {
179 nodeMap.emplace_back(edge, intPt, segmentIndex,
reinterpret_cast<const SegmentString&
>(edge).getSegmentOctant(segmentIndex));
188 return nodeMap.size();
193 return nodeMap.begin();
196 const_iterator begin()
const {
198 return nodeMap.begin();
203 return nodeMap.end();
206 const_iterator end()
const {
208 return nodeMap.end();
225 addSplitEdges(std::vector<SegmentString*>* edgeList)
228 addSplitEdges(*edgeList);