20 #ifndef GEOS_NODING_SEGMENTNODELIST_H
21 #define GEOS_NODING_SEGMENTNODELIST_H
23 #include <geos/export.h>
25 #include <geos/inline.h>
32 #include <geos/noding/SegmentNode.h>
36 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
42 class CoordinateSequence;
46 class NodedSegmentString;
59 std::set<SegmentNode*,SegmentNodeLT> nodeMap;
65 std::vector<SegmentString*> splitEdges;
68 std::vector<geom::CoordinateSequence*> splitCoordLists;
76 void checkSplitEdgesCorrectness(std::vector<SegmentString*>& splitEdges);
94 void addCollapsedNodes();
100 void findCollapsesFromExistingVertices(
101 std::vector<std::size_t>& collapsedVertexIndexes);
110 void findCollapsesFromInsertedNodes(
111 std::vector<std::size_t>& collapsedVertexIndexes);
114 size_t& collapsedVertexIndex);
122 friend std::ostream& operator<< (std::ostream& os,
const SegmentNodeList& l);
124 typedef std::set<SegmentNode*,SegmentNodeLT> container;
125 typedef container::iterator iterator;
126 typedef container::const_iterator const_iterator;
151 return add(*intPt, segmentIndex);
159 std::set<SegmentNode*,SegmentNodeLT>* getNodes() {
return &nodeMap; }
162 size_t size()
const {
return nodeMap.size(); }
164 container::iterator begin() {
return nodeMap.begin(); }
165 container::const_iterator begin()
const {
return nodeMap.begin(); }
166 container::iterator end() {
return nodeMap.end(); }
167 container::const_iterator end()
const {
return nodeMap.end(); }
180 void addSplitEdges(std::vector<SegmentString*>& edgeList);
182 void addSplitEdges(std::vector<SegmentString*>* edgeList) {
184 addSplitEdges(*edgeList);
190 std::ostream& operator<< (std::ostream& os,
const SegmentNodeList& l);