00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef GEOS_IDX_BINTREE_BINTREE_H
00017 #define GEOS_IDX_BINTREE_BINTREE_H
00018
00019 #include <geos/export.h>
00020 #include <vector>
00021
00022
00023 namespace geos {
00024 namespace index {
00025 namespace bintree {
00026 class Interval;
00027 class Root;
00028 }
00029 }
00030 }
00031
00032 namespace geos {
00033 namespace index {
00034 namespace bintree {
00035
00052 class GEOS_DLL Bintree {
00053
00054 public:
00055
00066 static Interval* ensureExtent(const Interval *itemInterval,
00067 double minExtent);
00068
00069 Bintree();
00070
00071 ~Bintree();
00072
00073 int depth();
00074
00075 int size();
00076
00077 int nodeSize();
00078
00085 void insert(Interval *itemInterval, void* item);
00086
00087 std::vector<void*>* iterator();
00088
00089 std::vector<void*>* query(double x);
00090
00091 std::vector<void*>* query(Interval *interval);
00092
00093 void query(Interval *interval,
00094 std::vector<void*> *foundItems);
00095
00096 private:
00097
00098 std::vector<Interval *>newIntervals;
00099
00100 Root *root;
00101
00112 double minExtent;
00113
00114 void collectStats(Interval *interval);
00115 };
00116
00117 }
00118 }
00119 }
00120
00121 #endif // GEOS_IDX_BINTREE_BINTREE_H
00122
00123
00124
00125
00126
00127
00128
00129