Line data Source code
1 : /****************************************************************************** 2 : * $Id$ 3 : * 4 : * Project: OpenGIS Simple Features Reference Implementation 5 : * Purpose: Defines OGRLayerDecorator class 6 : * Author: Even Rouault, even dot rouault at spatialys.com 7 : * 8 : ****************************************************************************** 9 : * Copyright (c) 2012-2013, Even Rouault <even dot rouault at spatialys.com> 10 : * 11 : * SPDX-License-Identifier: MIT 12 : ****************************************************************************/ 13 : 14 : #ifndef OGRLAYERDECORATOR_H_INCLUDED 15 : #define OGRLAYERDECORATOR_H_INCLUDED 16 : 17 : #ifndef DOXYGEN_SKIP 18 : 19 : #include "ogrsf_frmts.h" 20 : 21 : class CPL_DLL OGRLayerDecorator : public OGRLayer 22 : { 23 : CPL_DISALLOW_COPY_ASSIGN(OGRLayerDecorator) 24 : 25 : protected: 26 : OGRLayer *m_poDecoratedLayer; 27 : int m_bHasOwnership; 28 : 29 : public: 30 : OGRLayerDecorator(OGRLayer *poDecoratedLayer, int bTakeOwnership); 31 : virtual ~OGRLayerDecorator(); 32 : 33 : virtual OGRGeometry *GetSpatialFilter() override; 34 : virtual void SetSpatialFilter(OGRGeometry *) override; 35 : virtual void SetSpatialFilterRect(double dfMinX, double dfMinY, 36 : double dfMaxX, double dfMaxY) override; 37 : virtual void SetSpatialFilter(int iGeomField, OGRGeometry *) override; 38 : virtual void SetSpatialFilterRect(int iGeomField, double dfMinX, 39 : double dfMinY, double dfMaxX, 40 : double dfMaxY) override; 41 : 42 : virtual OGRErr SetAttributeFilter(const char *) override; 43 : 44 : virtual void ResetReading() override; 45 : virtual OGRFeature *GetNextFeature() override; 46 : virtual OGRErr SetNextByIndex(GIntBig nIndex) override; 47 : virtual OGRFeature *GetFeature(GIntBig nFID) override; 48 : virtual OGRErr ISetFeature(OGRFeature *poFeature) override; 49 : virtual OGRErr ICreateFeature(OGRFeature *poFeature) override; 50 : virtual OGRErr IUpsertFeature(OGRFeature *poFeature) override; 51 : virtual OGRErr DeleteFeature(GIntBig nFID) override; 52 : OGRErr IUpdateFeature(OGRFeature *poFeature, int nUpdatedFieldsCount, 53 : const int *panUpdatedFieldsIdx, 54 : int nUpdatedGeomFieldsCount, 55 : const int *panUpdatedGeomFieldsIdx, 56 : bool bUpdateStyleString) override; 57 : 58 : virtual GDALDataset *GetDataset() override; 59 : virtual bool GetArrowStream(struct ArrowArrayStream *out_stream, 60 : CSLConstList papszOptions = nullptr) override; 61 : 62 : virtual const char *GetName() override; 63 : virtual OGRwkbGeometryType GetGeomType() override; 64 : virtual OGRFeatureDefn *GetLayerDefn() override; 65 : 66 : virtual OGRSpatialReference *GetSpatialRef() override; 67 : 68 : virtual GIntBig GetFeatureCount(int bForce = TRUE) override; 69 : virtual OGRErr GetExtent(int iGeomField, OGREnvelope *psExtent, 70 : int bForce = TRUE) override; 71 : virtual OGRErr GetExtent(OGREnvelope *psExtent, int bForce = TRUE) override; 72 : 73 : virtual int TestCapability(const char *) override; 74 : 75 : virtual OGRErr CreateField(const OGRFieldDefn *poField, 76 : int bApproxOK = TRUE) override; 77 : virtual OGRErr DeleteField(int iField) override; 78 : virtual OGRErr ReorderFields(int *panMap) override; 79 : virtual OGRErr AlterFieldDefn(int iField, OGRFieldDefn *poNewFieldDefn, 80 : int nFlags) override; 81 : virtual OGRErr 82 : AlterGeomFieldDefn(int iGeomField, 83 : const OGRGeomFieldDefn *poNewGeomFieldDefn, 84 : int nFlags) override; 85 : 86 : virtual OGRErr CreateGeomField(const OGRGeomFieldDefn *poField, 87 : int bApproxOK = TRUE) override; 88 : 89 : virtual OGRErr SyncToDisk() override; 90 : 91 : virtual OGRStyleTable *GetStyleTable() override; 92 : virtual void SetStyleTableDirectly(OGRStyleTable *poStyleTable) override; 93 : 94 : virtual void SetStyleTable(OGRStyleTable *poStyleTable) override; 95 : 96 : virtual OGRErr StartTransaction() override; 97 : virtual OGRErr CommitTransaction() override; 98 : virtual OGRErr RollbackTransaction() override; 99 : 100 : virtual const char *GetFIDColumn() override; 101 : virtual const char *GetGeometryColumn() override; 102 : 103 : virtual OGRErr SetIgnoredFields(CSLConstList papszFields) override; 104 : 105 : virtual char **GetMetadata(const char *pszDomain = "") override; 106 : virtual CPLErr SetMetadata(char **papszMetadata, 107 : const char *pszDomain = "") override; 108 : virtual const char *GetMetadataItem(const char *pszName, 109 : const char *pszDomain = "") override; 110 : virtual CPLErr SetMetadataItem(const char *pszName, const char *pszValue, 111 : const char *pszDomain = "") override; 112 : virtual OGRErr Rename(const char *pszNewName) override; 113 : 114 347 : OGRLayer *GetBaseLayer() const 115 : { 116 347 : return m_poDecoratedLayer; 117 : } 118 : }; 119 : 120 : #endif /* #ifndef DOXYGEN_SKIP */ 121 : 122 : #endif // OGRLAYERDECORATOR_H_INCLUDED