13#ifndef OGRMUTEXEDLAYER_H_INCLUDED
14#define OGRMUTEXEDLAYER_H_INCLUDED
18#include "ogrlayerdecorator.h"
19#include "cpl_multiproc.h"
28class CPL_DLL OGRMutexedLayer final :
public OGRLayerDecorator
33 CPLMutex *m_hMutex =
nullptr;
37 OGRMutexedLayer(OGRLayer *poDecoratedLayer,
int bTakeOwnership,
41 ~OGRMutexedLayer()
override;
43 OGRGeometry *GetSpatialFilter()
override;
44 virtual OGRErr ISetSpatialFilter(
int iGeomField,
45 const OGRGeometry *)
override;
47 OGRErr SetAttributeFilter(
const char *)
override;
49 void ResetReading()
override;
50 OGRFeature *GetNextFeature()
override;
52 OGRFeature *GetFeature(
GIntBig nFID)
override;
53 OGRErr ISetFeature(OGRFeature *poFeature)
override;
54 OGRErr ICreateFeature(OGRFeature *poFeature)
override;
55 OGRErr IUpsertFeature(OGRFeature *poFeature)
override;
56 OGRErr IUpdateFeature(OGRFeature *poFeature,
int nUpdatedFieldsCount,
57 const int *panUpdatedFieldsIdx,
58 int nUpdatedGeomFieldsCount,
59 const int *panUpdatedGeomFieldsIdx,
60 bool bUpdateStyleString)
override;
63 GDALDataset *GetDataset()
override;
64 virtual bool GetArrowStream(
struct ArrowArrayStream *out_stream,
67 const char *GetName()
const override;
69 const OGRFeatureDefn *GetLayerDefn()
const override;
71 const OGRSpatialReference *GetSpatialRef()
const override;
73 GIntBig GetFeatureCount(
int bForce = TRUE)
override;
74 OGRErr IGetExtent(
int iGeomField, OGREnvelope *psExtent,
75 bool bForce)
override;
77 int TestCapability(
const char *)
const override;
79 virtual OGRErr CreateField(
const OGRFieldDefn *poField,
80 int bApproxOK = TRUE)
override;
81 OGRErr DeleteField(
int iField)
override;
82 OGRErr ReorderFields(
int *panMap)
override;
83 virtual OGRErr AlterFieldDefn(
int iField, OGRFieldDefn *poNewFieldDefn,
86 AlterGeomFieldDefn(
int iGeomField,
87 const OGRGeomFieldDefn *poNewGeomFieldDefn,
90 OGRErr SyncToDisk()
override;
92 OGRStyleTable *GetStyleTable()
override;
93 void SetStyleTableDirectly(OGRStyleTable *poStyleTable)
override;
95 void SetStyleTable(OGRStyleTable *poStyleTable)
override;
97 OGRErr StartTransaction()
override;
98 OGRErr CommitTransaction()
override;
99 OGRErr RollbackTransaction()
override;
101 const char *GetFIDColumn()
const override;
102 const char *GetGeometryColumn()
const override;
106 char **GetMetadata(
const char *pszDomain =
"")
override;
107 CPLErr SetMetadata(
char **papszMetadata,
108 const char *pszDomain =
"")
override;
109 virtual const char *GetMetadataItem(
const char *pszName,
110 const char *pszDomain =
"")
override;
111 CPLErr SetMetadataItem(
const char *pszName,
const char *pszValue,
112 const char *pszDomain =
"")
override;
113 OGRErr Rename(
const char *pszNewName)
override;
CPLErr
Error category.
Definition cpl_error.h:37
#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:936
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition cpl_port.h:1087
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition cpl_port.h:205
OGRwkbGeometryType
List of well known binary geometry types.
Definition ogr_core.h:405
int OGRErr
Type for a OGR error.
Definition ogr_core.h:370