30 #ifndef OGREDITABLELAYER_H_INCLUDED
31 #define OGREDITABLELAYER_H_INCLUDED
34 #include "ogrlayerdecorator.h"
38 class CPL_DLL IOGREditableLayerSynchronizer
41 virtual ~IOGREditableLayerSynchronizer();
47 class CPL_DLL OGREditableLayer :
public OGRLayerDecorator
53 IOGREditableLayerSynchronizer *m_poSynchronizer;
54 bool m_bTakeOwnershipSynchronizer;
57 std::set<GIntBig> m_oSetCreated{};
58 std::set<GIntBig> m_oSetEdited{};
59 std::set<GIntBig> m_oSetDeleted{};
60 std::set<GIntBig>::iterator m_oIter{};
61 std::set<CPLString> m_oSetDeletedFields{};
63 bool m_bStructureModified;
64 bool m_bSupportsCreateGeomField;
65 bool m_bSupportsCurveGeometries;
66 std::map<CPLString, int> m_oMapEditableFDefnFieldNameToIdx{};
70 bool bCanStealSrcFeature,
71 bool bHideDeletedFields);
73 int GetSrcGeomFieldIndex(
int iGeomField);
77 OGREditableLayer(
OGRLayer* poDecoratedLayer,
78 bool bTakeOwnershipDecoratedLayer,
79 IOGREditableLayerSynchronizer* poSynchronizer,
80 bool bTakeOwnershipSynchronizer);
81 virtual ~OGREditableLayer();
83 void SetNextFID(
GIntBig nNextFID);
84 void SetSupportsCreateGeomField(
bool SupportsCreateGeomField);
85 void SetSupportsCurveGeometries(
bool bSupportsCurveGeometries);
88 virtual void SetSpatialFilter(
OGRGeometry * )
override;
89 virtual void SetSpatialFilterRect(
double dfMinX,
double dfMinY,
90 double dfMaxX,
double dfMaxY )
override;
91 virtual void SetSpatialFilter(
int iGeomField,
OGRGeometry * )
override;
92 virtual void SetSpatialFilterRect(
int iGeomField,
double dfMinX,
double dfMinY,
93 double dfMaxX,
double dfMaxY )
override;
95 virtual OGRErr SetAttributeFilter(
const char * )
override;
97 virtual void ResetReading()
override;
110 virtual GIntBig GetFeatureCount(
int bForce = TRUE )
override;
111 virtual OGRErr GetExtent(
int iGeomField,
OGREnvelope *psExtent,
int bForce = TRUE)
override;
114 virtual int TestCapability(
const char * )
override;
117 int bApproxOK = TRUE )
override;
118 virtual OGRErr DeleteField(
int iField )
override;
119 virtual OGRErr ReorderFields(
int* panMap )
override;
120 virtual OGRErr AlterFieldDefn(
int iField,
OGRFieldDefn* poNewFieldDefn,
int nFlags )
override;
123 int bApproxOK = TRUE )
override;
125 virtual OGRErr SyncToDisk()
override;
127 virtual OGRErr StartTransaction()
override;
128 virtual OGRErr CommitTransaction()
override;
129 virtual OGRErr RollbackTransaction()
override;
131 virtual const char *GetGeometryColumn()
override;
Simple container for a bounding region (rectangle)
Definition: ogr_core.h:58
Definition of a feature class or feature layer.
Definition: ogr_feature.h:279
A simple feature, including geometry and attributes.
Definition: ogr_feature.h:371
Definition of an attribute of an OGRFeatureDefn.
Definition: ogr_feature.h:99
Definition of a geometry field of an OGRFeatureDefn.
Definition: ogr_feature.h:202
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:327
This class represents a layer of simple features, with access methods.
Definition: ogrsf_frmts.h:71
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:158
#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:346
int OGRErr
Type for a OGR error.
Definition: ogr_core.h:318