GEOS
3.3.1
|
00001 /********************************************************************** 00002 * $Id: SortedPackedIntervalRTree.h 2540 2009-06-05 09:28:04Z strk $ 00003 * 00004 * GEOS - Geometry Engine Open Source 00005 * http://geos.refractions.net 00006 * 00007 * Copyright (C) 2006 Refractions Research Inc. 00008 * 00009 * This is free software; you can redistribute and/or modify it under 00010 * the terms of the GNU Lesser General Public Licence as published 00011 * by the Free Software Foundation. 00012 * See the COPYING file for more information. 00013 * 00014 * 00015 **********************************************************************/ 00016 00017 #ifndef GEOS_INDEX_INTERVALRTREE_SORTEDPACKEDINTERVALRTREE_H 00018 #define GEOS_INDEX_INTERVALRTREE_SORTEDPACKEDINTERVALRTREE_H 00019 00020 #include <geos/index/intervalrtree/IntervalRTreeNode.h> 00021 00022 // forward declarations 00023 namespace geos { 00024 namespace index { 00025 class ItemVisitor; 00026 } 00027 } 00028 00029 namespace geos { 00030 namespace index { 00031 namespace intervalrtree { 00032 00050 class SortedPackedIntervalRTree 00051 { 00052 private: 00053 IntervalRTreeNode::ConstVect * leaves; 00054 const IntervalRTreeNode * root; 00055 int level; 00056 00057 void init(); 00058 void buildLevel( IntervalRTreeNode::ConstVect * src, IntervalRTreeNode::ConstVect * dest); 00059 const IntervalRTreeNode * buildTree(); 00060 00061 protected: 00062 public: 00063 SortedPackedIntervalRTree(); 00064 00065 ~SortedPackedIntervalRTree(); 00066 00076 void insert( double min, double max, void * item); 00077 00086 void query( double min, double max, index::ItemVisitor * visitor); 00087 00088 }; 00089 00090 } // geos::intervalrtree 00091 } // geos::index 00092 } // geos 00093 00094 #endif // GEOS_INDEX_INTERVALRTREE_SORTEDPACKEDINTERVALRTREE_H 00095 /********************************************************************** 00096 * $Log$ 00097 **********************************************************************/ 00098