30 #ifndef OGRLAYERPOOL_H_INCLUDED
31 #define OGRLAYERPOOL_H_INCLUDED
37 typedef OGRLayer* (*OpenLayerFunc)(
void* user_data);
38 typedef void (*FreeUserDataFunc)(
void* user_data);
46 class OGRAbstractProxiedLayer :
public OGRLayer
48 friend class OGRLayerPool;
50 OGRAbstractProxiedLayer *poPrevLayer;
51 OGRAbstractProxiedLayer *poNextLayer;
56 virtual void CloseUnderlyingLayer() = 0;
59 explicit OGRAbstractProxiedLayer(OGRLayerPool* poPool);
60 virtual ~OGRAbstractProxiedLayer();
70 OGRAbstractProxiedLayer *poMRULayer;
71 OGRAbstractProxiedLayer *poLRULayer;
73 int nMaxSimultaneouslyOpened;
76 explicit OGRLayerPool(
int nMaxSimultaneouslyOpened = 100);
79 void SetLastUsedLayer(OGRAbstractProxiedLayer* poProxiedLayer);
80 void UnchainLayer(OGRAbstractProxiedLayer* poProxiedLayer);
82 int GetMaxSimultaneouslyOpened()
const {
return nMaxSimultaneouslyOpened; }
83 int GetSize()
const {
return nMRUListSize; }
90 class OGRProxiedLayer :
public OGRAbstractProxiedLayer
92 OpenLayerFunc pfnOpenLayer;
93 FreeUserDataFunc pfnFreeUserData;
99 int OpenUnderlyingLayer();
103 virtual void CloseUnderlyingLayer()
override;
107 OGRProxiedLayer(OGRLayerPool* poPool,
108 OpenLayerFunc pfnOpenLayer,
109 FreeUserDataFunc pfnFreeUserData,
111 virtual ~OGRProxiedLayer();
116 virtual void SetSpatialFilter(
OGRGeometry * )
override;
117 virtual void SetSpatialFilter(
int iGeomField,
OGRGeometry * )
override;
119 virtual OGRErr SetAttributeFilter(
const char * )
override;
121 virtual void ResetReading()
override;
122 virtual OGRFeature *GetNextFeature()
override;
129 virtual const char *GetName()
override;
135 virtual GIntBig GetFeatureCount(
int bForce = TRUE )
override;
136 virtual OGRErr GetExtent(
int iGeomField, OGREnvelope *psExtent,
int bForce = TRUE)
override;
137 virtual OGRErr GetExtent(OGREnvelope *psExtent,
int bForce = TRUE)
override;
139 virtual int TestCapability(
const char * )
override;
142 int bApproxOK = TRUE )
override;
143 virtual OGRErr DeleteField(
int iField )
override;
144 virtual OGRErr ReorderFields(
int* panMap )
override;
145 virtual OGRErr AlterFieldDefn(
int iField,
OGRFieldDefn* poNewFieldDefn,
int nFlags )
override;
147 virtual OGRErr SyncToDisk()
override;
150 virtual void SetStyleTableDirectly(
OGRStyleTable *poStyleTable )
override;
152 virtual void SetStyleTable(
OGRStyleTable *poStyleTable)
override;
154 virtual OGRErr StartTransaction()
override;
155 virtual OGRErr CommitTransaction()
override;
156 virtual OGRErr RollbackTransaction()
override;
158 virtual const char *GetFIDColumn()
override;
159 virtual const char *GetGeometryColumn()
override;
161 virtual OGRErr SetIgnoredFields(
const char **papszFields )
override;
166 #endif // OGRLAYERPOOL_H_INCLUDED
Definition: ogr_feature.h:207
Definition: ogr_feature.h:62
OGRwkbGeometryType
Definition: ogr_core.h:312
Definition: ogr_geometry.h:118
Definition: ogr_spatialref.h:132
Definition: ogrsf_frmts.h:68
Definition: ogr_feature.h:279
Definition: ogr_featurestyle.h:83
long long GIntBig
Definition: cpl_port.h:250
int OGRErr
Definition: ogr_core.h:285