19 #ifndef GEOS_NODING_MCINDEXNODER_H
20 #define GEOS_NODING_MCINDEXNODER_H
22 #include <geos/export.h>
24 #include <geos/inline.h>
26 #include <geos/index/chain/MonotoneChainOverlapAction.h>
27 #include <geos/noding/SinglePassNoder.h>
28 #include <geos/index/strtree/STRtree.h>
29 #include <geos/util.h>
36 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
46 class SegmentIntersector;
64 class GEOS_DLL MCIndexNoder :
public SinglePassNoder {
67 std::vector<index::chain::MonotoneChain*> monoChains;
68 index::strtree::STRtree index;
70 std::vector<SegmentString*>* nodedSegStrings;
74 void intersectChains();
76 void add(SegmentString* segStr);
80 MCIndexNoder(SegmentIntersector* nSegInt =
nullptr)
82 SinglePassNoder(nSegInt),
84 nodedSegStrings(nullptr),
88 ~MCIndexNoder()
override;
91 std::vector<index::chain::MonotoneChain*>&
99 std::vector<SegmentString*>* getNodedSubstrings()
const override;
101 void computeNodes(std::vector<SegmentString*>* inputSegmentStrings)
override;
107 index::chain::MonotoneChainOverlapAction(),
114 SegmentIntersector& si;
117 SegmentOverlapAction(
const SegmentOverlapAction& other) =
delete;
118 SegmentOverlapAction& operator=(
const SegmentOverlapAction& rhs) =
delete;
131 # include <geos/noding/MCIndexNoder.inl>
134 #endif // GEOS_NODING_MCINDEXNODER_H