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
99 CPL_DISALLOW_COPY_ASSIGN(OGRLayer)
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>>
218 GetSupportedSRSListRetType;
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:
399 OGRFeature *GetNextFeature()
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
533 OGRSFDriverRegistrar();
534 ~OGRSFDriverRegistrar();
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 /* -------------------------------------------------------------------- */
573 CPL_C_START
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