31 #ifndef OGRSF_FRMTS_H_INCLUDED
32 #define OGRSF_FRMTS_H_INCLUDED
34 #include "cpl_progress.h"
47 #if !defined(GDAL_COMPILATION) && !defined(SUPPRESS_DEPRECATION_WARNINGS)
49 #define OGR_DEPRECATED(x) CPL_WARN_DEPRECATED(x)
51 #define OGR_DEPRECATED(x)
55 class OGRLayerAttrIndex;
74 std::unique_ptr<Private> m_poPrivate;
76 void ConvertGeomsIfNecessary(
OGRFeature *poFeature );
78 class CPL_DLL FeatureIterator
81 std::unique_ptr<Private> m_poPrivate;
83 FeatureIterator(
OGRLayer* poLayer,
bool bStart);
84 FeatureIterator(FeatureIterator&& oOther) noexcept;
87 FeatureIterator& operator++();
88 bool operator!=(
const FeatureIterator& it)
const;
92 friend inline FeatureIterator
end(
OGRLayer* poLayer);
98 int m_bFilterIsEnvelope;
101 OGREnvelope m_sFilterEnvelope;
102 int m_iGeomFieldFilter;
109 OGRErr GetExtentInternal(
int iGeomField, OGREnvelope *psExtent,
int bForce );
129 FeatureIterator
begin();
132 FeatureIterator
end();
136 virtual void SetSpatialFilterRect(
double dfMinX,
double dfMinY,
137 double dfMaxX,
double dfMaxY );
139 virtual void SetSpatialFilter(
int iGeomField,
OGRGeometry * );
140 virtual void SetSpatialFilterRect(
int iGeomField,
141 double dfMinX,
double dfMinY,
142 double dfMaxX,
double dfMaxY );
144 virtual OGRErr SetAttributeFilter(
const char * );
146 virtual void ResetReading() = 0;
156 virtual const char *GetName();
159 virtual int FindFieldIndex(
const char *pszFieldName,
int bExactMatch );
163 virtual GIntBig GetFeatureCount(
int bForce = TRUE );
165 virtual OGRErr GetExtent(
int iGeomField, OGREnvelope *psExtent,
168 virtual int TestCapability(
const char * ) = 0;
171 int bApproxOK = TRUE );
172 virtual OGRErr DeleteField(
int iField );
173 virtual OGRErr ReorderFields(
int* panMap );
174 virtual OGRErr AlterFieldDefn(
int iField,
OGRFieldDefn* poNewFieldDefn,
int nFlagsIn );
177 int bApproxOK = TRUE );
179 virtual OGRErr SyncToDisk();
182 virtual void SetStyleTableDirectly(
OGRStyleTable *poStyleTable );
188 virtual OGRErr RollbackTransaction();
190 virtual const char *GetFIDColumn();
191 virtual const char *GetGeometryColumn();
193 virtual OGRErr SetIgnoredFields(
const char **papszFields );
197 char** papszOptions =
nullptr,
198 GDALProgressFunc pfnProgress =
nullptr,
199 void * pProgressArg =
nullptr );
202 char** papszOptions =
nullptr,
203 GDALProgressFunc pfnProgress =
nullptr,
204 void * pProgressArg =
nullptr );
208 GDALProgressFunc pfnProgress,
209 void * pProgressArg );
212 char** papszOptions =
nullptr,
213 GDALProgressFunc pfnProgress =
nullptr,
214 void * pProgressArg =
nullptr );
217 char** papszOptions =
nullptr,
218 GDALProgressFunc pfnProgress =
nullptr,
219 void * pProgressArg =
nullptr );
222 char** papszOptions =
nullptr,
223 GDALProgressFunc pfnProgress =
nullptr,
224 void * pProgressArg =
nullptr );
227 char** papszOptions =
nullptr,
228 GDALProgressFunc pfnProgress =
nullptr,
229 void * pProgressArg =
nullptr );
233 int GetRefCount()
const;
239 OGRErr ReorderField(
int iOldFieldPos,
int iNewFieldPos );
242 int AttributeFilterEvaluationNeedsGeometry();
245 OGRErr InitializeIndexSupport(
const char * );
246 OGRLayerAttrIndex *GetIndex() {
return m_poAttrIndex; }
247 int GetGeomFieldFilter()
const {
return m_iGeomFieldFilter; }
248 const char *GetAttrQueryString()
const {
return m_pszAttrQueryString; }
255 {
return reinterpret_cast<OGRLayerH>(poLayer); }
261 {
return reinterpret_cast<OGRLayer*
>(hLayer); }
266 OGRFeatureQuery *m_poAttrQuery;
267 char *m_pszAttrQueryString;
268 OGRLayerAttrIndex *m_poAttrIndex;
292 inline OGRLayer::FeatureIterator
end(
OGRLayer* poLayer) {
return poLayer->
end(); }
322 virtual const char *GetName() OGR_DEPRECATED(
"Use GDALDataset class instead") = 0;
324 static void DestroyDataSource(
OGRDataSource * ) OGR_DEPRECATED(
"Use GDALDataset class instead");
356 virtual const char *GetName() OGR_DEPRECATED(
"Use GDALDriver class instead") = 0;
358 virtual OGRDataSource *Open(
const char *pszName,
int bUpdate=FALSE ) OGR_DEPRECATED(
"Use GDALDriver class instead") = 0;
360 virtual int TestCapability(
const char *pszCap ) OGR_DEPRECATED(
"Use GDALDriver class instead") = 0;
362 virtual OGRDataSource *CreateDataSource(
const char *pszName,
363 char ** =
nullptr ) OGR_DEPRECATED(
"Use GDALDriver class instead");
364 virtual OGRErr DeleteDataSource(
const char *pszName ) OGR_DEPRECATED(
"Use GDALDriver class instead");
394 const char * pszName,
395 char ** papszOptions );
397 const char * pszName );
401 static OGRSFDriverRegistrar *GetRegistrar() OGR_DEPRECATED(
"Use GDALDriverManager class instead");
404 void RegisterDriver(
OGRSFDriver * poDriver ) OGR_DEPRECATED(
"Use GDALDriverManager class instead");
407 int GetDriverCount(
void ) OGR_DEPRECATED(
"Use GDALDriverManager class instead");
409 GDALDriver *GetDriver(
int iDriver ) OGR_DEPRECATED(
"Use GDALDriverManager class instead");
411 GDALDriver *GetDriverByName(
const char * ) OGR_DEPRECATED(
"Use GDALDriverManager class instead");
414 int GetOpenDSCount() OGR_DEPRECATED(
"Use GDALDriverManager class instead");
416 OGRDataSource *GetOpenDS(
int ) OGR_DEPRECATED(
"Use GDALDriverManager class instead");
426 void OGRRegisterAllInternal();
428 void CPL_DLL RegisterOGRFileGDB();
429 void CPL_DLL RegisterOGRShape();
430 void CPL_DLL RegisterOGRDB2();
431 void CPL_DLL RegisterOGRNTF();
432 void CPL_DLL RegisterOGRFME();
433 void CPL_DLL RegisterOGRSDTS();
434 void CPL_DLL RegisterOGRTiger();
435 void CPL_DLL RegisterOGRS57();
436 void CPL_DLL RegisterOGRTAB();
437 void CPL_DLL RegisterOGRMIF();
438 void CPL_DLL RegisterOGROGDI();
439 void CPL_DLL RegisterOGRODBC();
440 void CPL_DLL RegisterOGRWAsP();
441 void CPL_DLL RegisterOGRPG();
442 void CPL_DLL RegisterOGRMSSQLSpatial();
443 void CPL_DLL RegisterOGRMySQL();
444 void CPL_DLL RegisterOGROCI();
445 void CPL_DLL RegisterOGRDGN();
446 void CPL_DLL RegisterOGRGML();
447 void CPL_DLL RegisterOGRLIBKML();
448 void CPL_DLL RegisterOGRKML();
449 void CPL_DLL RegisterOGRGeoJSON();
450 void CPL_DLL RegisterOGRGeoJSONSeq();
451 void CPL_DLL RegisterOGRESRIJSON();
452 void CPL_DLL RegisterOGRTopoJSON();
453 void CPL_DLL RegisterOGRAVCBin();
454 void CPL_DLL RegisterOGRAVCE00();
455 void CPL_DLL RegisterOGRREC();
456 void CPL_DLL RegisterOGRMEM();
457 void CPL_DLL RegisterOGRVRT();
458 void CPL_DLL RegisterOGRDODS();
459 void CPL_DLL RegisterOGRSQLite();
460 void CPL_DLL RegisterOGRCSV();
461 void CPL_DLL RegisterOGRILI1();
462 void CPL_DLL RegisterOGRILI2();
463 void CPL_DLL RegisterOGRGRASS();
464 void CPL_DLL RegisterOGRPGeo();
465 void CPL_DLL RegisterOGRDXF();
466 void CPL_DLL RegisterOGRCAD();
467 void CPL_DLL RegisterOGRDWG();
468 void CPL_DLL RegisterOGRDGNV8();
469 void CPL_DLL RegisterOGRSDE();
470 void CPL_DLL RegisterOGRIDB();
471 void CPL_DLL RegisterOGRGMT();
472 void CPL_DLL RegisterOGRBNA();
473 void CPL_DLL RegisterOGRGPX();
474 void CPL_DLL RegisterOGRGeoconcept();
475 void CPL_DLL RegisterOGRIngres();
476 void CPL_DLL RegisterOGRXPlane();
477 void CPL_DLL RegisterOGRNAS();
478 void CPL_DLL RegisterOGRGeoRSS();
479 void CPL_DLL RegisterOGRGTM();
480 void CPL_DLL RegisterOGRVFK();
481 void CPL_DLL RegisterOGRPGDump();
482 void CPL_DLL RegisterOGROSM();
483 void CPL_DLL RegisterOGRGPSBabel();
484 void CPL_DLL RegisterOGRSUA();
485 void CPL_DLL RegisterOGROpenAir();
486 void CPL_DLL RegisterOGRPDS();
487 void CPL_DLL RegisterOGRWFS();
488 void CPL_DLL RegisterOGRWFS3();
489 void CPL_DLL RegisterOGRSOSI();
490 void CPL_DLL RegisterOGRHTF();
491 void CPL_DLL RegisterOGRAeronavFAA();
492 void CPL_DLL RegisterOGRGeomedia();
493 void CPL_DLL RegisterOGRMDB();
494 void CPL_DLL RegisterOGREDIGEO();
495 void CPL_DLL RegisterOGRGFT();
496 void CPL_DLL RegisterOGRSVG();
497 void CPL_DLL RegisterOGRCouchDB();
498 void CPL_DLL RegisterOGRCloudant();
499 void CPL_DLL RegisterOGRIdrisi();
500 void CPL_DLL RegisterOGRARCGEN();
501 void CPL_DLL RegisterOGRSEGUKOOA();
502 void CPL_DLL RegisterOGRSEGY();
503 void CPL_DLL RegisterOGRXLS();
504 void CPL_DLL RegisterOGRODS();
505 void CPL_DLL RegisterOGRXLSX();
506 void CPL_DLL RegisterOGRElastic();
507 void CPL_DLL RegisterOGRGeoPackage();
508 void CPL_DLL RegisterOGRWalk();
509 void CPL_DLL RegisterOGRCarto();
510 void CPL_DLL RegisterOGRAmigoCloud();
511 void CPL_DLL RegisterOGRSXF();
512 void CPL_DLL RegisterOGROpenFileGDB();
513 void CPL_DLL RegisterOGRSelafin();
514 void CPL_DLL RegisterOGRJML();
515 void CPL_DLL RegisterOGRPLSCENES();
516 void CPL_DLL RegisterOGRCSW();
517 void CPL_DLL RegisterOGRMongoDBv3();
518 void CPL_DLL RegisterOGRMongoDB();
519 void CPL_DLL RegisterOGRVDV();
520 void CPL_DLL RegisterOGRGMLAS();
521 void CPL_DLL RegisterOGRMVT();
522 void CPL_DLL RegisterOGRNGW();