GDAL
ogrsf_frmts.h
Go to the documentation of this file.
1 /******************************************************************************
2  * $Id$
3  *
4  * Project: OpenGIS Simple Features Reference Implementation
5  * Purpose: Classes related to format registration, and file opening.
6  * Author: Frank Warmerdam, warmerda@home.com
7  *
8  ******************************************************************************
9  * Copyright (c) 1999, Les Technologies SoftMap Inc.
10  * Copyright (c) 2007-2014, Even Rouault <even dot rouault at spatialys.com>
11  *
12  * Permission is hereby granted, free of charge, to any person obtaining a
13  * copy of this software and associated documentation files (the "Software"),
14  * to deal in the Software without restriction, including without limitation
15  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
16  * and/or sell copies of the Software, and to permit persons to whom the
17  * Software is furnished to do so, subject to the following conditions:
18  *
19  * The above copyright notice and this permission notice shall be included
20  * in all copies or substantial portions of the Software.
21  *
22  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
25  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
28  * DEALINGS IN THE SOFTWARE.
29  ****************************************************************************/
30 
31 #ifndef OGRSF_FRMTS_H_INCLUDED
32 #define OGRSF_FRMTS_H_INCLUDED
33 
34 #include "cpl_progress.h"
35 #include "ogr_feature.h"
36 #include "ogr_featurestyle.h"
37 #include "gdal_priv.h"
38 
39 #include <memory>
40 
47 #if !defined(GDAL_COMPILATION) && !defined(SUPPRESS_DEPRECATION_WARNINGS)
49 #define OGR_DEPRECATED(x) CPL_WARN_DEPRECATED(x)
50 #else
51 #define OGR_DEPRECATED(x)
52 #endif
53 
55 class OGRLayerAttrIndex;
56 class OGRSFDriver;
57 
58 struct ArrowArrayStream;
59 
60 /************************************************************************/
61 /* OGRLayer */
62 /************************************************************************/
63 
69 /* Note: any virtual method added to this class must also be added in the */
70 /* OGRLayerDecorator and OGRMutexedLayer classes. */
71 
72 class CPL_DLL OGRLayer : public GDALMajorObject
73 {
74  private:
75  struct Private;
76  std::unique_ptr<Private> m_poPrivate;
77 
78  void ConvertGeomsIfNecessary(OGRFeature *poFeature);
79 
80  class CPL_DLL FeatureIterator
81  {
82  struct Private;
83  std::unique_ptr<Private> m_poPrivate;
84 
85  public:
86  FeatureIterator(OGRLayer *poLayer, bool bStart);
87  FeatureIterator(
88  FeatureIterator &&oOther) noexcept; // declared but not defined.
89  // Needed for gcc 5.4 at least
90  ~FeatureIterator();
91  OGRFeatureUniquePtr &operator*();
92  FeatureIterator &operator++();
93  bool operator!=(const FeatureIterator &it) const;
94  };
95 
96  friend inline FeatureIterator begin(OGRLayer *poLayer);
97  friend inline FeatureIterator end(OGRLayer *poLayer);
98 
100 
101  protected:
103  int m_bFilterIsEnvelope;
104  OGRGeometry *m_poFilterGeom;
105  OGRPreparedGeometry *m_pPreparedFilterGeom; /* m_poFilterGeom compiled as a
106  prepared geometry */
107  OGREnvelope m_sFilterEnvelope;
108  int m_iGeomFieldFilter; // specify the index on which the spatial
109  // filter is active.
110 
111  int FilterGeometry(OGRGeometry *);
112  // int FilterGeometry( OGRGeometry *, OGREnvelope*
113  // psGeometryEnvelope);
114  int InstallFilter(OGRGeometry *);
115 
116  OGRErr GetExtentInternal(int iGeomField, OGREnvelope *psExtent, int bForce);
118 
119  virtual OGRErr ISetFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
120  virtual OGRErr ICreateFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
121  virtual OGRErr IUpsertFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
122  virtual OGRErr
123  IUpdateFeature(OGRFeature *poFeature, int nUpdatedFieldsCount,
124  const int *panUpdatedFieldsIdx, int nUpdatedGeomFieldsCount,
125  const int *panUpdatedGeomFieldsIdx,
126  bool bUpdateStyleString) CPL_WARN_UNUSED_RESULT;
127 
129  CPLStringList m_aosArrowArrayStreamOptions{};
130  struct ArrowArrayStreamPrivateData
131  {
132  bool m_bArrowArrayStreamInProgress = false;
133  OGRLayer *m_poLayer = nullptr;
134  };
135  std::shared_ptr<ArrowArrayStreamPrivateData>
136  m_poSharedArrowArrayStreamPrivateData{};
137  struct ArrowArrayStreamPrivateDataSharedDataWrapper
138  {
139  std::shared_ptr<ArrowArrayStreamPrivateData> poShared{};
140  };
142 
143  friend class OGRArrowArrayHelper;
144  static void ReleaseArray(struct ArrowArray *array);
145  static void ReleaseSchema(struct ArrowSchema *schema);
146  static void ReleaseStream(struct ArrowArrayStream *stream);
147  virtual int GetArrowSchema(struct ArrowArrayStream *,
148  struct ArrowSchema *out_schema);
149  virtual int GetNextArrowArray(struct ArrowArrayStream *,
150  struct ArrowArray *out_array);
151  static int StaticGetArrowSchema(struct ArrowArrayStream *,
152  struct ArrowSchema *out_schema);
153  static int StaticGetNextArrowArray(struct ArrowArrayStream *,
154  struct ArrowArray *out_array);
155  static const char *GetLastErrorArrowArrayStream(struct ArrowArrayStream *);
156 
157  public:
158  OGRLayer();
159  virtual ~OGRLayer();
160 
171  FeatureIterator begin();
172 
174  FeatureIterator end();
175 
176  virtual OGRGeometry *GetSpatialFilter();
177  virtual void SetSpatialFilter(OGRGeometry *);
178  virtual void SetSpatialFilterRect(double dfMinX, double dfMinY,
179  double dfMaxX, double dfMaxY);
180 
181  virtual void SetSpatialFilter(int iGeomField, OGRGeometry *);
182  virtual void SetSpatialFilterRect(int iGeomField, double dfMinX,
183  double dfMinY, double dfMaxX,
184  double dfMaxY);
185 
186  virtual OGRErr SetAttributeFilter(const char *);
187 
188  virtual void ResetReading() = 0;
189  virtual OGRFeature *GetNextFeature() CPL_WARN_UNUSED_RESULT = 0;
190  virtual OGRErr SetNextByIndex(GIntBig nIndex);
191  virtual OGRFeature *GetFeature(GIntBig nFID) CPL_WARN_UNUSED_RESULT;
192 
193  virtual GDALDataset *GetDataset();
194  virtual bool GetArrowStream(struct ArrowArrayStream *out_stream,
195  CSLConstList papszOptions = nullptr);
196 
197  OGRErr SetFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
198  OGRErr CreateFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
199  OGRErr UpsertFeature(OGRFeature *poFeature) CPL_WARN_UNUSED_RESULT;
200  OGRErr UpdateFeature(OGRFeature *poFeature, int nUpdatedFieldsCount,
201  const int *panUpdatedFieldsIdx,
202  int nUpdatedGeomFieldsCount,
203  const int *panUpdatedGeomFieldsIdx,
204  bool bUpdateStyleString) CPL_WARN_UNUSED_RESULT;
205 
206  virtual OGRErr DeleteFeature(GIntBig nFID) CPL_WARN_UNUSED_RESULT;
207 
208  virtual const char *GetName();
209  virtual OGRwkbGeometryType GetGeomType();
210  virtual OGRFeatureDefn *GetLayerDefn() = 0;
211  virtual int FindFieldIndex(const char *pszFieldName, int bExactMatch);
212 
213  virtual OGRSpatialReference *GetSpatialRef();
214 
216  typedef std::vector<
217  std::unique_ptr<OGRSpatialReference, OGRSpatialReferenceReleaser>>
219  virtual const GetSupportedSRSListRetType &
220  GetSupportedSRSList(int iGeomField);
221  virtual OGRErr SetActiveSRS(int iGeomField,
222  const OGRSpatialReference *poSRS);
223 
224  virtual GIntBig GetFeatureCount(int bForce = TRUE);
225  virtual OGRErr GetExtent(OGREnvelope *psExtent,
226  int bForce = TRUE) CPL_WARN_UNUSED_RESULT;
227  virtual OGRErr GetExtent(int iGeomField, OGREnvelope *psExtent,
228  int bForce = TRUE) CPL_WARN_UNUSED_RESULT;
229 
230  virtual int TestCapability(const char *) = 0;
231 
232  virtual OGRErr Rename(const char *pszNewName) CPL_WARN_UNUSED_RESULT;
233 
234  virtual OGRErr CreateField(OGRFieldDefn *poField, int bApproxOK = TRUE);
235  virtual OGRErr DeleteField(int iField);
236  virtual OGRErr ReorderFields(int *panMap);
237  virtual OGRErr AlterFieldDefn(int iField, OGRFieldDefn *poNewFieldDefn,
238  int nFlagsIn);
239  virtual OGRErr
240  AlterGeomFieldDefn(int iGeomField,
241  const OGRGeomFieldDefn *poNewGeomFieldDefn,
242  int nFlagsIn);
243 
244  virtual OGRErr CreateGeomField(OGRGeomFieldDefn *poField,
245  int bApproxOK = TRUE);
246 
247  virtual OGRErr SyncToDisk();
248 
249  virtual OGRStyleTable *GetStyleTable();
250  virtual void SetStyleTableDirectly(OGRStyleTable *poStyleTable);
251 
252  virtual void SetStyleTable(OGRStyleTable *poStyleTable);
253 
254  virtual OGRErr StartTransaction() CPL_WARN_UNUSED_RESULT;
255  virtual OGRErr CommitTransaction() CPL_WARN_UNUSED_RESULT;
256  virtual OGRErr RollbackTransaction();
257 
258  virtual const char *GetFIDColumn();
259  virtual const char *GetGeometryColumn();
260 
261  virtual OGRErr SetIgnoredFields(const char **papszFields);
262 
263  virtual OGRGeometryTypeCounter *
264  GetGeometryTypes(int iGeomField, int nFlagsGGT, int &nEntryCountOut,
265  GDALProgressFunc pfnProgress, void *pProgressData);
266 
267  OGRErr Intersection(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
268  char **papszOptions = nullptr,
269  GDALProgressFunc pfnProgress = nullptr,
270  void *pProgressArg = nullptr);
271  OGRErr Union(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
272  char **papszOptions = nullptr,
273  GDALProgressFunc pfnProgress = nullptr,
274  void *pProgressArg = nullptr);
275  OGRErr SymDifference(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
276  char **papszOptions, GDALProgressFunc pfnProgress,
277  void *pProgressArg);
278  OGRErr Identity(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
279  char **papszOptions = nullptr,
280  GDALProgressFunc pfnProgress = nullptr,
281  void *pProgressArg = nullptr);
282  OGRErr Update(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
283  char **papszOptions = nullptr,
284  GDALProgressFunc pfnProgress = nullptr,
285  void *pProgressArg = nullptr);
286  OGRErr Clip(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
287  char **papszOptions = nullptr,
288  GDALProgressFunc pfnProgress = nullptr,
289  void *pProgressArg = nullptr);
290  OGRErr Erase(OGRLayer *pLayerMethod, OGRLayer *pLayerResult,
291  char **papszOptions = nullptr,
292  GDALProgressFunc pfnProgress = nullptr,
293  void *pProgressArg = nullptr);
294 
295  int Reference();
296  int Dereference();
297  int GetRefCount() const;
299  GIntBig GetFeaturesRead();
301 
302  /* non virtual : convenience wrapper for ReorderFields() */
303  OGRErr ReorderField(int iOldFieldPos, int iNewFieldPos);
304 
306  int AttributeFilterEvaluationNeedsGeometry();
307 
308  /* consider these private */
309  OGRErr InitializeIndexSupport(const char *);
310  OGRLayerAttrIndex *GetIndex()
311  {
312  return m_poAttrIndex;
313  }
314  int GetGeomFieldFilter() const
315  {
316  return m_iGeomFieldFilter;
317  }
318  const char *GetAttrQueryString() const
319  {
320  return m_pszAttrQueryString;
321  }
323 
327  static inline OGRLayerH ToHandle(OGRLayer *poLayer)
328  {
329  return reinterpret_cast<OGRLayerH>(poLayer);
330  }
331 
335  static inline OGRLayer *FromHandle(OGRLayerH hLayer)
336  {
337  return reinterpret_cast<OGRLayer *>(hLayer);
338  }
339 
340  protected:
342  OGRStyleTable *m_poStyleTable;
343  OGRFeatureQuery *m_poAttrQuery;
344  char *m_pszAttrQueryString;
345  OGRLayerAttrIndex *m_poAttrIndex;
346 
347  int m_nRefCount;
348 
349  GIntBig m_nFeaturesRead;
351 };
352 
364 inline OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
365 {
366  return poLayer->begin();
367 }
368 
372 inline OGRLayer::FeatureIterator end(OGRLayer *poLayer)
373 {
374  return poLayer->end();
375 }
376 
380 using OGRLayerUniquePtr = std::unique_ptr<OGRLayer>;
381 
382 /************************************************************************/
383 /* OGRGetNextFeatureThroughRaw */
384 /************************************************************************/
385 
391 template <class BaseLayer> class OGRGetNextFeatureThroughRaw
392 {
393  protected:
394  ~OGRGetNextFeatureThroughRaw() = default;
395 
396  public:
400  {
401  const auto poThis = static_cast<BaseLayer *>(this);
402  while (true)
403  {
404  OGRFeature *poFeature = poThis->GetNextRawFeature();
405  if (poFeature == nullptr)
406  return nullptr;
407 
408  if ((poThis->m_poFilterGeom == nullptr ||
409  poThis->FilterGeometry(poFeature->GetGeometryRef())) &&
410  (poThis->m_poAttrQuery == nullptr ||
411  poThis->m_poAttrQuery->Evaluate(poFeature)))
412  {
413  return poFeature;
414  }
415  else
416  delete poFeature;
417  }
418  }
419 };
420 
422 #define DEFINE_GET_NEXT_FEATURE_THROUGH_RAW(BaseLayer) \
423  private: \
424  friend class OGRGetNextFeatureThroughRaw<BaseLayer>; \
425  \
426  public: \
427  OGRFeature *GetNextFeature() override \
428  { \
429  return OGRGetNextFeatureThroughRaw<BaseLayer>::GetNextFeature(); \
430  }
431 
432 /************************************************************************/
433 /* OGRDataSource */
434 /************************************************************************/
435 
455 class CPL_DLL OGRDataSource : public GDALDataset
456 {
457  public:
458  OGRDataSource();
460  virtual const char *GetName()
461  OGR_DEPRECATED("Use GDALDataset class instead") = 0;
462 
463  static void DestroyDataSource(OGRDataSource *)
464  OGR_DEPRECATED("Use GDALDataset class instead");
466 };
467 
468 /************************************************************************/
469 /* OGRSFDriver */
470 /************************************************************************/
471 
490 class CPL_DLL OGRSFDriver : public GDALDriver
491 {
492  public:
494  virtual ~OGRSFDriver();
495 
496  virtual const char *GetName()
497  OGR_DEPRECATED("Use GDALDriver class instead") = 0;
498 
499  virtual OGRDataSource *Open(const char *pszName, int bUpdate = FALSE)
500  OGR_DEPRECATED("Use GDALDriver class instead") = 0;
501 
502  virtual int TestCapability(const char *pszCap)
503  OGR_DEPRECATED("Use GDALDriver class instead") = 0;
504 
505  virtual OGRDataSource *CreateDataSource(const char *pszName,
506  char ** = nullptr)
507  OGR_DEPRECATED("Use GDALDriver class instead");
508  virtual OGRErr DeleteDataSource(const char *pszName)
509  OGR_DEPRECATED("Use GDALDriver class instead");
511 };
512 
513 /************************************************************************/
514 /* OGRSFDriverRegistrar */
515 /************************************************************************/
516 
530 class CPL_DLL OGRSFDriverRegistrar
531 {
532 
535 
536  static GDALDataset *OpenWithDriverArg(GDALDriver *poDriver,
537  GDALOpenInfo *poOpenInfo);
538  static GDALDataset *CreateVectorOnly(GDALDriver *poDriver,
539  const char *pszName,
540  char **papszOptions);
541  static CPLErr DeleteDataSource(GDALDriver *poDriver, const char *pszName);
542 
543  public:
545  static OGRSFDriverRegistrar *GetRegistrar()
546  OGR_DEPRECATED("Use GDALDriverManager class instead");
547 
548  // cppcheck-suppress functionStatic
549  void RegisterDriver(OGRSFDriver *poDriver)
550  OGR_DEPRECATED("Use GDALDriverManager class instead");
551 
552  // cppcheck-suppress functionStatic
553  int GetDriverCount(void)
554  OGR_DEPRECATED("Use GDALDriverManager class instead");
555  // cppcheck-suppress functionStatic
556  GDALDriver *GetDriver(int iDriver)
557  OGR_DEPRECATED("Use GDALDriverManager class instead");
558  // cppcheck-suppress functionStatic
559  GDALDriver *GetDriverByName(const char *)
560  OGR_DEPRECATED("Use GDALDriverManager class instead");
561 
562  // cppcheck-suppress functionStatic
563  int GetOpenDSCount() OGR_DEPRECATED("Use GDALDriverManager class instead");
564  // cppcheck-suppress functionStatic
565  OGRDataSource *GetOpenDS(int)
566  OGR_DEPRECATED("Use GDALDriverManager class instead");
568 };
569 
570 /* -------------------------------------------------------------------- */
571 /* Various available registration methods. */
572 /* -------------------------------------------------------------------- */
574 
576 void OGRRegisterAllInternal();
577 
578 void CPL_DLL RegisterOGRFileGDB();
579 void CPL_DLL RegisterOGRShape();
580 void CPL_DLL RegisterOGRNTF();
581 void CPL_DLL RegisterOGRSDTS();
582 void CPL_DLL RegisterOGRTiger();
583 void CPL_DLL RegisterOGRS57();
584 void CPL_DLL RegisterOGRTAB();
585 void CPL_DLL RegisterOGRMIF();
586 void CPL_DLL RegisterOGROGDI();
587 void CPL_DLL RegisterOGRODBC();
588 void CPL_DLL RegisterOGRWAsP();
589 void CPL_DLL RegisterOGRPG();
590 void CPL_DLL RegisterOGRMSSQLSpatial();
591 void CPL_DLL RegisterOGRMySQL();
592 void CPL_DLL RegisterOGROCI();
593 void CPL_DLL RegisterOGRDGN();
594 void CPL_DLL RegisterOGRGML();
595 void CPL_DLL RegisterOGRLIBKML();
596 void CPL_DLL RegisterOGRKML();
597 void CPL_DLL RegisterOGRFlatGeobuf();
598 void CPL_DLL RegisterOGRGeoJSON();
599 void CPL_DLL RegisterOGRGeoJSONSeq();
600 void CPL_DLL RegisterOGRESRIJSON();
601 void CPL_DLL RegisterOGRTopoJSON();
602 void CPL_DLL RegisterOGRAVCBin();
603 void CPL_DLL RegisterOGRAVCE00();
604 void CPL_DLL RegisterOGRMEM();
605 void CPL_DLL RegisterOGRVRT();
606 void CPL_DLL RegisterOGRSQLite();
607 void CPL_DLL RegisterOGRCSV();
608 void CPL_DLL RegisterOGRILI1();
609 void CPL_DLL RegisterOGRILI2();
610 void CPL_DLL RegisterOGRPGeo();
611 void CPL_DLL RegisterOGRDXF();
612 void CPL_DLL RegisterOGRCAD();
613 void CPL_DLL RegisterOGRDWG();
614 void CPL_DLL RegisterOGRDGNV8();
615 void CPL_DLL RegisterOGRIDB();
616 void CPL_DLL RegisterOGRGMT();
617 void CPL_DLL RegisterOGRGPX();
618 void CPL_DLL RegisterOGRGeoconcept();
619 void CPL_DLL RegisterOGRNAS();
620 void CPL_DLL RegisterOGRGeoRSS();
621 void CPL_DLL RegisterOGRVFK();
622 void CPL_DLL RegisterOGRPGDump();
623 void CPL_DLL RegisterOGROSM();
624 void CPL_DLL RegisterOGRGPSBabel();
625 void CPL_DLL RegisterOGRPDS();
626 void CPL_DLL RegisterOGRWFS();
627 void CPL_DLL RegisterOGROAPIF();
628 void CPL_DLL RegisterOGRSOSI();
629 void CPL_DLL RegisterOGREDIGEO();
630 void CPL_DLL RegisterOGRSVG();
631 void CPL_DLL RegisterOGRIdrisi();
632 void CPL_DLL RegisterOGRXLS();
633 void CPL_DLL RegisterOGRODS();
634 void CPL_DLL RegisterOGRXLSX();
635 void CPL_DLL RegisterOGRElastic();
636 void CPL_DLL RegisterOGRGeoPackage();
637 void CPL_DLL RegisterOGRCarto();
638 void CPL_DLL RegisterOGRAmigoCloud();
639 void CPL_DLL RegisterOGRSXF();
640 void CPL_DLL RegisterOGROpenFileGDB();
641 void CPL_DLL RegisterOGRSelafin();
642 void CPL_DLL RegisterOGRJML();
643 void CPL_DLL RegisterOGRPLSCENES();
644 void CPL_DLL RegisterOGRCSW();
645 void CPL_DLL RegisterOGRMongoDBv3();
646 void CPL_DLL RegisterOGRVDV();
647 void CPL_DLL RegisterOGRGMLAS();
648 void CPL_DLL RegisterOGRMVT();
649 void CPL_DLL RegisterOGRNGW();
650 void CPL_DLL RegisterOGRMapML();
651 void CPL_DLL RegisterOGRLVBAG();
652 void CPL_DLL RegisterOGRHANA();
653 void CPL_DLL RegisterOGRParquet();
654 void CPL_DLL RegisterOGRArrow();
655 void CPL_DLL RegisterOGRGTFS();
656 // @endcond
657 
658 CPL_C_END
659 
660 #endif /* ndef OGRSF_FRMTS_H_INCLUDED */
GDALOpenInfo
Class for dataset open functions.
Definition: gdal_priv.h:276
begin
OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
Return begin of feature iterator.
Definition: ogrsf_frmts.h:364
OGRStyleTable
This class represents a style table.
Definition: ogr_featurestyle.h:84
CPLStringList
String list class designed around our use of C "char**" string lists.
Definition: cpl_string.h:437
OGRLayer::begin
friend FeatureIterator begin(OGRLayer *poLayer)
Return begin of feature iterator.
Definition: ogrsf_frmts.h:364
GDALDriver
Format specific driver.
Definition: gdal_priv.h:1693
OGRSpatialReference
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:166
OGRGeometry
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:334
OGRLayer
This class represents a layer of simple features, with access methods.
Definition: ogrsf_frmts.h:72
OGRFeatureUniquePtr
std::unique_ptr< OGRFeature, OGRFeatureUniquePtrDeleter > OGRFeatureUniquePtr
Unique pointer type for OGRFeature.
Definition: ogr_feature.h:1287
OGRGetNextFeatureThroughRaw
Template class offering a GetNextFeature() implementation relying on GetNextRawFeature()
Definition: ogrsf_frmts.h:391
OGRSFDriverRegistrar
LEGACY class.
Definition: ogrsf_frmts.h:530
OGRGeometryTypeCounter
Result item of OGR_L_GetGeometryTypes.
Definition: ogr_api.h:631
GDALDataset
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:347
CPL_C_START
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:315
OGRLayer::end
friend FeatureIterator end(OGRLayer *poLayer)
Return end of feature iterator.
Definition: ogrsf_frmts.h:372
CSLConstList
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1195
OGRLayer::ToHandle
static OGRLayerH ToHandle(OGRLayer *poLayer)
Convert a OGRLayer* to a OGRLayerH.
Definition: ogrsf_frmts.h:327
CPL_C_END
#define CPL_C_END
Macro to end a block of C symbols.
Definition: cpl_port.h:319
OGRGetNextFeatureThroughRaw::GetNextFeature
OGRFeature * GetNextFeature()
Implement OGRLayer::GetNextFeature(), relying on BaseLayer::GetNextRawFeature()
Definition: ogrsf_frmts.h:399
OGRFieldDefn
Definition of an attribute of an OGRFeatureDefn.
Definition: ogr_feature.h:103
ogr_featurestyle.h
ogr_feature.h
OGRDataSource
LEGACY class.
Definition: ogrsf_frmts.h:455
OGRGeomFieldDefn
Definition of a geometry field of an OGRFeatureDefn.
Definition: ogr_feature.h:275
OGRLayer::FromHandle
static OGRLayer * FromHandle(OGRLayerH hLayer)
Convert a OGRLayerH to a OGRLayer*.
Definition: ogrsf_frmts.h:335
end
OGRLayer::FeatureIterator end(OGRLayer *poLayer)
Return end of feature iterator.
Definition: ogrsf_frmts.h:372
OGRSFDriver
LEGACY class.
Definition: ogrsf_frmts.h:490
gdal_priv.h
OGRErr
int OGRErr
Type for a OGR error.
Definition: ogr_core.h:378
GIntBig
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition: cpl_port.h:235
OGRwkbGeometryType
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:406
CPL_WARN_UNUSED_RESULT
#define CPL_WARN_UNUSED_RESULT
Qualifier to warn when the return value of a function is not used.
Definition: cpl_port.h:985
OGRLayerUniquePtr
std::unique_ptr< OGRLayer > OGRLayerUniquePtr
Unique pointer type for OGRLayer.
Definition: ogrsf_frmts.h:380
OGRFeature
A simple feature, including geometry and attributes.
Definition: ogr_feature.h:669
OGRLayer::GetSupportedSRSListRetType
std::vector< std::unique_ptr< OGRSpatialReference, OGRSpatialReferenceReleaser > > GetSupportedSRSListRetType
Return type of OGRLayer::GetSupportedSRSList()
Definition: ogrsf_frmts.h:218
OGRFeature::GetGeometryRef
OGRGeometry * GetGeometryRef()
Fetch pointer to feature geometry.
Definition: ogrfeature.cpp:712
GDALMajorObject
Object with metadata.
Definition: gdal_priv.h:137
CPLErr
CPLErr
Error category.
Definition: cpl_error.h:52
OGREnvelope
Simple container for a bounding region (rectangle)
Definition: ogr_core.h:57
OGRFeatureDefn
Definition of a feature class or feature layer.
Definition: ogr_feature.h:374
OGRLayerH
void * OGRLayerH
Opaque type for a layer (OGRLayer)
Definition: ogr_api.h:618
CPL_DISALLOW_COPY_ASSIGN
#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:1051