1 /********************************************************************** 2 * 3 * GEOS - Geometry Engine Open Source 4 * http://geos.osgeo.org 5 * 6 * Copyright (C) 2006 Refractions Research Inc. 7 * 8 * This is free software; you can redistribute and/or modify it under 9 * the terms of the GNU Lesser General Public Licence as published 10 * by the Free Software Foundation. 11 * See the COPYING file for more information. 12 * 13 **********************************************************************/ 14 #ifndef GEOS_INDEX_STRTREE_ITEMBOUNDABLE_H 15 #define GEOS_INDEX_STRTREE_ITEMBOUNDABLE_H 16 17 #include <geos/export.h> 18 19 #include <geos/index/strtree/Boundable.h> // for inheritance 20 21 namespace geos { 22 namespace index { // geos::index 23 namespace strtree { // geos::index::strtree 24 25 /** 26 * \brief 27 * Boundable wrapper for a non-Boundable spatial object. 28 * Used internally by AbstractSTRtree. 29 * 30 * \todo TODO: It's unclear who takes ownership of passed newBounds and newItem objects. 31 */ 32 class GEOS_DLL ItemBoundable: public Boundable { 33 public: 34 ItemBoundable(const void * newBounds,void * newItem)35 ItemBoundable(const void* newBounds, void* newItem) : bounds(newBounds), item(newItem) {} 36 ~ItemBoundable() override = default; 37 isLeaf()38 bool isLeaf() const override { 39 return true; 40 } 41 getBounds()42 const void* getBounds() const override { 43 return bounds; 44 } 45 getItem()46 void* getItem() const { 47 return item; 48 } 49 50 private: 51 52 const void* bounds; 53 void* item; 54 }; 55 56 } // namespace geos::index::strtree 57 } // namespace geos::index 58 } // namespace geos 59 60 #endif // GEOS_INDEX_STRTREE_ITEMBOUNDABLE_H 61