Go to the documentation of this file.
32 #ifndef GDAL_PRIV_H_INCLUDED
33 #define GDAL_PRIV_H_INCLUDED
50 class GDALProxyDataset;
51 class GDALProxyRasterBand;
62 #include "gdal_frmts.h"
67 #include "cpl_multiproc.h"
68 #include "cpl_atomic_ops.h"
84 #define GMO_VALID 0x0001
85 #define GMO_IGNORE_UNIMPLEMENTED 0x0002
86 #define GMO_SUPPORT_MD 0x0004
87 #define GMO_SUPPORT_MDMD 0x0008
88 #define GMO_MD_DIRTY 0x0010
89 #define GMO_PAM_CLASS 0x0020
97 class CPL_DLL GDALMultiDomainMetadata
100 char **papszDomainList;
104 GDALMultiDomainMetadata();
105 ~GDALMultiDomainMetadata();
107 int XMLInit(
CPLXMLNode *psMetadata,
int bMerge );
110 char **GetDomainList() {
return papszDomainList; }
112 char **GetMetadata(
const char * pszDomain =
"" );
113 CPLErr SetMetadata(
char ** papszMetadata,
114 const char * pszDomain =
"" );
115 const char *GetMetadataItem(
const char * pszName,
116 const char * pszDomain =
"" );
117 CPLErr SetMetadataItem(
const char * pszName,
118 const char * pszValue,
119 const char * pszDomain =
"" );
142 GDALMultiDomainMetadata oMDMD{};
146 char **BuildMetadataDomainList(
char** papszList,
152 int GetMOFlags()
const;
153 void SetMOFlags(
int nFlagsIn );
155 virtual const char *GetDescription()
const;
156 virtual void SetDescription(
const char * );
158 virtual char **GetMetadataDomainList();
160 virtual char **GetMetadata(
const char * pszDomain =
"" );
161 virtual CPLErr SetMetadata(
char ** papszMetadata,
162 const char * pszDomain =
"" );
163 virtual const char *GetMetadataItem(
const char * pszName,
164 const char * pszDomain =
"" );
165 virtual CPLErr SetMetadataItem(
const char * pszName,
166 const char * pszValue,
167 const char * pszDomain =
"" );
187 class CPL_DLL GDALDefaultOverviews
198 bool bCheckedForMask;
207 bool bCheckedForOverviews;
211 char **papszInitSiblingFiles;
214 GDALDefaultOverviews();
215 ~GDALDefaultOverviews();
217 void Initialize(
GDALDataset *poDSIn,
const char *pszName =
nullptr,
218 char **papszSiblingFiles =
nullptr,
219 int bNameIsOVR = FALSE );
221 void TransferSiblingFiles(
char** papszSiblingFiles );
229 int GetOverviewCount(
int nBand );
233 const char * pszResampling,
234 int nOverviews,
const int * panOverviewList,
235 int nBands,
const int * panBandList,
236 GDALProgressFunc pfnProgress,
240 CPLErr BuildOverviewsSubDataset(
const char * pszPhysicalFile,
241 const char * pszResampling,
242 int nOverviews,
const int * panOverviewList,
243 int nBands,
const int * panBandList,
244 GDALProgressFunc pfnProgress,
254 int GetMaskFlags(
int nBand );
256 int HaveMaskFile(
char **papszSiblings =
nullptr,
257 const char *pszBasename =
nullptr );
259 char** GetSiblingFiles() {
return papszInitSiblingFiles; }
273 bool bHasGotSiblingFiles;
274 char **papszSiblingFiles;
275 int nHeaderBytesTried;
279 const char *
const * papszSiblingFiles =
nullptr );
308 int TryToIngest(
int nBytes);
309 char **GetSiblingFiles();
310 char **StealSiblingFiles();
311 bool AreSiblingFilesLoaded()
const;
326 class swq_select_parse_options;
330 typedef struct GDALSQLParseInfo GDALSQLParseInfo;
334 #ifdef GDAL_COMPILATION
335 #define OPTIONAL_OUTSIDE_GDAL(val)
337 #define OPTIONAL_OUTSIDE_GDAL(val) = val
345 unsigned int nOpenFlags,
346 const char*
const* papszAllowedDrivers,
347 const char*
const* papszOpenOptions,
348 const char*
const* papszSiblingFiles );
352 friend class GDALDefaultOverviews;
353 friend class GDALProxyDataset;
356 CPL_INTERNAL
void AddToDatasetOpenList();
358 CPL_INTERNAL
static void ReportErrorV(
359 const char* pszDSName,
361 const char *fmt, va_list args);
368 int nRasterXSize = 512;
369 int nRasterYSize = 512;
376 bool bForceCachedIO =
false;
377 bool bShared =
false;
378 bool bIsInternal =
true;
379 bool bSuppressOnClose =
false;
381 mutable std::map<std::string, std::unique_ptr<OGRFieldDomain>> m_oMapFieldDomains{};
386 void RasterInitialize(
int,
int );
389 GDALDefaultOverviews oOvManager{};
391 virtual CPLErr IBuildOverviews(
const char *,
394 GDALProgressFunc,
void *,
406 void BlockBasedFlushCache(
bool bAtClosing);
409 int nXOff,
int nYOff,
int nXSize,
int nYSize,
410 void * pData,
int nBufXSize,
int nBufYSize,
412 int nBandCount,
int *panBandMap,
418 int nXOff,
int nYOff,
int nXSize,
int nYSize,
419 void * pData,
int nBufXSize,
int nBufYSize,
421 int nBandCount,
int *panBandMap,
426 CPLErr ValidateRasterIOOrAdviseReadParameters(
427 const char* pszCallingFunc,
428 int* pbStopProcessingOnCENone,
429 int nXOff,
int nYOff,
int nXSize,
int nYSize,
430 int nBufXSize,
int nBufYSize,
431 int nBandCount,
int *panBandMap);
434 int nXOff,
int nYOff,
int nXSize,
int nYSize,
435 void * pData,
int nBufXSize,
int nBufYSize,
437 int nBandCount,
int *panBandMap,
443 void ShareLockWithParentDataset(
GDALDataset* poParentDataset);
447 void CleanupPostFileClosing();
449 virtual int CloseDependentDatasets();
451 int ValidateLayerCreationOptions(
const char*
const* papszLCO );
453 char **papszOpenOptions =
nullptr;
460 void LeaveReadWrite();
463 void TemporarilyDropReadWriteLock();
464 void ReacquireReadWriteLock();
466 void DisableReadWriteMutex();
475 int GetRasterXSize();
476 int GetRasterYSize();
477 int GetRasterCount();
489 class CPL_DLL Iterator
492 std::unique_ptr<Private> m_poPrivate;
495 Iterator(
const Iterator& oOther);
496 Iterator(Iterator&& oOther) noexcept;
499 Iterator& operator++();
500 bool operator!=(
const Iterator& it)
const;
505 const Iterator
begin()
const;
507 const Iterator
end()
const;
517 virtual void FlushCache(
bool bAtClosing =
false);
523 const char *GetProjectionRef(
void)
const;
524 CPLErr SetProjection(
const char * pszProjection );
526 virtual CPLErr GetGeoTransform(
double * padfTransform );
527 virtual CPLErr SetGeoTransform(
double * padfTransform );
530 char **papszOptions=
nullptr );
532 virtual void *GetInternalHandle(
const char * pszHandleName );
534 virtual char **GetFileList(
void);
536 virtual const char* GetDriverName();
539 virtual int GetGCPCount();
541 virtual CPLErr SetGCPs(
int nGCPCount,
const GDAL_GCP *pasGCPList,
545 const char *GetGCPProjection();
547 const char *pszGCPProjection );
549 virtual CPLErr AdviseRead(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
550 int nBufXSize,
int nBufYSize,
552 int nBandCount,
int *panBandList,
553 char **papszOptions );
555 virtual CPLErr CreateMaskBand(
int nFlagsIn );
558 BeginAsyncReader(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
559 void *pBuf,
int nBufXSize,
int nBufYSize,
561 int nBandCount,
int* panBandMap,
562 int nPixelSpace,
int nLineSpace,
int nBandSpace,
563 char **papszOptions);
567 struct RawBinaryLayout
569 enum class Interleaving
576 std::string osRawFilename{};
577 Interleaving eInterleaving = Interleaving::UNKNOWN;
579 bool bLittleEndianOrder =
false;
587 virtual bool GetRawBinaryLayout(RawBinaryLayout&);
595 OPTIONAL_OUTSIDE_GDAL(
nullptr)
608 int GetShared()
const;
611 void MarkSuppressOnClose();
618 static GDALDataset **GetOpenDatasets(
int *pnDatasetCount );
620 CPLErr BuildOverviews(
const char *,
623 GDALProgressFunc,
void *,
626 OPTIONAL_OUTSIDE_GDAL(
nullptr)
633 static
void ReportError(const
char* pszDSName,
638 char ** GetMetadata(
const char * pszDomain =
"")
override;
642 CPLErr SetMetadata(
char ** papszMetadata,
643 const char * pszDomain )
override;
644 CPLErr SetMetadataItem(
const char * pszName,
645 const char * pszValue,
646 const char * pszDomain )
override;
649 char **GetMetadataDomainList()
override;
651 virtual void ClearStatistics();
669 unsigned int nOpenFlags = 0,
670 const char*
const* papszAllowedDrivers =
nullptr,
671 const char*
const* papszOpenOptions =
nullptr,
672 const char*
const* papszSiblingFiles =
nullptr )
674 return FromHandle(
GDALOpenEx(pszFilename, nOpenFlags,
692 void SetEnableOverviews(
bool bEnable);
695 bool AreOverviewsEnabled()
const;
700 Private *m_poPrivate;
702 CPL_INTERNAL
OGRLayer* BuildLayerFromSelectInfo(swq_select* psSelectInfo,
704 const char *pszDialect,
705 swq_select_parse_options* poSelectParseOptions);
710 virtual int GetLayerCount();
711 virtual OGRLayer *GetLayer(
int iLayer);
713 virtual bool IsLayerPrivate(
int iLayer)
const;
734 std::unique_ptr<Private> m_poPrivate;
755 bool operator!=(
const Iterator& it)
const;
764 OGRLayer* operator[](
size_t iLayer);
765 OGRLayer* operator[](
const char* pszLayername);
770 virtual OGRLayer *GetLayerByName(
const char *);
771 virtual OGRErr DeleteLayer(
int iLayer);
773 virtual void ResetReading();
775 double* pdfProgressPct,
776 GDALProgressFunc pfnProgress,
777 void* pProgressData );
789 class CPL_DLL Iterator
792 std::unique_ptr<Private> m_poPrivate;
795 Iterator(
const Iterator& oOther);
796 Iterator(Iterator&& oOther) noexcept;
799 Iterator& operator++();
800 bool operator!=(
const Iterator& it)
const;
805 const Iterator
begin()
const;
807 const Iterator
end()
const;
812 virtual int TestCapability(
const char * );
814 virtual std::vector<std::string> GetFieldDomainNames(
CSLConstList papszOptions =
nullptr)
const;
816 virtual const OGRFieldDomain* GetFieldDomain(
const std::string& name)
const;
818 virtual bool AddFieldDomain(std::unique_ptr<OGRFieldDomain>&& domain,
819 std::string& failureReason);
821 virtual bool DeleteFieldDomain(
const std::string& name,
822 std::string& failureReason);
824 virtual bool UpdateFieldDomain(std::unique_ptr<OGRFieldDomain>&& domain,
825 std::string& failureReason);
827 virtual std::vector<std::string> GetRelationshipNames(
CSLConstList papszOptions =
nullptr)
const;
829 virtual const GDALRelationship* GetRelationship(
const std::string& name)
const;
831 virtual bool AddRelationship(std::unique_ptr<GDALRelationship>&& relationship,
832 std::string& failureReason);
834 virtual bool DeleteRelationship(
const std::string& name,
835 std::string& failureReason);
837 virtual bool UpdateRelationship(std::unique_ptr<GDALRelationship>&& relationship,
838 std::string& failureReason);
840 virtual OGRLayer *CreateLayer(
const char *pszName,
843 char ** papszOptions =
nullptr );
845 const char *pszNewName,
846 char **papszOptions =
nullptr );
849 virtual void SetStyleTableDirectly(
OGRStyleTable *poStyleTable );
853 virtual OGRLayer * ExecuteSQL(
const char *pszStatement,
855 const char *pszDialect );
856 virtual void ReleaseResultSet(
OGRLayer * poResultsSet );
857 virtual OGRErr AbortSQL( );
859 int GetRefCount()
const;
860 int GetSummaryRefCount()
const;
863 virtual OGRErr StartTransaction(
int bForce=FALSE);
864 virtual OGRErr CommitTransaction();
865 virtual OGRErr RollbackTransaction();
867 virtual std::shared_ptr<GDALGroup> GetRootGroup()
const;
870 static int IsGenericSQLDialect(
const char* pszDialect);
873 GDALSQLParseInfo* BuildParseInfo(swq_select* psSelectInfo,
874 swq_select_parse_options* poSelectParseOptions);
875 static void DestroyParseInfo(GDALSQLParseInfo* psParseInfo );
876 OGRLayer * ExecuteSQL(
const char *pszStatement,
878 const char *pszDialect,
879 swq_select_parse_options* poSelectParseOptions);
883 virtual OGRLayer *ICreateLayer(
const char *pszName,
886 char ** papszOptions =
nullptr );
889 OGRErr ProcessSQLCreateIndex(
const char * );
890 OGRErr ProcessSQLDropIndex(
const char * );
891 OGRErr ProcessSQLDropTable(
const char * );
892 OGRErr ProcessSQLAlterTableAddColumn(
const char * );
893 OGRErr ProcessSQLAlterTableDropColumn(
const char * );
894 OGRErr ProcessSQLAlterTableAlterColumn(
const char * );
895 OGRErr ProcessSQLAlterTableRenameColumn(
const char * );
899 friend class GDALProxyPoolDataset;
907 struct CPL_DLL GDALDatasetUniquePtrDeleter
931 friend class GDALAbstractBandBlockCache;
936 volatile int nLockCount;
953 CPL_INTERNAL
void Detach_unlocked(
void );
954 CPL_INTERNAL
void Touch_unlocked(
void );
956 CPL_INTERNAL
void RecycleFor(
int nXOffIn,
int nYOffIn );
963 CPLErr Internalize(
void );
965 void MarkDirty(
void );
966 void MarkClean(
void );
968 int AddLock(
void ) {
return CPLAtomicInc(&nLockCount); }
970 int DropLock(
void ) {
return CPLAtomicDec(&nLockCount); }
1010 int DropLockForRemovalFromStorage();
1016 static void FlushDirtyBlocks();
1017 static int FlushCacheBlock(
int bDirtyBlocksOnly = FALSE);
1018 static void Verify();
1020 static void EnterDisableDirtyBlockFlush();
1021 static void LeaveDisableDirtyBlockFlush();
1026 static void DumpAll();
1031 CPL_INTERNAL
static void DestroyRBMutex();
1048 std::vector<GDALColorEntry> aoEntries{};
1059 int GetColorEntryCount()
const;
1065 bool IsIdentity()
const;
1090 class GDALAbstractBandBlockCache
1093 CPLLock *hSpinLock =
nullptr;
1097 CPLCond *hCond =
nullptr;
1098 CPLMutex *hCondMutex =
nullptr;
1099 volatile int nKeepAliveCounter = 0;
1101 volatile int m_nDirtyBlocks = 0;
1108 int m_nInitialDirtyBlocksInFlushCache = 0;
1109 int m_nLastTick = -1;
1110 bool m_bWriteDirtyBlocks =
true;
1112 void FreeDanglingBlocks();
1113 void UnreferenceBlockBase();
1115 void StartDirtyBlockFlushingLog();
1116 void UpdateDirtyBlockFlushingLog();
1117 void EndDirtyBlockFlushingLog();
1121 virtual ~GDALAbstractBandBlockCache();
1125 void IncDirtyBlocks(
int nInc);
1126 void WaitCompletionPendingTasks();
1127 void DisableDirtyBlockWriting() { m_bWriteDirtyBlocks =
false; }
1129 virtual bool Init() = 0;
1130 virtual bool IsInitOK() = 0;
1131 virtual CPLErr FlushCache() = 0;
1134 int nYBlockYOff ) = 0;
1136 virtual CPLErr FlushBlock(
int nXBlockOff,
int nYBlockOff,
1137 int bWriteDirtyBlock ) = 0;
1140 GDALAbstractBandBlockCache* GDALArrayBandBlockCacheCreate(
GDALRasterBand* poBand);
1141 GDALAbstractBandBlockCache* GDALHashSetBandBlockCacheCreate(
GDALRasterBand* poBand);
1182 friend class GDALArrayBandBlockCache;
1183 friend class GDALHashSetBandBlockCache;
1187 CPLErr eFlushBlockErr = CE_None;
1188 GDALAbstractBandBlockCache* poBandBlockCache =
nullptr;
1190 CPL_INTERNAL
void SetFlushBlockErr(
CPLErr eErr );
1192 CPL_INTERNAL
void IncDirtyBlocks(
int nInc);
1199 int nRasterXSize = 0;
1200 int nRasterYSize = 0;
1206 int nBlockXSize = -1;
1207 int nBlockYSize = -1;
1208 int nBlocksPerRow = 0;
1209 int nBlocksPerColumn = 0;
1211 int nBlockReads = 0;
1212 int bForceCachedIO = 0;
1215 bool bOwnMask =
false;
1218 void InvalidateMaskBand();
1220 friend class GDALProxyRasterBand;
1221 friend class GDALDefaultOverviews;
1228 void LeaveReadWrite();
1234 virtual CPLErr IReadBlock(
int nBlockXOff,
int nBlockYOff,
void * pData ) = 0;
1235 virtual CPLErr IWriteBlock(
int nBlockXOff,
int nBlockYOff,
void * pData );
1241 virtual int IGetDataCoverageStatus(
int nXOff,
int nYOff,
1242 int nXSize,
int nYSize,
1244 double* pdfDataPct);
1251 int nXOff,
int nYOff,
int nXSize,
int nYSize,
1252 void * pData,
int nBufXSize,
int nBufYSize,
1258 int InitBlockInfo();
1275 void GetBlockSize(
int *,
int * );
1276 CPLErr GetActualBlockSize (
int,
int,
int *,
int * );
1285 #ifndef DOXYGEN_SKIP
1286 OPTIONAL_OUTSIDE_GDAL(
nullptr)
1296 CPLErr FlushBlock(
int,
int,
int bWriteDirtyBlock = TRUE );
1298 unsigned char* GetIndexColorTranslationTo(
GDALRasterBand* poReferenceBand,
1299 unsigned char* pTranslationTable =
nullptr,
1300 int* pApproximateMatching =
nullptr);
1304 virtual CPLErr FlushCache(
bool bAtClosing =
false);
1305 virtual char **GetCategoryNames();
1306 virtual double GetNoDataValue(
int *pbSuccess =
nullptr );
1307 virtual int64_t GetNoDataValueAsInt64(
int *pbSuccess =
nullptr );
1308 virtual uint64_t GetNoDataValueAsUInt64(
int *pbSuccess =
nullptr );
1309 virtual double GetMinimum(
int *pbSuccess =
nullptr );
1310 virtual double GetMaximum(
int *pbSuccess =
nullptr );
1311 virtual double GetOffset(
int *pbSuccess =
nullptr );
1312 virtual double GetScale(
int *pbSuccess =
nullptr );
1313 virtual const char *GetUnitType();
1316 virtual CPLErr Fill(
double dfRealValue,
double dfImaginaryValue = 0);
1318 virtual CPLErr SetCategoryNames(
char ** papszNames );
1319 virtual CPLErr SetNoDataValue(
double dfNoData );
1320 virtual CPLErr SetNoDataValueAsInt64( int64_t nNoData );
1321 virtual CPLErr SetNoDataValueAsUInt64( uint64_t nNoData );
1322 virtual CPLErr DeleteNoDataValue();
1325 virtual CPLErr SetOffset(
double dfNewOffset );
1326 virtual CPLErr SetScale(
double dfNewScale );
1327 virtual CPLErr SetUnitType(
const char * pszNewValue );
1329 virtual CPLErr GetStatistics(
int bApproxOK,
int bForce,
1330 double *pdfMin,
double *pdfMax,
1331 double *pdfMean,
double *padfStdDev );
1332 virtual CPLErr ComputeStatistics(
int bApproxOK,
1333 double *pdfMin,
double *pdfMax,
1334 double *pdfMean,
double *pdfStdDev,
1335 GDALProgressFunc,
void *pProgressData );
1336 virtual CPLErr SetStatistics(
double dfMin,
double dfMax,
1337 double dfMean,
double dfStdDev );
1338 virtual CPLErr ComputeRasterMinMax(
int,
double* );
1343 const char * pszDomain )
override;
1345 const char * pszValue,
1346 const char * pszDomain )
override;
1349 virtual int HasArbitraryOverviews();
1350 virtual int GetOverviewCount();
1353 virtual CPLErr BuildOverviews(
const char * pszResampling,
1355 const int * panOverviewList,
1356 GDALProgressFunc pfnProgress,
1357 void * pProgressData,
1360 virtual CPLErr AdviseRead(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
1361 int nBufXSize,
int nBufYSize,
1364 virtual CPLErr GetHistogram(
double dfMin,
double dfMax,
1365 int nBuckets,
GUIntBig * panHistogram,
1366 int bIncludeOutOfRange,
int bApproxOK,
1367 GDALProgressFunc,
void *pProgressData );
1369 virtual CPLErr GetDefaultHistogram(
double *pdfMin,
double *pdfMax,
1370 int *pnBuckets,
GUIntBig ** ppanHistogram,
1372 GDALProgressFunc,
void *pProgressData);
1373 virtual CPLErr SetDefaultHistogram(
double dfMin,
double dfMax,
1374 int nBuckets,
GUIntBig *panHistogram );
1380 virtual int GetMaskFlags();
1381 virtual CPLErr CreateMaskBand(
int nFlagsIn );
1382 virtual bool IsMaskBand()
const;
1390 int GetDataCoverageStatus(
int nXOff,
int nYOff,
1391 int nXSize,
int nYSize,
1392 int nMaskFlagStop = 0,
1393 double* pdfDataPct =
nullptr );
1395 std::shared_ptr<GDALMDArray> AsMDArray()
const;
1431 ~GDALAllValidMaskBand()
override;
1436 bool IsMaskBand()
const override {
return true; }
1440 double *pdfMin,
double *pdfMax,
1441 double *pdfMean,
double *pdfStdDev,
1442 GDALProgressFunc,
void *pProgressData )
override;
1453 double dfNoDataValue = 0;
1454 int64_t nNoDataValueInt64 = 0;
1455 uint64_t nNoDataValueUInt64 = 0;
1468 ~GDALNoDataMaskBand()
override;
1470 bool IsMaskBand()
const override {
return true; }
1473 static bool IsNoDataInRange(
double dfNoDataValue,
1483 double *padfNodataValues;
1491 explicit GDALNoDataValuesMaskBand(
GDALDataset * );
1492 ~GDALNoDataValuesMaskBand()
override;
1494 bool IsMaskBand()
const override {
return true; }
1518 ~GDALRescaledAlphaBand()
override;
1520 bool IsMaskBand()
const override {
return true; }
1565 const char * pszValue,
1566 const char * pszDomain =
"" )
override;
1572 int nXSize,
int nYSize,
int nBands,
1575 GDALDataset *CreateMultiDimensional(
const char * pszName,
1579 CPLErr Delete(
const char * pszName );
1580 CPLErr Rename(
const char * pszNewName,
1581 const char * pszOldName );
1582 CPLErr CopyFiles(
const char * pszNewName,
1583 const char * pszOldName );
1587 GDALProgressFunc pfnProgress,
1599 int nXSize,
int nYSize,
int nBands,
1601 char ** papszOptions );
1604 int nXSize,
int nYSize,
int nBands,
1606 char ** papszOptions );
1608 GDALDataset *(*pfnCreateMultiDimensional)(
const char * pszName,
1612 CPLErr (*pfnDelete)(
const char * pszName );
1616 GDALProgressFunc pfnProgress,
1617 void * pProgressData );
1633 CPLErr (*pfnRename)(
const char * pszNewName,
1634 const char * pszOldName );
1635 CPLErr (*pfnCopyFiles)(
const char * pszNewName,
1636 const char * pszOldName );
1643 const char * pszName,
1644 char ** papszOptions );
1646 const char * pszName );
1655 GDALProgressFunc pfnProgress,
1658 static CPLErr DefaultCreateCopyMultiDimensional(
1663 GDALProgressFunc pfnProgress,
1664 void * pProgressData );
1673 GDALProgressFunc pfnProgress,
1674 void * pProgressData );
1676 static CPLErr QuietDelete(
const char * pszName,
1680 static CPLErr DefaultRename(
const char * pszNewName,
1681 const char * pszOldName );
1682 static CPLErr DefaultCopyFiles(
const char * pszNewName,
1683 const char * pszOldName );
1696 {
return static_cast<GDALDriver*
>(hDriver); }
1717 std::map<CPLString, GDALDriver*> oMapNameToDrivers{};
1718 std::string m_osDriversIniPath{};
1720 GDALDriver *GetDriver_unlocked(
int iDriver )
1721 {
return (iDriver >= 0 && iDriver < nDrivers) ?
1722 papoDrivers[iDriver] :
nullptr; }
1724 GDALDriver *GetDriverByName_unlocked(
const char * pszName )
const
1725 {
auto oIter = oMapNameToDrivers.find(
CPLString(pszName).toupper());
1726 return oIter == oMapNameToDrivers.end() ? nullptr : oIter->second;
1729 static char** GetSearchPaths(
const char* pszGDAL_DRIVER_PATH);
1731 static void CleanupPythonDrivers();
1739 int GetDriverCount(
void )
const;
1747 void AutoLoadDrivers();
1748 void AutoSkipDrivers();
1749 void ReorderDrivers();
1751 static void AutoLoadPythonDrivers();
1852 GetNextUpdatedRegion(
double dfTimeout,
1853 int* pnBufXOff,
int* pnBufYOff,
1854 int* pnBufXSize,
int* pnBufYSize) = 0;
1855 virtual int LockBuffer(
double dfTimeout = -1.0 );
1856 virtual void UnlockBuffer();
1891 std::vector<std::unique_ptr<GDALEDTComponent>>&& components);
1903 const std::string&
GetName()
const {
return m_osName; }
1929 const std::vector<std::unique_ptr<GDALEDTComponent>>&
GetComponents()
const {
return m_aoComponents; }
1947 bool NeedsFreeDynamicMemory()
const;
1949 void FreeDynamicMemory(
void* pBuffer)
const;
1967 std::vector<std::unique_ptr<GDALEDTComponent>>&& components);
1969 std::string m_osName{};
1973 std::vector<std::unique_ptr<GDALEDTComponent>> m_aoComponents{};
1975 size_t m_nMaxStringLength = 0;
2000 const std::string&
GetName()
const {
return m_osName; }
2015 std::string m_osName;
2032 std::shared_ptr<GDALAttribute> GetAttributeFromAttributes(
const std::string& osName)
const;
2037 virtual std::shared_ptr<GDALAttribute> GetAttribute(
const std::string& osName)
const;
2039 virtual std::vector<std::shared_ptr<GDALAttribute>> GetAttributes(
CSLConstList papszOptions =
nullptr)
const;
2041 virtual std::shared_ptr<GDALAttribute> CreateAttribute(
2042 const std::string& osName,
2043 const std::vector<GUInt64>& anDimensions,
2064 std::string m_osName{};
2065 std::string m_osFullName{};
2067 GDALGroup(
const std::string& osParentName,
const std::string& osName);
2069 const GDALGroup* GetInnerMostGroup(
const std::string& osPathOrArrayOrDim,
2070 std::shared_ptr<GDALGroup>& curGroupHolder,
2071 std::string& osLastPart)
const;
2081 const std::string&
GetName()
const {
return m_osName; }
2089 virtual std::vector<std::string> GetMDArrayNames(
CSLConstList papszOptions =
nullptr)
const;
2090 virtual std::shared_ptr<GDALMDArray> OpenMDArray(
const std::string& osName,
2093 virtual std::vector<std::string> GetGroupNames(
CSLConstList papszOptions =
nullptr)
const;
2094 virtual std::shared_ptr<GDALGroup> OpenGroup(
const std::string& osName,
2097 virtual std::vector<std::string> GetVectorLayerNames(
CSLConstList papszOptions =
nullptr)
const;
2098 virtual OGRLayer* OpenVectorLayer(
const std::string& osName,
2101 virtual std::vector<std::shared_ptr<GDALDimension>> GetDimensions(
CSLConstList papszOptions =
nullptr)
const;
2103 virtual std::shared_ptr<GDALGroup> CreateGroup(
const std::string& osName,
2106 virtual std::shared_ptr<GDALDimension> CreateDimension(
const std::string& osName,
2107 const std::string& osType,
2108 const std::string& osDirection,
2112 virtual std::shared_ptr<GDALMDArray> CreateMDArray(
const std::string& osName,
2113 const std::vector<std::shared_ptr<GDALDimension>>& aoDimensions,
2117 GUInt64 GetTotalCopyCost()
const;
2119 virtual bool CopyFrom(
const std::shared_ptr<GDALGroup>& poDstRootGroup,
2121 const std::shared_ptr<GDALGroup>& poSrcGroup,
2125 GDALProgressFunc pfnProgress,
2126 void * pProgressData,
2131 std::shared_ptr<GDALMDArray> OpenMDArrayFromFullname(
2132 const std::string& osFullName,
2135 std::shared_ptr<GDALMDArray> ResolveMDArray(
const std::string& osName,
2136 const std::string& osStartingPath,
2139 std::shared_ptr<GDALGroup> OpenGroupFromFullname(
2140 const std::string& osFullName,
2143 std::shared_ptr<GDALDimension> OpenDimensionFromFullname(
2144 const std::string& osFullName)
const;
2146 virtual void ClearStatistics();
2149 static constexpr
GUInt64 COPY_COST = 1000;
2166 std::string m_osName{};
2167 std::string m_osFullName{};
2168 std::weak_ptr<GDALAbstractMDArray> m_pSelf{};
2172 void SetSelf(std::weak_ptr<GDALAbstractMDArray>
self) { m_pSelf =
self; }
2174 bool CheckReadWriteParams(
const GUInt64* arrayStartIdx,
2175 const size_t* count,
2176 const GInt64*& arrayStep,
2180 const void* buffer_alloc_start,
2181 size_t buffer_alloc_size,
2182 std::vector<GInt64>& tmp_arrayStep,
2183 std::vector<GPtrDiff_t>& tmp_bufferStride)
const;
2185 virtual bool IRead(
const GUInt64* arrayStartIdx,
2186 const size_t* count,
2190 void* pDstBuffer)
const = 0;
2192 virtual bool IWrite(
const GUInt64* arrayStartIdx,
2193 const size_t* count,
2197 const void* pSrcBuffer);
2207 const std::string&
GetName()
const{
return m_osName; }
2215 GUInt64 GetTotalElementsCount()
const;
2217 virtual size_t GetDimensionCount()
const;
2219 virtual const std::vector<std::shared_ptr<GDALDimension>>& GetDimensions()
const = 0;
2223 virtual std::vector<GUInt64> GetBlockSize()
const;
2225 virtual std::vector<size_t> GetProcessingChunkSize(
size_t nMaxChunkMemory)
const;
2242 typedef bool (*FuncProcessPerChunkType)(
2244 const GUInt64* chunkArrayStartIdx,
2245 const size_t* chunkCount,
2250 virtual bool ProcessPerChunk(
const GUInt64* arrayStartIdx,
2252 const size_t* chunkSize,
2253 FuncProcessPerChunkType pfnFunc,
2256 virtual bool Read(
const GUInt64* arrayStartIdx,
2257 const size_t* count,
2262 const void* pDstBufferAllocStart =
nullptr,
2263 size_t nDstBufferAllocSize = 0)
const;
2265 bool Write(
const GUInt64* arrayStartIdx,
2266 const size_t* count,
2270 const void* pSrcBuffer,
2271 const void* pSrcBufferAllocStart =
nullptr,
2272 size_t nSrcBufferAllocSize = 0);
2316 size_t size()
const {
return m_nSize; }
2340 mutable std::string m_osCachedVal{};
2344 GDALAttribute(
const std::string& osParentName,
const std::string& osName);
2349 std::vector<GUInt64> GetDimensionsSize()
const;
2352 const char* ReadAsString()
const;
2353 int ReadAsInt()
const;
2354 double ReadAsDouble()
const;
2356 std::vector<int> ReadAsIntArray()
const;
2357 std::vector<double> ReadAsDoubleArray()
const;
2360 bool Write(
const void* pabyValue,
size_t nLen);
2361 bool Write(
const char*);
2365 bool Write(
const double*,
size_t);
2368 static constexpr
GUInt64 COPY_COST = 100;
2378 class CPL_DLL GDALAttributeString final:
public GDALAttribute
2380 std::vector<std::shared_ptr<GDALDimension>> m_dims{};
2382 std::string m_osValue;
2391 void* pDstBuffer)
const override;
2394 GDALAttributeString(
const std::string& osParentName,
2395 const std::string& osName,
2396 const std::string& osValue,
2399 const std::vector<std::shared_ptr<GDALDimension>>&
GetDimensions()
const override;
2410 class CPL_DLL GDALAttributeNumeric final:
public GDALAttribute
2412 std::vector<std::shared_ptr<GDALDimension>> m_dims{};
2415 double m_dfValue = 0;
2416 std::vector<GUInt32> m_anValuesUInt32{};
2425 void* pDstBuffer)
const override;
2428 GDALAttributeNumeric(
const std::string& osParentName,
2429 const std::string& osName,
2431 GDALAttributeNumeric(
const std::string& osParentName,
2432 const std::string& osName,
2434 GDALAttributeNumeric(
const std::string& osParentName,
2435 const std::string& osName,
2436 const std::vector<GUInt32>& anValues);
2438 const std::vector<std::shared_ptr<GDALDimension>>&
GetDimensions()
const override;
2458 friend class GDALMDArrayResampled;
2459 std::shared_ptr<GDALMDArray> GetView(
const std::vector<GUInt64>& indices)
const;
2461 inline std::shared_ptr<GDALMDArray> atInternal(std::vector<GUInt64>& indices)
const
2463 return GetView(indices);
2466 template<
typename... GUInt64VarArg>
2468 inline std::shared_ptr<GDALMDArray> atInternal(std::vector<GUInt64>& indices,
2469 GUInt64 idx, GUInt64VarArg... tail)
const
2471 indices.push_back(idx);
2472 return atInternal(indices, tail...);
2475 mutable bool m_bHasTriedCachedArray =
false;
2476 mutable std::shared_ptr<GDALMDArray> m_poCachedArray{};
2480 GDALMDArray(
const std::string& osParentName,
const std::string& osName);
2482 virtual bool IAdviseRead(
const GUInt64* arrayStartIdx,
2483 const size_t* count,
2486 virtual bool IsCacheable()
const {
return true; }
2488 virtual bool SetStatistics(
bool bApproxStats,
2489 double dfMin,
double dfMax,
2490 double dfMean,
double dfStdDev,
2493 static std::string MassageName(
const std::string& inputName);
2495 std::shared_ptr<GDALGroup> GetCacheRootGroup(
bool bCanCreate,
2496 std::string& osCacheFilenameOut)
const;
2499 bool IsTransposedRequest(
const size_t* count,
2503 bool ReadForTransposedRequest(
const GUInt64* arrayStartIdx,
2504 const size_t* count,
2508 void* pDstBuffer)
const;
2513 GUInt64 GetTotalCopyCost()
const;
2520 GDALProgressFunc pfnProgress,
2521 void * pProgressData);
2524 virtual bool IsWritable()
const = 0;
2534 virtual const std::string& GetFilename()
const = 0;
2538 virtual const std::string& GetUnit()
const;
2540 virtual bool SetUnit(
const std::string& osUnit);
2544 virtual std::shared_ptr<OGRSpatialReference> GetSpatialRef()
const;
2546 virtual const void* GetRawNoDataValue()
const;
2548 double GetNoDataValueAsDouble(
bool* pbHasNoData =
nullptr)
const;
2550 int64_t GetNoDataValueAsInt64(
bool* pbHasNoData =
nullptr)
const;
2552 uint64_t GetNoDataValueAsUInt64(
bool* pbHasNoData =
nullptr)
const;
2554 virtual bool SetRawNoDataValue(
const void* pRawNoData);
2557 bool SetNoDataValue(
int nNoData) {
return SetNoDataValue(
static_cast<int64_t
>(nNoData)); }
2560 bool SetNoDataValue(
double dfNoData);
2562 bool SetNoDataValue(int64_t nNoData);
2564 bool SetNoDataValue(uint64_t nNoData);
2566 virtual double GetOffset(
bool* pbHasOffset =
nullptr,
GDALDataType* peStorageType =
nullptr)
const;
2568 virtual double GetScale(
bool* pbHasScale =
nullptr,
GDALDataType* peStorageType =
nullptr)
const;
2574 std::shared_ptr<GDALMDArray> GetView(
const std::string& viewExpr)
const;
2576 std::shared_ptr<GDALMDArray> operator[](
const std::string& fieldName)
const;
2589 template<
typename... GUInt64VarArg>
2592 std::shared_ptr<GDALMDArray>
at(
GUInt64 idx, GUInt64VarArg... tail)
const
2594 std::vector<GUInt64> indices;
2595 indices.push_back(idx);
2596 return atInternal(indices, tail...);
2599 virtual std::shared_ptr<GDALMDArray> Transpose(
const std::vector<int>& anMapNewAxisToOldAxis)
const;
2601 std::shared_ptr<GDALMDArray> GetUnscaled()
const;
2603 virtual std::shared_ptr<GDALMDArray> GetMask(
CSLConstList papszOptions)
const;
2605 std::shared_ptr<GDALMDArray>
2606 GetResampled(
const std::vector<std::shared_ptr<GDALDimension>>& apoNewDims,
2611 virtual GDALDataset* AsClassicDataset(
size_t iXDim,
size_t iYDim)
const;
2613 virtual CPLErr GetStatistics(
bool bApproxOK,
bool bForce,
2614 double *pdfMin,
double *pdfMax,
2615 double *pdfMean,
double *padfStdDev,
2617 GDALProgressFunc pfnProgress,
void *pProgressData );
2619 virtual bool ComputeStatistics(
bool bApproxOK,
2620 double *pdfMin,
double *pdfMax,
2621 double *pdfMean,
double *pdfStdDev,
2623 GDALProgressFunc,
void *pProgressData );
2625 virtual void ClearStatistics();
2627 virtual std::vector<std::shared_ptr<GDALMDArray>> GetCoordinateVariables()
const;
2629 bool AdviseRead(
const GUInt64* arrayStartIdx,
2630 const size_t* count,
2633 bool IsRegularlySpaced(
double& dfStart,
double& dfIncrement)
const;
2635 bool GuessGeoTransform(
size_t nDimX,
size_t nDimY,
bool bPixelIsPoint,
2636 double adfGeoTransform[6])
const;
2638 bool Cache(
CSLConstList papszOptions =
nullptr )
const;
2641 const size_t* count,
2646 const void* pDstBufferAllocStart =
nullptr,
2647 size_t nDstBufferAllocSize = 0) const override final;
2650 static constexpr
GUInt64 COPY_COST = 1000;
2652 bool CopyFromAllExceptValues(const
GDALMDArray* poSrcArray,
2656 GDALProgressFunc pfnProgress,
2657 void * pProgressData);
2663 m_nStartIdx(nStartIdx), m_nIncr(nIncr) {}
2668 std::string m_osFieldName{};
2672 std::vector<size_t> m_mapDimIdxToParentDimIdx{};
2673 std::vector<Range> m_parentRanges{} ;
2676 virtual std::shared_ptr<GDALMDArray> GetView(
const std::string& viewExpr,
2677 bool bRenameDimensions,
2678 std::vector<ViewSpec>& viewSpecs)
const;
2688 const size_t* count,
2700 class CPL_DLL GDALMDArrayRegularlySpaced:
public GDALMDArray
2703 double m_dfIncrement;
2704 double m_dfOffsetInIncrement;
2706 std::vector<std::shared_ptr<GDALDimension>> m_dims;
2707 std::vector<std::shared_ptr<GDALAttribute>> m_attributes{};
2708 std::string m_osEmptyFilename{};
2717 void* pDstBuffer)
const override;
2720 GDALMDArrayRegularlySpaced(
2721 const std::string& osParentName,
2722 const std::string& osName,
2723 const std::shared_ptr<GDALDimension>& poDim,
2724 double dfStart,
double dfIncrement,
2725 double dfOffsetInIncrement);
2727 static std::shared_ptr<GDALMDArrayRegularlySpaced> Create(
2728 const std::string& osParentName,
2729 const std::string& osName,
2730 const std::shared_ptr<GDALDimension>& poDim,
2731 double dfStart,
double dfIncrement,
2732 double dfOffsetInIncrement);
2734 bool IsWritable()
const override {
return false; }
2736 const std::string&
GetFilename()
const override {
return m_osEmptyFilename; }
2738 const std::vector<std::shared_ptr<GDALDimension>>&
GetDimensions()
const override;
2744 void AddAttribute(
const std::shared_ptr<GDALAttribute>& poAttr);
2768 const std::string& osName,
2769 const std::string& osType,
2770 const std::string& osDirection,
2780 const std::string&
GetName()
const {
return m_osName; }
2796 const std::string&
GetType()
const {
return m_osType; }
2814 virtual std::shared_ptr<GDALMDArray> GetIndexingVariable()
const;
2816 virtual bool SetIndexingVariable(std::shared_ptr<GDALMDArray> poIndexingVariable);
2820 std::string m_osName;
2821 std::string m_osFullName;
2822 std::string m_osType;
2823 std::string m_osDirection;
2834 class CPL_DLL GDALDimensionWeakIndexingVar:
public GDALDimension
2836 std::weak_ptr<GDALMDArray> m_poIndexingVariable{};
2839 GDALDimensionWeakIndexingVar(
const std::string& osParentName,
2840 const std::string& osName,
2841 const std::string& osType,
2842 const std::string& osDirection,
2856 struct GDALAntiRecursionStruct;
2857 class GDALAntiRecursionGuard
2859 GDALAntiRecursionStruct* m_psAntiRecursionStruct;
2860 std::string m_osIdentifier;
2863 GDALAntiRecursionGuard(
const GDALAntiRecursionGuard&) =
delete;
2864 GDALAntiRecursionGuard& operator= (
const GDALAntiRecursionGuard&) =
delete;
2867 explicit GDALAntiRecursionGuard(
const std::string& osIdentifier);
2868 GDALAntiRecursionGuard(
const GDALAntiRecursionGuard& other,
const std::string& osIdentifier);
2869 ~GDALAntiRecursionGuard();
2870 int GetCallDepth()
const {
return m_nDepth; }
2893 std::string m_osName{};
2894 std::string m_osLeftTableName{};
2895 std::string m_osRightTableName{};
2897 std::string m_osMappingTableName{};
2898 std::vector<std::string> m_osListLeftTableFields{};
2899 std::vector<std::string> m_osListRightTableFields{};
2900 std::vector<std::string> m_osListLeftMappingTableFields{};
2901 std::vector<std::string> m_osListRightMappingTableFields{};
2903 std::string m_osForwardPathLabel{};
2904 std::string m_osBackwardPathLabel{};
2905 std::string m_osRelatedTableType{};
2918 const std::string& osLeftTableName,
2919 const std::string& osRightTableName,
2921 : m_osName(osName), m_osLeftTableName(osLeftTableName), m_osRightTableName(osRightTableName), m_eCardinality(eCardinality)
2925 const std::string&
GetName()
const {
return m_osName; }
2970 void SetLeftTableFields(
const std::vector<std::string>& osListFields ) { m_osListLeftTableFields = osListFields; }
2977 void SetRightTableFields(
const std::vector<std::string>& osListFields ) { m_osListRightTableFields = osListFields; }
3123 GDALRegenerateOverviewsMultiBand(
int nBands,
GDALRasterBand*
const * papoSrcBands,
3126 const char * pszResampling,
3127 GDALProgressFunc pfnProgress,
void * pProgressData,
3130 typedef CPLErr (*GDALResampleFunction)
3131 (
double dfXRatioDstToSrc,
3132 double dfYRatioDstToSrc,
3136 const void * pChunk,
3137 const GByte * pabyChunkNodataMask,
3138 int nChunkXOff,
int nChunkXSize,
3139 int nChunkYOff,
int nChunkYSize,
3140 int nDstXOff,
int nDstXOff2,
3141 int nDstYOff,
int nDstYOff2,
3145 const char * pszResampling,
3146 int bHasNoData,
float fNoDataValue,
3149 bool bPropagateNoData );
3151 GDALResampleFunction GDALGetResampleFunction(
const char* pszResampling,
3154 GDALDataType GDALGetOvrWorkDataType(
const char* pszResampling,
3160 HFAAuxBuildOverviews(
const char *pszOvrFilename,
GDALDataset *poParentDS,
3162 int nBands,
const int *panBandList,
3163 int nNewOverviews,
const int *panNewOverviewList,
3164 const char *pszResampling,
3165 GDALProgressFunc pfnProgress,
3166 void *pProgressData,
3170 GTIFFBuildOverviews(
const char * pszFilename,
3172 int nOverviews,
const int * panOverviewList,
3173 const char * pszResampling,
3174 GDALProgressFunc pfnProgress,
void * pProgressData,
3178 int &nXOff,
int &nYOff,
3179 int &nXSize,
int &nYSize,
3180 int nBufXSize,
int nBufYSize) CPL_WARN_DEPRECATED(
"Use GDALBandGetBestOverviewLevel2 instead");
3181 int CPL_DLL GDALBandGetBestOverviewLevel2(
GDALRasterBand* poBand,
3182 int &nXOff,
int &nYOff,
3183 int &nXSize,
int &nYSize,
3184 int nBufXSize,
int nBufYSize,
3187 int CPL_DLL GDALOvLevelAdjust(
int nOvLevel,
int nXSize ) CPL_WARN_DEPRECATED(
"Use GDALOvLevelAdjust2 instead");
3188 int CPL_DLL GDALOvLevelAdjust2(
int nOvLevel,
int nXSize,
int nYSize );
3189 int CPL_DLL GDALComputeOvFactor(
int nOvrXSize,
int nRasterXSize,
3190 int nOvrYSize,
int nRasterYSize );
3193 GDALFindAssociatedAuxFile(
const char *pszBasefile,
GDALAccess eAccess,
3200 int CPL_DLL GDALCheckDatasetDimensions(
int nXSize,
int nYSize );
3201 int CPL_DLL GDALCheckBandCount(
int nBands,
int bIsZeroAllowed );
3206 int CPL_DLL GDALReadWorldFile2(
const char *pszBaseFilename,
const char *pszExtension,
3207 double *padfGeoTransform,
char** papszSiblingFiles,
3208 char** ppszWorldFileNameOut);
3209 int GDALReadTabFile2(
const char * pszBaseFilename,
3210 double *padfGeoTransform,
char **ppszWKT,
3211 int *pnGCPCount,
GDAL_GCP **ppasGCPs,
3212 char** papszSiblingFiles,
char** ppszTabFileNameOut );
3219 void GDALNullifyOpenDatasetsList();
3220 CPLMutex** GDALGetphDMMutex();
3221 CPLMutex** GDALGetphDLMutex();
3222 void GDALNullifyProxyPoolSingleton();
3223 void GDALSetResponsiblePIDForCurrentThread(
GIntBig responsiblePID);
3224 GIntBig GDALGetResponsiblePIDForCurrentThread();
3226 CPLString GDALFindAssociatedFile(
const char *pszBasename,
const char *pszExt,
3229 CPLErr CPL_DLL EXIFExtractMetadata(
char**& papszMetadata,
3230 void *fpL,
int nOffset,
3231 int bSwabflag,
int nTIFFHEADER,
3232 int& nExifOffset,
int& nInterOffset,
int& nGPSOffset);
3235 const char*
const* papszOptionOptions);
3236 int GDALValidateOptions(
const char* pszOptionList,
3237 const char*
const* papszOptionsToValidate,
3238 const char* pszErrorMessageOptionType,
3239 const char* pszErrorMessageContainerName);
3245 int nXSize,
int nYSize,
3246 int nBufXSize,
int nBufYSize);
3250 bool bThisLevelOnly);
3255 template<
class T>
inline bool ARE_REAL_EQUAL(T fVal1, T fVal2,
int ulp = 2)
3257 return fVal1 == fVal2 ||
3258 std::abs(fVal1 - fVal2) < std::numeric_limits<float>::epsilon() * std::abs(fVal1+fVal2) * ulp;
3261 double GDALAdjustNoDataCloseToFloatMax(
double dfVal);
3263 #define DIV_ROUND_UP(a, b) ( ((a) % (b)) == 0 ? ((a) / (b)) : (((a) / (b)) + 1) )
3267 #define GDALSTAT_APPROX_NUMSAMPLES 2500
3269 void GDALSerializeGCPListToXML(
CPLXMLNode* psParentNode,
3273 void GDALDeserializeGCPListFromXML(
CPLXMLNode* psGCPList,
3278 void GDALSerializeOpenOptionsToXML(
CPLXMLNode* psParentNode,
char** papszOpenOptions);
3279 char** GDALDeserializeOpenOptionsFromXML(
CPLXMLNode* psParentNode );
3281 int GDALCanFileAcceptSidecarFile(
const char* pszFilename);
3283 bool GDALCanReliablyUseSiblingFileList(
const char* pszFilename);
3285 bool CPL_DLL GDALIsDriverDeprecatedForGDAL35StillEnabled(
const char* pszDriverName,
const char* pszExtraMsg =
"");
3292 } GDALBufferSampleFormat;
3294 bool CPL_DLL GDALBufferHasOnlyNoData(
const void* pBuffer,
3295 double dfNoDataValue,
3296 size_t nWidth,
size_t nHeight,
3300 GDALBufferSampleFormat nSampleFormat);
3305 double CPL_DLL GDALGetNoDataValueCastToDouble(int64_t nVal);
3306 double CPL_DLL GDALGetNoDataValueCastToDouble(uint64_t nVal);
@ GDAL_IDENTIFY_UNKNOWN
Identify could not determine if the file is recognized or not by the probed driver.
Definition: gdal_priv.h:1536
void SetRelatedTableType(const std::string &osType)
Sets the type string of the related table.
Definition: gdal_priv.h:3103
const std::string & GetFullName() const
Return the full name.
Definition: gdal_priv.h:2786
#define CPL_PRINT_FUNC_FORMAT(format_idx, arg_idx)
Tag a function to have printf() formatting.
Definition: cpl_port.h:844
@ GDAL_IDENTIFY_FALSE
Identify determined the file is not recognized by the probed driver.
Definition: gdal_priv.h:1538
VSILFILE * fpL
Pointer to the file.
Definition: gdal_priv.h:298
size_t GetSize() const
Return data type size in bytes.
Definition: gdal_priv.h:1937
virtual bool SetIndexingVariable(std::shared_ptr< GDALMDArray > poIndexingVariable)
Set the variable that is used to index the dimension.
Definition: gdalmultidim.cpp:8648
int GDALGetDataTypeSizeBytes(GDALDataType)
Get data type size in bytes.
Definition: gdal_misc.cpp:318
const std::string & GetFullName() const
Return the full name of the group.
Definition: gdal_priv.h:2087
virtual GDALMaskValueRange GetMaskValueRange() const
Returns the range of values that a mask band can take.
Definition: gdalrasterband.cpp:7232
unsigned char GByte
Unsigned byte type.
Definition: cpl_port.h:203
int GetYOffset() const
Return y offset.
Definition: gdal_priv.h:1805
Class used to represent potentially complex data types.
Definition: gdal_priv.h:1879
int GetYSize() const
Return the height of the block.
Definition: gdal_priv.h:994
std::input_iterator_tag iterator_category
iterator_category
Definition: gdal_priv.h:741
GUIntBig GUInt64
Unsigned 64 bit integer type.
Definition: cpl_port.h:251
Class for dataset open functions.
Definition: gdal_priv.h:271
Layer iterator.
Definition: gdal_priv.h:731
virtual CPLErr ComputeStatistics(int bApproxOK, double *pdfMin, double *pdfMax, double *pdfMean, double *pdfStdDev, GDALProgressFunc, void *pProgressData)
Compute image statistics.
Definition: gdalrasterband.cpp:5390
int GetPixelSpace() const
Return pixel spacing.
Definition: gdal_priv.h:1841
const std::string & GetFullName() const
Return the name of an array or attribute.
Definition: gdal_priv.h:2213
GPtrDiff_t GetBlockSize() const
Return the block size in bytes.
Definition: gdal_priv.h:1006
Class for a component of a compound extended data type.
Definition: gdal_priv.h:1987
constexpr GDALSuggestedBlockAccessPattern GSBAP_RANDOM
Random access to blocks is efficient.
Definition: gdal_priv.h:1166
int GetBandCount() const
Return band count.
Definition: gdal_priv.h:1833
virtual bool IsMaskBand() const
Returns whether a band is a mask band.
Definition: gdalrasterband.cpp:7182
constexpr GDALSuggestedBlockAccessPattern GSBAP_UNKNOWN
Unknown, or no particular read order is suggested.
Definition: gdal_priv.h:1163
const std::string & GetLeftTableName() const
Get the name of the left (or base/origin) table in the relationship.
Definition: gdal_priv.h:2934
OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
Return begin of feature iterator.
Definition: ogrsf_frmts.h:325
GDALDatasetH GDALOpenEx(const char *pszFilename, unsigned int nOpenFlags, const char *const *papszAllowedDrivers, const char *const *papszOpenOptions, const char *const *papszSiblingFiles)
Open a raster or vector file as a GDALDataset.
Definition: gdaldataset.cpp:3219
void difference_type
difference_type
Definition: gdal_priv.h:739
virtual bool IsWritable() const =0
Return whether an array is writable.
This class represents a style table.
Definition: ogr_featurestyle.h:84
void SetForwardPathLabel(const std::string &osLabel)
Sets the label of the forward path for the relationship.
Definition: gdal_priv.h:3049
@ GEDTC_NUMERIC
Numeric value.
Definition: gdal.h:299
String list class designed around our use of C "char**" string lists.
Definition: cpl_string.h:429
Class used as a session object for asynchronous requests.
Definition: gdal_priv.h:1767
@ GDT_Unknown
Definition: gdal.h:64
GDALRelationship(const std::string &osName, const std::string &osLeftTableName, const std::string &osRightTableName, GDALRelationshipCardinality eCardinality=GDALRelationshipCardinality::GRC_ONE_TO_MANY)
Constructor for a relationship between two tables.
Definition: gdal_priv.h:2917
@ GMVR_0_AND_255_ONLY
Definition: gdal_priv.h:1156
GDALExtendedDataTypeClass GetClass() const
Return type class.
Definition: gdal_priv.h:1909
@ GRT_ASSOCIATION
Association relationship.
Definition: gdal.h:1685
const std::string & GetRightTableName() const
Get the name of the right (or related/destination) table in the relationship.
Definition: gdal_priv.h:2937
int GetBufferYSize() const
Return buffer height.
Definition: gdal_priv.h:1825
Format specific driver.
Definition: gdal_priv.h:1558
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:157
Abstract class, implemented by GDALAttribute and GDALMDArray.
Definition: gdal_priv.h:2162
Class returned by GetBands() that act as a container for raster bands.
Definition: gdal_priv.h:481
std::shared_ptr< GDALMDArray > at(GUInt64 idx, GUInt64VarArg... tail) const
Return a view of the array using integer indexing.
Definition: gdal_priv.h:2592
void * GDALColorTableH
Opaque type used for the C bindings of the C++ GDALColorTable class.
Definition: gdal.h:278
int GetLineSpace() const
Return line spacing.
Definition: gdal_priv.h:1845
void GDALClose(GDALDatasetH)
Close GDAL dataset.
Definition: gdaldataset.cpp:3641
void * GetDataRef(void)
Return the data buffer.
Definition: gdal_priv.h:1002
int nOpenFlags
Open flags.
Definition: gdal_priv.h:290
char ** papszOpenOptions
Open options.
Definition: gdal_priv.h:285
virtual CPLErr SetMetadataItem(const char *pszName, const char *pszValue, const char *pszDomain="")
Set single metadata item.
Definition: gdalmajorobject.cpp:387
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:326
Color tuple.
Definition: gdal.h:1517
const std::string & GetName() const
Return the name.
Definition: gdal_priv.h:2780
virtual const std::vector< std::shared_ptr< GDALDimension > > & GetDimensions() const =0
Return the dimensions of an attribute/array.
GDALColorInterp
Definition: gdal.h:204
This class represents a layer of simple features, with access methods.
Definition: ogrsf_frmts.h:72
Convenient string class based on std::string.
Definition: cpl_string.h:320
A single raster band (or channel).
Definition: gdal_priv.h:1179
GIntBig GInt64
Signed 64 bit integer type.
Definition: cpl_port.h:249
const std::vector< std::string > & GetRightTableFields() const
Get the names of the participating fields from the right table in the relationship.
Definition: gdal_priv.h:2963
GDALIdentifyEnum
Enumeration used by GDALDriver::pfnIdentify().
Definition: gdal_priv.h:1533
int GetBandSpace() const
Return band spacing.
Definition: gdal_priv.h:1849
@ GMVR_0_AND_1_ONLY
Definition: gdal_priv.h:1155
virtual std::vector< std::shared_ptr< GDALAttribute > > GetAttributes(CSLConstList papszOptions=nullptr) const
Return the list of attributes contained in a GDALMDArray or GDALGroup.
Definition: gdalmultidim.cpp:223
int GPtrDiff_t
Integer type large enough to hold the difference between 2 addresses.
Definition: cpl_port.h:269
const std::string & GetDirection() const
Return the axis direction.
Definition: gdal_priv.h:2806
void SetType(GDALRelationshipType eType)
Sets the type of the relationship.
Definition: gdal_priv.h:3017
GDALDataType GetBufferType() const
Return buffer data type.
Definition: gdal_priv.h:1829
GDALExtendedDataTypeClass
Enumeration giving the class of a GDALExtendedDataType.
Definition: gdal.h:297
GDALMaskValueRange
Range of values found in a mask band.
Definition: gdal_priv.h:1152
const GByte * data() const
Return pointer to the start of data.
Definition: gdal_priv.h:2314
GDALDataType
Definition: gdal.h:63
Document node structure.
Definition: cpl_minixml.h:69
std::unique_ptr< OGRFeature, OGRFeatureUniquePtrDeleter > OGRFeatureUniquePtr
Unique pointer type for OGRFeature.
Definition: ogr_feature.h:842
static GDALRelationship * FromHandle(GDALRelationshipH hRelationship)
Convert a GDALRelationshipH to a GDALRelationship*.
Definition: gdal_priv.h:3112
const std::string & GetName() const
Return the name of an array or attribute.
Definition: gdal_priv.h:2207
A single raster block in the block cache.
Definition: gdal_priv.h:929
void * GDALMajorObjectH
Opaque type used for the C bindings of the C++ GDALMajorObject class.
Definition: gdal.h:266
Store the raw result of an attribute value, which might contain dynamically allocated structures (lik...
Definition: gdal_priv.h:2285
Class modeling a named container of GDALAttribute, GDALMDArray, OGRLayer or other GDALGroup.
Definition: gdal_priv.h:2060
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:342
char ** GetOpenOptions()
Return open options.
Definition: gdal_priv.h:616
static GDALMajorObject * FromHandle(GDALMajorObjectH hMajorObject)
Convert a GDALMajorObjectH to a GDALMajorObject*.
Definition: gdal_priv.h:178
size_t size() const
Return the size in bytes of the raw result.
Definition: gdal_priv.h:2316
Interface used to get a single GDALAttribute or a set of GDALAttribute.
Definition: gdal_priv.h:2029
Definition of a table relationship.
Definition: gdal_priv.h:2889
int bStatOK
Whether stat()'ing the file was successful.
Definition: gdal_priv.h:293
GDALRelationshipType GetType() const
Get the type of the relationship.
Definition: gdal_priv.h:3011
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:304
Class for managing the registration of file format drivers.
Definition: gdal_priv.h:1713
void * GDALRelationshipH
Opaque type used for the C bindings of the C++ GDALRelationship class.
Definition: gdal.h:289
const std::string & GetForwardPathLabel() const
Get the label of the forward path for the relationship.
Definition: gdal_priv.h:3033
Class modeling a multi-dimensional array.
Definition: gdal_priv.h:2456
GByte * pabyHeader
Buffer with first bytes of the file.
Definition: gdal_priv.h:303
int GetYSize() const
Return height.
Definition: gdal_priv.h:1813
GDALAccess eAccess
Access flag.
Definition: gdal_priv.h:288
virtual GDALRasterBand * GetMaskBand()
Return the mask band associated with the band.
Definition: gdalrasterband.cpp:6720
GDALDataType GetNumericDataType() const
Return numeric data type (only valid when GetClass() == GEDTC_NUMERIC)
Definition: gdal_priv.h:1915
static GDALExtendedDataType CreateString(size_t nMaxStringLength=0, GDALExtendedDataTypeSubType eSubType=GEDTST_NONE)
Return a new GDALExtendedDataType of class GEDTC_STRING.
Definition: gdalmultidim.cpp:8374
@ GRC_ONE_TO_MANY
One-to-many.
Definition: gdal.h:1669
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1056
int CPLErrorNum
Error number.
Definition: cpl_error.h:94
unsigned long long GUIntBig
Large unsigned integer type (generally 64-bit unsigned integer type).
Definition: cpl_port.h:233
static GDALDataset * Open(const char *pszFilename, unsigned int nOpenFlags=0, const char *const *papszAllowedDrivers=nullptr, const char *const *papszOpenOptions=nullptr, const char *const *papszSiblingFiles=nullptr)
Definition: gdal_priv.h:668
@ GDT_Float64
Definition: gdal.h:73
GDALExtendedDataTypeSubType GetSubType() const
Return subtype.
Definition: gdal_priv.h:1923
int DropLock(void)
Decrement the lock count.
Definition: gdal_priv.h:970
const std::string & GetBackwardPathLabel() const
Get the label of the backward path for the relationship.
Definition: gdal_priv.h:3065
const std::vector< std::string > & GetLeftTableFields() const
Get the names of the participating fields from the left table in the relationship.
Definition: gdal_priv.h:2956
int bIsDirectory
Whether the file is a directory.
Definition: gdal_priv.h:295
const std::string & GetType() const
Return the axis type.
Definition: gdal_priv.h:2796
Ground Control Point.
Definition: gdal.h:892
#define CPL_C_END
Macro to end a block of C symbols.
Definition: cpl_port.h:306
virtual CPLErr IReadBlock(int nBlockXOff, int nBlockYOff, void *pData)=0
Read a block of data.
Class modeling a a dimension / axis used to index multidimensional arrays.
Definition: gdal_priv.h:2763
@ GEDTST_NONE
None.
Definition: gdal.h:311
void SetBackwardPathLabel(const std::string &osLabel)
Sets the label of the backward path for the relationship.
Definition: gdal_priv.h:3081
GDALRelationshipCardinality GetCardinality() const
Get the cardinality of the relationship.
Definition: gdal_priv.h:2928
#define CPL_NULL_TERMINATED
Null terminated variadic.
Definition: cpl_port.h:834
constexpr GDALSuggestedBlockAccessPattern GSBAP_BOTTOM_TO_TOP
Reading by strips from bottom to top is the most efficient.
Definition: gdal_priv.h:1172
const std::vector< std::unique_ptr< GDALEDTComponent > > & GetComponents() const
Return the components of the data type (only valid when GetClass() == GEDTC_COMPOUND)
Definition: gdal_priv.h:1929
virtual const GDALExtendedDataType & GetDataType() const =0
Return the data type of an attribute/array.
constexpr GDALSuggestedBlockAccessPattern GSBAP_LARGEST_CHUNK_POSSIBLE
Reading the largest chunk from the raster is the most efficient (can be combined with above values).
Definition: gdal_priv.h:1175
Object returned by GetFeatures() iterators.
Definition: gdal_priv.h:681
GDALDataset * GetGDALDataset()
Return dataset.
Definition: gdal_priv.h:1797
static GDALDatasetH ToHandle(GDALDataset *poDS)
Convert a GDALDataset* to a GDALDatasetH.
Definition: gdal_priv.h:656
void SetRightTableFields(const std::vector< std::string > &osListFields)
Sets the names of the participating fields from the right table in the relationship.
Definition: gdal_priv.h:2977
struct CPLVirtualMem CPLVirtualMem
Opaque type that represents a virtual memory mapping.
Definition: cpl_virtualmem.h:62
virtual bool Read(const GUInt64 *arrayStartIdx, const size_t *count, const GInt64 *arrayStep, const GPtrDiff_t *bufferStride, const GDALExtendedDataType &bufferDataType, void *pDstBuffer, const void *pDstBufferAllocStart=nullptr, size_t nDstBufferAllocSize=0) const
Read part or totality of a multidimensional array or attribute.
Definition: gdalmultidim.cpp:1793
const char *const * papszAllowedDrivers
Allowed drivers (NULL for all)
Definition: gdal_priv.h:306
virtual CPLErr SetMetadata(char **papszMetadata, const char *pszDomain="")
Set metadata.
Definition: gdalmajorobject.cpp:291
virtual int CloseDependentDatasets()
Drop references to any other datasets referenced by this dataset.
Definition: gdaldataset.cpp:4028
static GDALColorTableH ToHandle(GDALColorTable *poCT)
Convert a GDALColorTable* to a GDALRasterBandH.
Definition: gdal_priv.h:1070
int AddLock(void)
Increment the lock count.
Definition: gdal_priv.h:968
virtual CPLErr CreateMaskBand(int nFlagsIn)
Adds a mask band to the dataset.
Definition: gdaldataset.cpp:3028
void SetLeftTableFields(const std::vector< std::string > &osListFields)
Sets the names of the participating fields from the left table in the relationship.
Definition: gdal_priv.h:2970
Definition of a field domain.
Definition: ogr_feature.h:881
GIntBig GSpacing
Type to express pixel, line or band spacing.
Definition: gdal.h:292
GUIntBig vsi_l_offset
Type for a file offset.
Definition: cpl_vsi.h:142
GUInt64 GetSize() const
Return the size, that is the number of values along the dimension.
Definition: gdal_priv.h:2812
GDALAccess
Definition: gdal.h:116
OGRLayer::FeatureIterator end(OGRLayer *poLayer)
Return end of feature iterator.
Definition: ogrsf_frmts.h:330
GDALAsyncStatusType
status of the asynchronous stream
Definition: gdal.h:103
size_t GetOffset() const
Return the offset (in bytes) of the component in the compound data type.
Definition: gdal_priv.h:2006
static GDALDriver * FromHandle(GDALDriverH hDriver)
Convert a GDALDriverH to a GDALDriver*.
Definition: gdal_priv.h:1695
const GByte & operator[](size_t idx) const
Return byte at specified index.
Definition: gdal_priv.h:2312
@ GDAL_IDENTIFY_TRUE
Identify determined the file is recognized by the probed driver.
Definition: gdal_priv.h:1540
int OGRErr
Type for a OGR error.
Definition: ogr_core.h:341
const std::string & GetMappingTableName() const
Get the name of the mapping table for many-to-many relationships.
Definition: gdal_priv.h:2943
@ GA_ReadOnly
Definition: gdal.h:117
virtual std::shared_ptr< GDALMDArray > GetIndexingVariable() const
Return the variable that is used to index the dimension (if there is one).
Definition: gdalmultidim.cpp:8627
int GetXSize() const
Return width.
Definition: gdal_priv.h:1809
int GetDirty() const
Return the dirty flag.
Definition: gdal_priv.h:998
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition: cpl_port.h:230
const std::vector< std::string > & GetLeftMappingTableFields() const
Get the names of the mapping table fields which correspond to the participating fields from the left ...
Definition: gdal_priv.h:2984
const std::vector< std::string > & GetRightMappingTableFields() const
Get the names of the mapping table fields which correspond to the participating fields from the right...
Definition: gdal_priv.h:2991
void pointer
pointer
Definition: gdal_priv.h:740
int GetBufferXSize() const
Return buffer width.
Definition: gdal_priv.h:1821
int nHeaderBytes
Number of bytes in pabyHeader.
Definition: gdal_priv.h:301
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:368
static GDALDriverH ToHandle(GDALDriver *poDriver)
Convert a GDALDriver* to a GDALDriverH.
Definition: gdal_priv.h:1689
void static GDALRasterBandH ToHandle(GDALRasterBand *poBand)
Convert a GDALRasterBand* to a GDALRasterBandH.
Definition: gdal_priv.h:1404
int GetYOff() const
Return the y offset of the top-left corner of the block.
Definition: gdal_priv.h:986
#define CPL_WARN_UNUSED_RESULT
Qualifier to warn when the return value of a function is not used.
Definition: cpl_port.h:869
GDALAccess GetAccess() const
Return access mode.
Definition: gdal_priv.h:606
void SetMappingTableName(const std::string &osName)
Sets the name of the mapping table for many-to-many relationships.
Definition: gdal_priv.h:2949
A simple feature, including geometry and attributes.
Definition: ogr_feature.h:381
virtual const std::string & GetFilename() const =0
Return the filename that contains that array.
GDALRWFlag
Definition: gdal.h:122
const std::string & GetName() const
Get the name of the relationship.
Definition: gdal_priv.h:2925
void SetLeftMappingTableFields(const std::vector< std::string > &osListFields)
Sets the names of the mapping table fields which correspond to the participating fields from the left...
Definition: gdal_priv.h:2998
Class returned by GetFeatures() that act as a container for vector features.
Definition: gdal_priv.h:781
static GDALRelationshipH ToHandle(GDALRelationship *poRelationship)
Convert a GDALRelationship* to a GDALRelationshipH.
Definition: gdal_priv.h:3107
int GDALSuggestedBlockAccessPattern
Suggested/most efficient access pattern to blocks.
Definition: gdal_priv.h:1160
CPLErr BuildOverviews(const char *, int, const int *, int, const int *, GDALProgressFunc, void *, CSLConstList papszOptions)
Build raster overview(s)
Definition: gdaldataset.cpp:1818
Object with metadata.
Definition: gdal_priv.h:136
bool Write(const GUInt64 *arrayStartIdx, const size_t *count, const GInt64 *arrayStep, const GPtrDiff_t *bufferStride, const GDALExtendedDataType &bufferDataType, const void *pSrcBuffer, const void *pSrcBufferAllocStart=nullptr, size_t nSrcBufferAllocSize=0)
Write part or totality of a multidimensional array or attribute.
Definition: gdalmultidim.cpp:1910
virtual CPLErr IRasterIO(GDALRWFlag, int, int, int, int, void *, int, int, GDALDataType, GSpacing, GSpacing, GDALRasterIOExtraArg *psExtraArg)
Read/write a region of image data for this band.
Definition: rasterio.cpp:208
CPLErr
Error category.
Definition: cpl_error.h:52
Class modeling an attribute that has a name, a value and a type, and is typically used to describe a ...
Definition: gdal_priv.h:2338
const GDALExtendedDataType & GetType() const
Return the data type of the component.
Definition: gdal_priv.h:2012
char * pszFilename
Filename.
Definition: gdal_priv.h:283
static GDALColorTable * FromHandle(GDALColorTableH hCT)
Convert a GDALColorTableH to a GDALColorTable*.
Definition: gdal_priv.h:1076
@ GDT_Byte
Definition: gdal.h:65
@ GPI_RGB
Definition: gdal.h:233
GDALExtendedDataTypeSubType
Enumeration giving the subtype of a GDALExtendedDataType.
Definition: gdal.h:309
std::unique_ptr< GDALDataset, GDALDatasetUniquePtrDeleter > GDALDatasetUniquePtr
Unique pointer type for GDALDataset.
Definition: gdal_priv.h:919
virtual int GetMaskFlags()
Return the status flags of the mask band associated with the band.
Definition: gdalrasterband.cpp:7041
GDALRIOResampleAlg
RasterIO() resampling method.
Definition: gdal.h:131
GDALDriverManager * GetGDALDriverManager(void)
Fetch the global GDAL driver manager.
Definition: gdaldrivermanager.cpp:100
Definition: gdal_rat.h:47
int GetXOffset() const
Return x offset.
Definition: gdal_priv.h:1801
size_t GetMaxStringLength() const
Return the maximum length of a string in bytes.
Definition: gdal_priv.h:1943
GDALRelationshipCardinality
Cardinality of relationship.
Definition: gdal.h:1664
GDALRasterBand * GetBand()
Accessor to source GDALRasterBand object.
Definition: gdal_priv.h:1014
Class returned by GetLayers() that acts as a range of layers.
Definition: gdal_priv.h:718
int GetXOff() const
Return the x offset of the top-left corner of the block.
Definition: gdal_priv.h:982
GDALDataType GetDataType() const
Return the data type.
Definition: gdal_priv.h:978
static GDALDataset * FromHandle(GDALDatasetH hDS)
Convert a GDALDatasetH to a GDALDataset*.
Definition: gdal_priv.h:662
GDALPaletteInterp
Definition: gdal.h:230
static GDALExtendedDataType Create(GDALDataType eType)
Return a new GDALExtendedDataType of class GEDTC_NUMERIC.
Definition: gdalmultidim.cpp:8310
static GDALMajorObjectH ToHandle(GDALMajorObject *poMajorObject)
Convert a GDALMajorObject* to a GDALMajorObjectH.
Definition: gdal_priv.h:172
void * GDALRasterBandH
Opaque type used for the C bindings of the C++ GDALRasterBand class.
Definition: gdal.h:272
const std::string & GetName() const
Return the name of the group.
Definition: gdal_priv.h:2081
void SetRightMappingTableFields(const std::vector< std::string > &osListFields)
Sets the names of the mapping table fields which correspond to the participating fields from the righ...
Definition: gdal_priv.h:3005
@ wkbUnknown
unknown type, non-standard
Definition: ogr_core.h:370
void * GetBuffer()
Return buffer.
Definition: gdal_priv.h:1817
const std::string & GetName() const
Return type name.
Definition: gdal_priv.h:1903
#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
const std::string & GetName() const
Return the name.
Definition: gdal_priv.h:2000
int GetXSize() const
Return the width of the block.
Definition: gdal_priv.h:990
void * GDALDatasetH
Opaque type used for the C bindings of the C++ GDALDataset class.
Definition: gdal.h:269
static GDALRasterBand * FromHandle(GDALRasterBandH hBand)
Convert a GDALRasterBandH to a GDALRasterBand*.
Definition: gdal_priv.h:1410
A color table / palette.
Definition: gdal_priv.h:1044
FILE VSILFILE
Opaque type for a FILE that implements the VSIVirtualHandle API.
Definition: cpl_vsi.h:158
int * GetBandMap()
Return band map.
Definition: gdal_priv.h:1837
constexpr GDALSuggestedBlockAccessPattern GSBAP_TOP_TO_BOTTOM
Reading by strips from top to bottom is the most efficient.
Definition: gdal_priv.h:1169
void * GDALDriverH
Opaque type used for the C bindings of the C++ GDALDriver class.
Definition: gdal.h:275
const std::string & GetRelatedTableType() const
Get the type string of the related table.
Definition: gdal_priv.h:3092
GDALRelationshipType
Type of relationship.
Definition: gdal.h:1680