30#ifndef OGRLAYERPOOL_H_INCLUDED
31#define OGRLAYERPOOL_H_INCLUDED
37typedef OGRLayer* (*OpenLayerFunc)(
void* user_data);
38typedef void (*FreeUserDataFunc)(
void* user_data);
46class CPL_DLL OGRAbstractProxiedLayer :
public OGRLayer
50 friend class OGRLayerPool;
52 OGRAbstractProxiedLayer *poPrevLayer;
53 OGRAbstractProxiedLayer *poNextLayer;
58 virtual void CloseUnderlyingLayer() = 0;
61 explicit OGRAbstractProxiedLayer(OGRLayerPool* poPool);
62 virtual ~OGRAbstractProxiedLayer();
69class CPL_DLL OGRLayerPool
74 OGRAbstractProxiedLayer *poMRULayer;
75 OGRAbstractProxiedLayer *poLRULayer;
77 int nMaxSimultaneouslyOpened;
80 explicit OGRLayerPool(
int nMaxSimultaneouslyOpened = 100);
83 void SetLastUsedLayer(OGRAbstractProxiedLayer* poProxiedLayer);
84 void UnchainLayer(OGRAbstractProxiedLayer* poProxiedLayer);
86 int GetMaxSimultaneouslyOpened()
const {
return nMaxSimultaneouslyOpened; }
87 int GetSize()
const {
return nMRUListSize; }
94class OGRProxiedLayer :
public OGRAbstractProxiedLayer
98 OpenLayerFunc pfnOpenLayer;
99 FreeUserDataFunc pfnFreeUserData;
101 OGRLayer *poUnderlyingLayer;
102 OGRFeatureDefn *poFeatureDefn;
103 OGRSpatialReference *poSRS;
105 int OpenUnderlyingLayer();
109 virtual void CloseUnderlyingLayer()
override;
113 OGRProxiedLayer(OGRLayerPool* poPool,
114 OpenLayerFunc pfnOpenLayer,
115 FreeUserDataFunc pfnFreeUserData,
117 virtual ~OGRProxiedLayer();
119 OGRLayer *GetUnderlyingLayer();
121 virtual OGRGeometry *GetSpatialFilter()
override;
122 virtual void SetSpatialFilter( OGRGeometry * )
override;
123 virtual void SetSpatialFilter(
int iGeomField, OGRGeometry * )
override;
125 virtual OGRErr SetAttributeFilter(
const char * )
override;
127 virtual void ResetReading()
override;
128 virtual OGRFeature *GetNextFeature()
override;
130 virtual OGRFeature *GetFeature(
GIntBig nFID )
override;
131 virtual OGRErr ISetFeature( OGRFeature *poFeature )
override;
132 virtual OGRErr ICreateFeature( OGRFeature *poFeature )
override;
135 virtual const char *GetName()
override;
137 virtual OGRFeatureDefn *GetLayerDefn()
override;
139 virtual OGRSpatialReference *GetSpatialRef()
override;
141 virtual GIntBig GetFeatureCount(
int bForce = TRUE )
override;
142 virtual OGRErr GetExtent(
int iGeomField, OGREnvelope *psExtent,
int bForce = TRUE)
override;
143 virtual OGRErr GetExtent(OGREnvelope *psExtent,
int bForce = TRUE)
override;
145 virtual int TestCapability(
const char * )
override;
147 virtual OGRErr CreateField( OGRFieldDefn *poField,
148 int bApproxOK = TRUE )
override;
149 virtual OGRErr DeleteField(
int iField )
override;
150 virtual OGRErr ReorderFields(
int* panMap )
override;
151 virtual OGRErr AlterFieldDefn(
int iField, OGRFieldDefn* poNewFieldDefn,
int nFlags )
override;
153 virtual OGRErr SyncToDisk()
override;
155 virtual OGRStyleTable *GetStyleTable()
override;
156 virtual void SetStyleTableDirectly( OGRStyleTable *poStyleTable )
override;
158 virtual void SetStyleTable(OGRStyleTable *poStyleTable)
override;
160 virtual OGRErr StartTransaction()
override;
161 virtual OGRErr CommitTransaction()
override;
162 virtual OGRErr RollbackTransaction()
override;
164 virtual const char *GetFIDColumn()
override;
165 virtual const char *GetGeometryColumn()
override;
167 virtual OGRErr SetIgnoredFields(
const char **papszFields )
override;
This class represents a layer of simple features, with access methods.
Definition ogrsf_frmts.h:71
#define CPL_DISALLOW_COPY_ASSIGN(ClassName)
Helper to remove the copy and assignment constructors so that the compiler will not generate the defa...
Definition cpl_port.h:955
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition cpl_port.h:244
OGRwkbGeometryType
List of well known binary geometry types.
Definition ogr_core.h:369
int OGRErr
Type for a OGR error.
Definition ogr_core.h:341
Classes related to registration of format support, and opening datasets.