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  public:
85  FeatureIterator(OGRLayer* poLayer, bool bStart);
86  FeatureIterator(FeatureIterator&& oOther) noexcept; // declared but not defined. Needed for gcc 5.4 at least
87  ~FeatureIterator();
88  OGRFeatureUniquePtr& operator*();
89  FeatureIterator& operator++();
90  bool operator!=(const FeatureIterator& it) const;
91  };
92 
93  friend inline FeatureIterator begin(OGRLayer* poLayer);
94  friend inline FeatureIterator end(OGRLayer* poLayer);
95 
97 
98  protected:
100  int m_bFilterIsEnvelope;
101  OGRGeometry *m_poFilterGeom;
102  OGRPreparedGeometry *m_pPreparedFilterGeom; /* m_poFilterGeom compiled as a prepared geometry */
103  OGREnvelope m_sFilterEnvelope;
104  int m_iGeomFieldFilter; // specify the index on which the spatial
105  // filter is active.
106 
107  int FilterGeometry( OGRGeometry * );
108  //int FilterGeometry( OGRGeometry *, OGREnvelope* psGeometryEnvelope);
109  int InstallFilter( OGRGeometry * );
110 
111  OGRErr GetExtentInternal(int iGeomField, OGREnvelope *psExtent, int bForce );
113 
114  virtual OGRErr ISetFeature( OGRFeature *poFeature ) CPL_WARN_UNUSED_RESULT;
115  virtual OGRErr ICreateFeature( OGRFeature *poFeature ) CPL_WARN_UNUSED_RESULT;
116  virtual OGRErr IUpsertFeature( OGRFeature *poFeature ) CPL_WARN_UNUSED_RESULT;
117 
119  CPLStringList m_aosArrowArrayStreamOptions{};
120  struct ArrowArrayStreamPrivateData
121  {
122  bool m_bArrowArrayStreamInProgress = false;
123  OGRLayer *m_poLayer = nullptr;
124  };
125  std::shared_ptr<ArrowArrayStreamPrivateData> m_poSharedArrowArrayStreamPrivateData{};
126  struct ArrowArrayStreamPrivateDataSharedDataWrapper
127  {
128  std::shared_ptr<ArrowArrayStreamPrivateData> poShared{};
129  };
131 
132  friend class OGRArrowArrayHelper;
133  static void ReleaseArray(struct ArrowArray* array);
134  static void ReleaseSchema(struct ArrowSchema* schema);
135  static void ReleaseStream(struct ArrowArrayStream* stream);
136  virtual int GetArrowSchema(struct ArrowArrayStream*, struct ArrowSchema* out_schema);
137  virtual int GetNextArrowArray(struct ArrowArrayStream*, struct ArrowArray* out_array);
138  static int StaticGetArrowSchema(struct ArrowArrayStream*, struct ArrowSchema* out_schema);
139  static int StaticGetNextArrowArray(struct ArrowArrayStream*, struct ArrowArray* out_array);
140  static const char* GetLastErrorArrowArrayStream(struct ArrowArrayStream*);
141 
142  public:
143  OGRLayer();
144  virtual ~OGRLayer();
145 
156  FeatureIterator begin();
157 
159  FeatureIterator end();
160 
161  virtual OGRGeometry *GetSpatialFilter();
162  virtual void SetSpatialFilter( OGRGeometry * );
163  virtual void SetSpatialFilterRect( double dfMinX, double dfMinY,
164  double dfMaxX, double dfMaxY );
165 
166  virtual void SetSpatialFilter( int iGeomField, OGRGeometry * );
167  virtual void SetSpatialFilterRect( int iGeomField,
168  double dfMinX, double dfMinY,
169  double dfMaxX, double dfMaxY );
170 
171  virtual OGRErr SetAttributeFilter( const char * );
172 
173  virtual void ResetReading() = 0;
174  virtual OGRFeature *GetNextFeature() CPL_WARN_UNUSED_RESULT = 0;
175  virtual OGRErr SetNextByIndex( GIntBig nIndex );
176  virtual OGRFeature *GetFeature( GIntBig nFID ) CPL_WARN_UNUSED_RESULT;
177 
178  virtual GDALDataset* GetDataset();
179  virtual bool GetArrowStream(struct ArrowArrayStream* out_stream,
180  CSLConstList papszOptions = nullptr);
181 
182  OGRErr SetFeature( OGRFeature *poFeature ) CPL_WARN_UNUSED_RESULT;
183  OGRErr CreateFeature( OGRFeature *poFeature ) CPL_WARN_UNUSED_RESULT;
184  OGRErr UpsertFeature( OGRFeature *poFeature ) CPL_WARN_UNUSED_RESULT;
185 
186  virtual OGRErr DeleteFeature( GIntBig nFID ) CPL_WARN_UNUSED_RESULT;
187 
188  virtual const char *GetName();
189  virtual OGRwkbGeometryType GetGeomType();
190  virtual OGRFeatureDefn *GetLayerDefn() = 0;
191  virtual int FindFieldIndex( const char *pszFieldName, int bExactMatch );
192 
193  virtual OGRSpatialReference *GetSpatialRef();
194 
195  virtual GIntBig GetFeatureCount( int bForce = TRUE );
196  virtual OGRErr GetExtent(OGREnvelope *psExtent, int bForce = TRUE) CPL_WARN_UNUSED_RESULT;
197  virtual OGRErr GetExtent(int iGeomField, OGREnvelope *psExtent,
198  int bForce = TRUE) CPL_WARN_UNUSED_RESULT;
199 
200  virtual int TestCapability( const char * ) = 0;
201 
202  virtual OGRErr Rename( const char* pszNewName ) CPL_WARN_UNUSED_RESULT;
203 
204  virtual OGRErr CreateField( OGRFieldDefn *poField,
205  int bApproxOK = TRUE );
206  virtual OGRErr DeleteField( int iField );
207  virtual OGRErr ReorderFields( int* panMap );
208  virtual OGRErr AlterFieldDefn( int iField, OGRFieldDefn* poNewFieldDefn, int nFlagsIn );
209  virtual OGRErr AlterGeomFieldDefn( int iGeomField, const OGRGeomFieldDefn* poNewGeomFieldDefn, int nFlagsIn );
210 
211  virtual OGRErr CreateGeomField( OGRGeomFieldDefn *poField,
212  int bApproxOK = TRUE );
213 
214  virtual OGRErr SyncToDisk();
215 
216  virtual OGRStyleTable *GetStyleTable();
217  virtual void SetStyleTableDirectly( OGRStyleTable *poStyleTable );
218 
219  virtual void SetStyleTable(OGRStyleTable *poStyleTable);
220 
221  virtual OGRErr StartTransaction() CPL_WARN_UNUSED_RESULT;
222  virtual OGRErr CommitTransaction() CPL_WARN_UNUSED_RESULT;
223  virtual OGRErr RollbackTransaction();
224 
225  virtual const char *GetFIDColumn();
226  virtual const char *GetGeometryColumn();
227 
228  virtual OGRErr SetIgnoredFields( const char **papszFields );
229 
230  virtual OGRGeometryTypeCounter* GetGeometryTypes(int iGeomField, int nFlagsGGT, int& nEntryCountOut,
231  GDALProgressFunc pfnProgress, void* pProgressData);
232 
233  OGRErr Intersection( OGRLayer *pLayerMethod,
234  OGRLayer *pLayerResult,
235  char** papszOptions = nullptr,
236  GDALProgressFunc pfnProgress = nullptr,
237  void * pProgressArg = nullptr );
238  OGRErr Union( OGRLayer *pLayerMethod,
239  OGRLayer *pLayerResult,
240  char** papszOptions = nullptr,
241  GDALProgressFunc pfnProgress = nullptr,
242  void * pProgressArg = nullptr );
243  OGRErr SymDifference( OGRLayer *pLayerMethod,
244  OGRLayer *pLayerResult,
245  char** papszOptions,
246  GDALProgressFunc pfnProgress,
247  void * pProgressArg );
248  OGRErr Identity( OGRLayer *pLayerMethod,
249  OGRLayer *pLayerResult,
250  char** papszOptions = nullptr,
251  GDALProgressFunc pfnProgress = nullptr,
252  void * pProgressArg = nullptr );
253  OGRErr Update( OGRLayer *pLayerMethod,
254  OGRLayer *pLayerResult,
255  char** papszOptions = nullptr,
256  GDALProgressFunc pfnProgress = nullptr,
257  void * pProgressArg = nullptr );
258  OGRErr Clip( OGRLayer *pLayerMethod,
259  OGRLayer *pLayerResult,
260  char** papszOptions = nullptr,
261  GDALProgressFunc pfnProgress = nullptr,
262  void * pProgressArg = nullptr );
263  OGRErr Erase( OGRLayer *pLayerMethod,
264  OGRLayer *pLayerResult,
265  char** papszOptions = nullptr,
266  GDALProgressFunc pfnProgress = nullptr,
267  void * pProgressArg = nullptr );
268 
269  int Reference();
270  int Dereference();
271  int GetRefCount() const;
273  GIntBig GetFeaturesRead();
275 
276  /* non virtual : convenience wrapper for ReorderFields() */
277  OGRErr ReorderField( int iOldFieldPos, int iNewFieldPos );
278 
280  int AttributeFilterEvaluationNeedsGeometry();
281 
282  /* consider these private */
283  OGRErr InitializeIndexSupport( const char * );
284  OGRLayerAttrIndex *GetIndex() { return m_poAttrIndex; }
285  int GetGeomFieldFilter() const { return m_iGeomFieldFilter; }
286  const char *GetAttrQueryString() const { return m_pszAttrQueryString; }
288 
292  static inline OGRLayerH ToHandle(OGRLayer* poLayer)
293  { return reinterpret_cast<OGRLayerH>(poLayer); }
294 
298  static inline OGRLayer* FromHandle(OGRLayerH hLayer)
299  { return reinterpret_cast<OGRLayer*>(hLayer); }
300 
301  protected:
303  OGRStyleTable *m_poStyleTable;
304  OGRFeatureQuery *m_poAttrQuery;
305  char *m_pszAttrQueryString;
306  OGRLayerAttrIndex *m_poAttrIndex;
307 
308  int m_nRefCount;
309 
310  GIntBig m_nFeaturesRead;
312 };
313 
325 inline OGRLayer::FeatureIterator begin(OGRLayer* poLayer) { return poLayer->begin(); }
326 
330 inline OGRLayer::FeatureIterator end(OGRLayer* poLayer) { return poLayer->end(); }
331 
335 using OGRLayerUniquePtr = std::unique_ptr<OGRLayer>;
336 
337 /************************************************************************/
338 /* OGRGetNextFeatureThroughRaw */
339 /************************************************************************/
340 
346 template<class BaseLayer> class OGRGetNextFeatureThroughRaw
347 {
348 protected:
349  ~OGRGetNextFeatureThroughRaw() = default;
350 
351 public:
352 
355  {
356  const auto poThis = static_cast<BaseLayer*>(this);
357  while( true )
358  {
359  OGRFeature *poFeature = poThis->GetNextRawFeature();
360  if (poFeature == nullptr)
361  return nullptr;
362 
363  if((poThis->m_poFilterGeom == nullptr
364  || poThis->FilterGeometry( poFeature->GetGeometryRef() ) )
365  && (poThis->m_poAttrQuery == nullptr
366  || poThis->m_poAttrQuery->Evaluate( poFeature )) )
367  {
368  return poFeature;
369  }
370  else
371  delete poFeature;
372  }
373  }
374 };
375 
377 #define DEFINE_GET_NEXT_FEATURE_THROUGH_RAW(BaseLayer) \
378  private: \
379  friend class OGRGetNextFeatureThroughRaw<BaseLayer>; \
380  public: \
381  OGRFeature* GetNextFeature() override { return OGRGetNextFeatureThroughRaw<BaseLayer>::GetNextFeature(); }
382 
383 
384 /************************************************************************/
385 /* OGRDataSource */
386 /************************************************************************/
387 
407 class CPL_DLL OGRDataSource : public GDALDataset
408 {
409 public:
410  OGRDataSource();
412  virtual const char *GetName() OGR_DEPRECATED("Use GDALDataset class instead") = 0;
413 
414  static void DestroyDataSource( OGRDataSource * ) OGR_DEPRECATED("Use GDALDataset class instead");
416 };
417 
418 /************************************************************************/
419 /* OGRSFDriver */
420 /************************************************************************/
421 
440 class CPL_DLL OGRSFDriver : public GDALDriver
441 {
442  public:
444  virtual ~OGRSFDriver();
445 
446  virtual const char *GetName() OGR_DEPRECATED("Use GDALDriver class instead") = 0;
447 
448  virtual OGRDataSource *Open( const char *pszName, int bUpdate=FALSE ) OGR_DEPRECATED("Use GDALDriver class instead") = 0;
449 
450  virtual int TestCapability( const char *pszCap ) OGR_DEPRECATED("Use GDALDriver class instead") = 0;
451 
452  virtual OGRDataSource *CreateDataSource( const char *pszName,
453  char ** = nullptr ) OGR_DEPRECATED("Use GDALDriver class instead");
454  virtual OGRErr DeleteDataSource( const char *pszName ) OGR_DEPRECATED("Use GDALDriver class instead");
456 };
457 
458 /************************************************************************/
459 /* OGRSFDriverRegistrar */
460 /************************************************************************/
461 
475 class CPL_DLL OGRSFDriverRegistrar
476 {
477 
480 
481  static GDALDataset* OpenWithDriverArg(GDALDriver* poDriver,
482  GDALOpenInfo* poOpenInfo);
483  static GDALDataset* CreateVectorOnly( GDALDriver* poDriver,
484  const char * pszName,
485  char ** papszOptions );
486  static CPLErr DeleteDataSource( GDALDriver* poDriver,
487  const char * pszName );
488 
489  public:
491  static OGRSFDriverRegistrar *GetRegistrar() OGR_DEPRECATED("Use GDALDriverManager class instead");
492 
493  // cppcheck-suppress functionStatic
494  void RegisterDriver( OGRSFDriver * poDriver ) OGR_DEPRECATED("Use GDALDriverManager class instead");
495 
496  // cppcheck-suppress functionStatic
497  int GetDriverCount( void ) OGR_DEPRECATED("Use GDALDriverManager class instead");
498  // cppcheck-suppress functionStatic
499  GDALDriver *GetDriver( int iDriver ) OGR_DEPRECATED("Use GDALDriverManager class instead");
500  // cppcheck-suppress functionStatic
501  GDALDriver *GetDriverByName( const char * ) OGR_DEPRECATED("Use GDALDriverManager class instead");
502 
503  // cppcheck-suppress functionStatic
504  int GetOpenDSCount() OGR_DEPRECATED("Use GDALDriverManager class instead");
505  // cppcheck-suppress functionStatic
506  OGRDataSource *GetOpenDS( int ) OGR_DEPRECATED("Use GDALDriverManager class instead");
508 };
509 
510 /* -------------------------------------------------------------------- */
511 /* Various available registration methods. */
512 /* -------------------------------------------------------------------- */
514 
516 void OGRRegisterAllInternal();
517 
518 void CPL_DLL RegisterOGRFileGDB();
519 void CPL_DLL RegisterOGRShape();
520 void CPL_DLL RegisterOGRNTF();
521 void CPL_DLL RegisterOGRSDTS();
522 void CPL_DLL RegisterOGRTiger();
523 void CPL_DLL RegisterOGRS57();
524 void CPL_DLL RegisterOGRTAB();
525 void CPL_DLL RegisterOGRMIF();
526 void CPL_DLL RegisterOGROGDI();
527 void CPL_DLL RegisterOGRODBC();
528 void CPL_DLL RegisterOGRWAsP();
529 void CPL_DLL RegisterOGRPG();
530 void CPL_DLL RegisterOGRMSSQLSpatial();
531 void CPL_DLL RegisterOGRMySQL();
532 void CPL_DLL RegisterOGROCI();
533 void CPL_DLL RegisterOGRDGN();
534 void CPL_DLL RegisterOGRGML();
535 void CPL_DLL RegisterOGRLIBKML();
536 void CPL_DLL RegisterOGRKML();
537 void CPL_DLL RegisterOGRFlatGeobuf();
538 void CPL_DLL RegisterOGRGeoJSON();
539 void CPL_DLL RegisterOGRGeoJSONSeq();
540 void CPL_DLL RegisterOGRESRIJSON();
541 void CPL_DLL RegisterOGRTopoJSON();
542 void CPL_DLL RegisterOGRAVCBin();
543 void CPL_DLL RegisterOGRAVCE00();
544 void CPL_DLL RegisterOGRMEM();
545 void CPL_DLL RegisterOGRVRT();
546 void CPL_DLL RegisterOGRSQLite();
547 void CPL_DLL RegisterOGRCSV();
548 void CPL_DLL RegisterOGRILI1();
549 void CPL_DLL RegisterOGRILI2();
550 void CPL_DLL RegisterOGRPGeo();
551 void CPL_DLL RegisterOGRDXF();
552 void CPL_DLL RegisterOGRCAD();
553 void CPL_DLL RegisterOGRDWG();
554 void CPL_DLL RegisterOGRDGNV8();
555 void CPL_DLL RegisterOGRIDB();
556 void CPL_DLL RegisterOGRGMT();
557 void CPL_DLL RegisterOGRGPX();
558 void CPL_DLL RegisterOGRGeoconcept();
559 void CPL_DLL RegisterOGRNAS();
560 void CPL_DLL RegisterOGRGeoRSS();
561 void CPL_DLL RegisterOGRVFK();
562 void CPL_DLL RegisterOGRPGDump();
563 void CPL_DLL RegisterOGROSM();
564 void CPL_DLL RegisterOGRGPSBabel();
565 void CPL_DLL RegisterOGRPDS();
566 void CPL_DLL RegisterOGRWFS();
567 void CPL_DLL RegisterOGROAPIF();
568 void CPL_DLL RegisterOGRSOSI();
569 void CPL_DLL RegisterOGREDIGEO();
570 void CPL_DLL RegisterOGRSVG();
571 void CPL_DLL RegisterOGRIdrisi();
572 void CPL_DLL RegisterOGRXLS();
573 void CPL_DLL RegisterOGRODS();
574 void CPL_DLL RegisterOGRXLSX();
575 void CPL_DLL RegisterOGRElastic();
576 void CPL_DLL RegisterOGRGeoPackage();
577 void CPL_DLL RegisterOGRCarto();
578 void CPL_DLL RegisterOGRAmigoCloud();
579 void CPL_DLL RegisterOGRSXF();
580 void CPL_DLL RegisterOGROpenFileGDB();
581 void CPL_DLL RegisterOGRSelafin();
582 void CPL_DLL RegisterOGRJML();
583 void CPL_DLL RegisterOGRPLSCENES();
584 void CPL_DLL RegisterOGRCSW();
585 void CPL_DLL RegisterOGRMongoDBv3();
586 void CPL_DLL RegisterOGRVDV();
587 void CPL_DLL RegisterOGRGMLAS();
588 void CPL_DLL RegisterOGRMVT();
589 void CPL_DLL RegisterOGRNGW();
590 void CPL_DLL RegisterOGRMapML();
591 void CPL_DLL RegisterOGRLVBAG();
592 void CPL_DLL RegisterOGRHANA();
593 void CPL_DLL RegisterOGRParquet();
594 void CPL_DLL RegisterOGRArrow();
595 // @endcond
596 
597 CPL_C_END
598 
599 #endif /* ndef OGRSF_FRMTS_H_INCLUDED */
GDALOpenInfo
Class for dataset open functions.
Definition: gdal_priv.h:271
begin
OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
Return begin of feature iterator.
Definition: ogrsf_frmts.h:325
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:429
OGRLayer::begin
friend FeatureIterator begin(OGRLayer *poLayer)
Return begin of feature iterator.
Definition: ogrsf_frmts.h:325
GDALDriver
Format specific driver.
Definition: gdal_priv.h:1558
OGRSpatialReference
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:157
OGRGeometry
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:326
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:842
OGRGetNextFeatureThroughRaw
Template class offering a GetNextFeature() implementation relying on GetNextRawFeature()
Definition: ogrsf_frmts.h:346
OGRSFDriverRegistrar
LEGACY class.
Definition: ogrsf_frmts.h:475
OGRGeometryTypeCounter
Result item of OGR_L_GetGeometryTypes.
Definition: ogr_api.h:605
GDALDataset
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:342
CPL_C_START
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:304
OGRLayer::end
friend FeatureIterator end(OGRLayer *poLayer)
Return end of feature iterator.
Definition: ogrsf_frmts.h:330
CSLConstList
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1056
OGRLayer::ToHandle
static OGRLayerH ToHandle(OGRLayer *poLayer)
Convert a OGRLayer* to a OGRLayerH.
Definition: ogrsf_frmts.h:292
CPL_C_END
#define CPL_C_END
Macro to end a block of C symbols.
Definition: cpl_port.h:306
OGRGetNextFeatureThroughRaw::GetNextFeature
OGRFeature * GetNextFeature()
Implement OGRLayer::GetNextFeature(), relying on BaseLayer::GetNextRawFeature()
Definition: ogrsf_frmts.h:354
OGRFieldDefn
Definition of an attribute of an OGRFeatureDefn.
Definition: ogr_feature.h:100
ogr_featurestyle.h
ogr_feature.h
OGRDataSource
LEGACY class.
Definition: ogrsf_frmts.h:407
OGRGeomFieldDefn
Definition of a geometry field of an OGRFeatureDefn.
Definition: ogr_feature.h:203
OGRLayer::FromHandle
static OGRLayer * FromHandle(OGRLayerH hLayer)
Convert a OGRLayerH to a OGRLayer*.
Definition: ogrsf_frmts.h:298
end
OGRLayer::FeatureIterator end(OGRLayer *poLayer)
Return end of feature iterator.
Definition: ogrsf_frmts.h:330
OGRSFDriver
LEGACY class.
Definition: ogrsf_frmts.h:440
gdal_priv.h
OGRErr
int OGRErr
Type for a OGR error.
Definition: ogr_core.h:341
GIntBig
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition: cpl_port.h:230
OGRwkbGeometryType
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:368
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:869
OGRLayerUniquePtr
std::unique_ptr< OGRLayer > OGRLayerUniquePtr
Unique pointer type for OGRLayer.
Definition: ogrsf_frmts.h:335
OGRFeature
A simple feature, including geometry and attributes.
Definition: ogr_feature.h:381
OGRFeature::GetGeometryRef
OGRGeometry * GetGeometryRef()
Fetch pointer to feature geometry.
Definition: ogrfeature.cpp:718
GDALMajorObject
Object with metadata.
Definition: gdal_priv.h:136
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:280
OGRLayerH
void * OGRLayerH
Opaque type for a layer (OGRLayer)
Definition: ogr_api.h:592
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:930