00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef GEOS_IDX_CHAIN_MONOTONECHAINBUILDER_H
00017 #define GEOS_IDX_CHAIN_MONOTONECHAINBUILDER_H
00018
00019 #include <vector>
00020
00021
00022 namespace geos {
00023 namespace geom {
00024 class CoordinateSequence;
00025 }
00026 namespace index {
00027 namespace chain {
00028 class MonotoneChain;
00029 }
00030 }
00031 }
00032
00033 namespace geos {
00034 namespace index {
00035 namespace chain {
00036
00044 class MonotoneChainBuilder {
00045
00046 public:
00047
00048 MonotoneChainBuilder(){}
00049
00055 static std::vector<MonotoneChain*>* getChains(
00056 const geom::CoordinateSequence *pts,
00057 void* context);
00058
00064 static void getChains(const geom::CoordinateSequence *pts,
00065 void* context,
00066 std::vector<MonotoneChain*>& mcList);
00067
00068 static std::vector<MonotoneChain*>* getChains(const geom::CoordinateSequence *pts)
00069 {
00070 return getChains(pts, NULL);
00071 }
00072
00079 static void getChainStartIndices(const geom::CoordinateSequence *pts,
00080 std::vector<int>& startIndexList);
00081
00086 static int findChainEnd(const geom::CoordinateSequence *pts, int start);
00087 };
00088
00089 }
00090 }
00091 }
00092
00093 #endif // GEOS_IDX_CHAIN_MONOTONECHAINBUILDER_H
00094
00095
00096
00097
00098
00099
00100
00101