70class GEOS_DLL LineDissolver {
80 std::unique_ptr<Geometry> result;
81 const GeometryFactory* factory =
nullptr;
82 DissolveEdgeGraph graph;
83 std::vector<std::unique_ptr<LineString>> lines;
84 std::stack<HalfEdge*> nodeEdgeStack;
85 DissolveHalfEdge* ringStartEdge =
nullptr;
86 bool constructZ =
false;
87 bool constructM =
false;
92 void process(HalfEdge* e);
99 void stackEdges(HalfEdge* node);
122 void updateRingStartEdge(DissolveHalfEdge* e);
137 void buildLine(HalfEdge* eStart);
139 void buildRing(HalfEdge* eStartRing);
141 void addLine(
const std::shared_ptr<CoordinateSequence>& cs);
146 LineDissolver() : result(
nullptr) {};
154 static std::unique_ptr<Geometry>
dissolve(
const Geometry* g);
164 void add(
const Geometry* geometry);
173 void add(std::vector<const Geometry*> geometries);
175 void add(
const LineString* lineString);
190 LineDissolver& operator=(
const LineDissolver&) =
delete;