IntervalRTreeBranchNode.h

00001 /**********************************************************************
00002  *
00003  * GEOS - Geometry Engine Open Source
00004  * http://geos.osgeo.org
00005  *
00006  * Copyright (C) 2006 Refractions Research Inc.
00007  *
00008  * This is free software; you can redistribute and/or modify it under
00009  * the terms of the GNU Lesser General Public Licence as published
00010  * by the Free Software Foundation. 
00011  * See the COPYING file for more information.
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> // inherited
00020 
00021 #include <algorithm>
00022 
00023 // forward declarations
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         //void buildExtent( IntervalRTreeNode * n1, IntervalRTreeNode * n2)
00042         //{
00043         //      min = std::min( n1->min, n2->min);
00044         //      max = std::max( n1->max, n2->max);
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 } // geos::intervalrtree
00066 } // geos::index
00067 } // geos
00068 
00069 #endif // GEOS_INDEX_INTERVALRTREE_INTERVALRTREEBRANCHNODE_H
00070 

Generated on 10 Sep 2013 for GEOS by  doxygen 1.4.7