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