00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef GEOS_INDEX_INTERVALRTREE_INTERVALRTREEBRANCHNODE_H
00018 #define GEOS_INDEX_INTERVALRTREE_INTERVALRTREEBRANCHNODE_H
00019
00020 #include <geos/index/intervalrtree/IntervalRTreeNode.h>
00021
00022 #include <algorithm>
00023
00024
00025 namespace geos {
00026 namespace index {
00027 class ItemVisitor;
00028 }
00029 }
00030
00031
00032 namespace geos {
00033 namespace index {
00034 namespace intervalrtree {
00035
00036 class IntervalRTreeBranchNode : public IntervalRTreeNode
00037 {
00038 private:
00039 const IntervalRTreeNode * node1;
00040 const IntervalRTreeNode * node2;
00041
00042
00043
00044
00045
00046
00047
00048 protected:
00049 public:
00050 IntervalRTreeBranchNode( const IntervalRTreeNode * n1, const IntervalRTreeNode * n2)
00051 : IntervalRTreeNode( std::min( n1->getMin(), n2->getMin()), std::max( n1->getMax(), n2->getMax())),
00052 node1( n1),
00053 node2( n2)
00054 { }
00055
00056 ~IntervalRTreeBranchNode()
00057 {
00058 delete node1;
00059 delete node2;
00060 }
00061
00062
00063 void query(double queryMin, double queryMax, index::ItemVisitor * visitor) const;
00064 };
00065
00066 }
00067 }
00068 }
00069
00070 #endif // GEOS_INDEX_INTERVALRTREE_INTERVALRTREEBRANCHNODE_H
00071
00072
00073
00074