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 CPL_DLL OGRAbstractProxiedLayer :
public OGRLayer
50 friend class OGRLayerPool;
52 OGRAbstractProxiedLayer
54 OGRAbstractProxiedLayer
60 virtual void CloseUnderlyingLayer() = 0;
63 explicit OGRAbstractProxiedLayer(OGRLayerPool *poPool);
64 virtual ~OGRAbstractProxiedLayer();
71 class CPL_DLL OGRLayerPool
76 OGRAbstractProxiedLayer *poMRULayer;
77 OGRAbstractProxiedLayer
80 int nMaxSimultaneouslyOpened;
83 explicit OGRLayerPool(
int nMaxSimultaneouslyOpened = 100);
86 void SetLastUsedLayer(OGRAbstractProxiedLayer *poProxiedLayer);
87 void UnchainLayer(OGRAbstractProxiedLayer *poProxiedLayer);
89 int GetMaxSimultaneouslyOpened()
const
91 return nMaxSimultaneouslyOpened;
103 class OGRProxiedLayer :
public OGRAbstractProxiedLayer
107 OpenLayerFunc pfnOpenLayer;
108 FreeUserDataFunc pfnFreeUserData;
114 int OpenUnderlyingLayer();
117 virtual void CloseUnderlyingLayer()
override;
120 OGRProxiedLayer(OGRLayerPool *poPool, OpenLayerFunc pfnOpenLayer,
121 FreeUserDataFunc pfnFreeUserData,
void *pUserData);
122 virtual ~OGRProxiedLayer();
127 virtual void SetSpatialFilter(
OGRGeometry *)
override;
128 virtual void SetSpatialFilter(
int iGeomField,
OGRGeometry *)
override;
130 virtual OGRErr SetAttributeFilter(
const char *)
override;
132 virtual void ResetReading()
override;
133 virtual OGRFeature *GetNextFeature()
override;
140 const int *panUpdatedFieldsIdx,
141 int nUpdatedGeomFieldsCount,
142 const int *panUpdatedGeomFieldsIdx,
143 bool bUpdateStyleString)
override;
147 virtual bool GetArrowStream(
struct ArrowArrayStream *out_stream,
150 virtual const char *GetName()
override;
156 virtual GIntBig GetFeatureCount(
int bForce = TRUE)
override;
158 int bForce = TRUE)
override;
161 virtual int TestCapability(
const char *)
override;
164 int bApproxOK = TRUE)
override;
165 virtual OGRErr DeleteField(
int iField)
override;
166 virtual OGRErr ReorderFields(
int *panMap)
override;
168 int nFlags)
override;
170 AlterGeomFieldDefn(
int iGeomField,
172 int nFlags)
override;
174 virtual OGRErr SyncToDisk()
override;
177 virtual void SetStyleTableDirectly(
OGRStyleTable *poStyleTable)
override;
179 virtual void SetStyleTable(
OGRStyleTable *poStyleTable)
override;
181 virtual OGRErr StartTransaction()
override;
182 virtual OGRErr CommitTransaction()
override;
183 virtual OGRErr RollbackTransaction()
override;
185 virtual const char *GetFIDColumn()
override;
186 virtual const char *GetGeometryColumn()
override;
188 virtual OGRErr SetIgnoredFields(
const char **papszFields)
override;
190 virtual OGRErr Rename(
const char *pszNewName)
override;
195 #endif // OGRLAYERPOOL_H_INCLUDED
This class represents a style table.
Definition: ogr_featurestyle.h:84
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:166
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:334
This class represents a layer of simple features, with access methods.
Definition: ogrsf_frmts.h:73
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:348
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1178
Definition of an attribute of an OGRFeatureDefn.
Definition: ogr_feature.h:103
Definition of a geometry field of an OGRFeatureDefn.
Definition: ogr_feature.h:286
int OGRErr
Type for a OGR error.
Definition: ogr_core.h:378
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition: cpl_port.h:226
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:406
A simple feature, including geometry and attributes.
Definition: ogr_feature.h:680
Simple container for a bounding region (rectangle)
Definition: ogr_core.h:57
Definition of a feature class or feature layer.
Definition: ogr_feature.h:385
#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:1042