GEOS  3.3.3
SpatialIndex.h
1 /**********************************************************************
2  * $Id: SpatialIndex.h 2556 2009-06-06 22:22:28Z strk $
3  *
4  * GEOS - Geometry Engine Open Source
5  * http://geos.refractions.net
6  *
7  * Copyright (C) 2006 Refractions Research Inc.
8  *
9  * This is free software; you can redistribute and/or modify it under
10  * the terms of the GNU Lesser General Public Licence as published
11  * by the Free Software Foundation.
12  * See the COPYING file for more information.
13  *
14  **********************************************************************/
15 
16 #ifndef GEOS_INDEX_SPATIALINDEX_H
17 #define GEOS_INDEX_SPATIALINDEX_H
18 
19 #include <geos/export.h>
20 
21 #include <vector>
22 
23 // Forward declarations
24 namespace geos {
25  namespace geom {
26  class Envelope;
27  }
28  namespace index {
29  class ItemVisitor;
30  }
31 }
32 
33 namespace geos {
34 namespace index {
35 
48 class GEOS_DLL SpatialIndex {
49 public:
50 
51  virtual ~SpatialIndex() {}
52 
65  virtual void insert(const geom::Envelope *itemEnv, void *item) = 0;
66 
76  //virtual std::vector<void*>* query(const geom::Envelope *searchEnv)=0;
77  virtual void query(const geom::Envelope* searchEnv, std::vector<void*>&) = 0;
78 
89  virtual void query(const geom::Envelope *searchEnv, ItemVisitor& visitor) = 0;
90 
98  virtual bool remove(const geom::Envelope* itemEnv, void* item) = 0;
99 
100 };
101 
102 
103 } // namespace geos.index
104 } // namespace geos
105 
106 #endif // GEOS_INDEX_SPATIALINDEX_H
107