32 #ifndef GDAL_PRIV_H_INCLUDED 33 #define GDAL_PRIV_H_INCLUDED 50 class GDALProxyDataset;
51 class GDALProxyRasterBand;
61 #include "gdal_frmts.h" 66 #include "cpl_multiproc.h" 67 #include "cpl_atomic_ops.h" 80 #define GMO_VALID 0x0001 81 #define GMO_IGNORE_UNIMPLEMENTED 0x0002 82 #define GMO_SUPPORT_MD 0x0004 83 #define GMO_SUPPORT_MDMD 0x0008 84 #define GMO_MD_DIRTY 0x0010 85 #define GMO_PAM_CLASS 0x0020 93 class CPL_DLL GDALMultiDomainMetadata
96 char **papszDomainList;
100 GDALMultiDomainMetadata();
101 ~GDALMultiDomainMetadata();
103 int XMLInit(
CPLXMLNode *psMetadata,
int bMerge );
106 char **GetDomainList() {
return papszDomainList; }
108 char **GetMetadata(
const char * pszDomain =
"" );
109 CPLErr SetMetadata(
char ** papszMetadata,
110 const char * pszDomain =
"" );
111 const char *GetMetadataItem(
const char * pszName,
112 const char * pszDomain =
"" );
113 CPLErr SetMetadataItem(
const char * pszName,
114 const char * pszValue,
115 const char * pszDomain =
"" );
138 GDALMultiDomainMetadata oMDMD;
142 char **BuildMetadataDomainList(
char** papszList,
148 int GetMOFlags()
const;
149 void SetMOFlags(
int nFlagsIn );
151 virtual const char *GetDescription()
const;
152 virtual void SetDescription(
const char * );
154 virtual char **GetMetadataDomainList();
156 virtual char **GetMetadata(
const char * pszDomain =
"" );
157 virtual CPLErr SetMetadata(
char ** papszMetadata,
158 const char * pszDomain =
"" );
159 virtual const char *GetMetadataItem(
const char * pszName,
160 const char * pszDomain =
"" );
161 virtual CPLErr SetMetadataItem(
const char * pszName,
162 const char * pszValue,
163 const char * pszDomain =
"" );
183 class CPL_DLL GDALDefaultOverviews
194 bool bCheckedForMask;
203 bool bCheckedForOverviews;
207 char **papszInitSiblingFiles;
210 GDALDefaultOverviews();
211 ~GDALDefaultOverviews();
213 void Initialize(
GDALDataset *poDSIn,
const char *pszName =
nullptr,
214 char **papszSiblingFiles =
nullptr,
215 int bNameIsOVR = FALSE );
217 void TransferSiblingFiles(
char** papszSiblingFiles );
225 int GetOverviewCount(
int nBand );
229 const char * pszResampling,
230 int nOverviews,
int * panOverviewList,
231 int nBands,
int * panBandList,
232 GDALProgressFunc pfnProgress,
233 void *pProgressData );
235 CPLErr BuildOverviewsSubDataset(
const char * pszPhysicalFile,
236 const char * pszResampling,
237 int nOverviews,
int * panOverviewList,
238 int nBands,
int * panBandList,
239 GDALProgressFunc pfnProgress,
240 void *pProgressData );
248 int GetMaskFlags(
int nBand );
250 int HaveMaskFile(
char **papszSiblings =
nullptr,
251 const char *pszBasename =
nullptr );
253 char** GetSiblingFiles() {
return papszInitSiblingFiles; }
267 bool bHasGotSiblingFiles;
268 char **papszSiblingFiles;
269 int nHeaderBytesTried;
273 const char *
const * papszSiblingFiles =
nullptr );
302 int TryToIngest(
int nBytes);
303 char **GetSiblingFiles();
304 char **StealSiblingFiles();
305 bool AreSiblingFilesLoaded()
const;
320 class swq_select_parse_options;
323 typedef struct GDALSQLParseInfo GDALSQLParseInfo;
326 #ifdef DETECT_OLD_IRASTERIO 327 typedef void signature_changed;
331 #ifdef GDAL_COMPILATION 332 #define OPTIONAL_OUTSIDE_GDAL(val) 334 #define OPTIONAL_OUTSIDE_GDAL(val) = val 342 unsigned int nOpenFlags,
343 const char*
const* papszAllowedDrivers,
344 const char*
const* papszOpenOptions,
345 const char*
const* papszSiblingFiles );
349 friend class GDALDefaultOverviews;
350 friend class GDALProxyDataset;
353 void AddToDatasetOpenList();
355 void Init(
bool bForceCachedIO );
374 bool bSuppressOnClose;
379 void RasterInitialize(
int,
int );
382 GDALDefaultOverviews oOvManager;
384 virtual CPLErr IBuildOverviews(
const char *,
int,
int *,
385 int,
int *, GDALProgressFunc,
void * );
387 #ifdef DETECT_OLD_IRASTERIO 388 virtual signature_changed IRasterIO(
GDALRWFlag,
int,
int,
int,
int,
390 int,
int *,
int,
int,
int ) {};
402 void BlockBasedFlushCache();
405 int nXOff,
int nYOff,
int nXSize,
int nYSize,
406 void * pData,
int nBufXSize,
int nBufYSize,
408 int nBandCount,
int *panBandMap,
414 int nXOff,
int nYOff,
int nXSize,
int nYSize,
415 void * pData,
int nBufXSize,
int nBufYSize,
417 int nBandCount,
int *panBandMap,
422 CPLErr ValidateRasterIOOrAdviseReadParameters(
423 const char* pszCallingFunc,
424 int* pbStopProcessingOnCENone,
425 int nXOff,
int nYOff,
int nXSize,
int nYSize,
426 int nBufXSize,
int nBufYSize,
427 int nBandCount,
int *panBandMap);
430 int nXOff,
int nYOff,
int nXSize,
int nYSize,
431 void * pData,
int nBufXSize,
int nBufYSize,
433 int nBandCount,
int *panBandMap,
440 virtual int CloseDependentDatasets();
442 int ValidateLayerCreationOptions(
const char*
const* papszLCO );
444 char **papszOpenOptions;
451 void LeaveReadWrite();
454 void TemporarilyDropReadWriteLock();
455 void ReacquireReadWriteLock();
457 void DisableReadWriteMutex();
466 int GetRasterXSize();
467 int GetRasterYSize();
468 int GetRasterCount();
480 class CPL_DLL Iterator
483 std::unique_ptr<Private> m_poPrivate;
486 Iterator(
const Iterator& oOther);
487 Iterator(Iterator&& oOther);
490 Iterator& operator++();
491 bool operator!=(
const Iterator& it)
const;
496 const Iterator
begin()
const;
498 const Iterator
end()
const;
508 virtual void FlushCache(
void);
510 virtual const char *GetProjectionRef(
void);
511 virtual CPLErr SetProjection(
const char * pszProjection );
513 virtual CPLErr GetGeoTransform(
double * padfTransform );
514 virtual CPLErr SetGeoTransform(
double * padfTransform );
517 char **papszOptions=
nullptr );
519 virtual void *GetInternalHandle(
const char * pszHandleName );
521 virtual char **GetFileList(
void);
523 virtual const char* GetDriverName();
525 virtual int GetGCPCount();
526 virtual const char *GetGCPProjection();
528 virtual CPLErr SetGCPs(
int nGCPCount,
const GDAL_GCP *pasGCPList,
529 const char *pszGCPProjection );
531 virtual CPLErr AdviseRead(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
532 int nBufXSize,
int nBufYSize,
534 int nBandCount,
int *panBandList,
535 char **papszOptions );
537 virtual CPLErr CreateMaskBand(
int nFlagsIn );
540 BeginAsyncReader(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
541 void *pBuf,
int nBufXSize,
int nBufYSize,
543 int nBandCount,
int* panBandMap,
544 int nPixelSpace,
int nLineSpace,
int nBandSpace,
545 char **papszOptions);
553 OPTIONAL_OUTSIDE_GDAL(
nullptr)
566 int GetShared()
const;
577 static GDALDataset **GetOpenDatasets(
int *pnDatasetCount );
579 CPLErr BuildOverviews(
const char *,
int,
int *,
580 int,
int *, GDALProgressFunc,
void * );
584 char ** GetMetadata(
const char * pszDomain =
"")
override;
588 CPLErr SetMetadata(
char ** papszMetadata,
589 const char * pszDomain )
override;
590 const char *GetMetadataItem(
const char * pszName,
591 const char * pszDomain )
override;
592 CPLErr SetMetadataItem(
const char * pszName,
593 const char * pszValue,
594 const char * pszDomain )
override;
597 char **GetMetadataDomainList()
override;
615 unsigned int nOpenFlags = 0,
616 const char*
const* papszAllowedDrivers =
nullptr,
617 const char*
const* papszOpenOptions =
nullptr,
618 const char*
const* papszSiblingFiles =
nullptr )
620 return FromHandle(
GDALOpenEx(pszFilename, nOpenFlags,
638 Private *m_poPrivate;
640 OGRLayer* BuildLayerFromSelectInfo(swq_select* psSelectInfo,
642 const char *pszDialect,
643 swq_select_parse_options* poSelectParseOptions);
648 virtual int GetLayerCount();
649 virtual OGRLayer *GetLayer(
int iLayer);
670 std::unique_ptr<Private> m_poPrivate;
691 bool operator!=(
const Iterator& it)
const;
700 OGRLayer* operator[](
size_t iLayer);
701 OGRLayer* operator[](
const char* pszLayername);
706 virtual OGRLayer *GetLayerByName(
const char *);
707 virtual OGRErr DeleteLayer(
int iLayer);
709 virtual void ResetReading();
711 double* pdfProgressPct,
712 GDALProgressFunc pfnProgress,
713 void* pProgressData );
725 class CPL_DLL Iterator
728 std::unique_ptr<Private> m_poPrivate;
731 Iterator(
const Iterator& oOther);
732 Iterator(Iterator&& oOther);
735 Iterator& operator++();
736 bool operator!=(
const Iterator& it)
const;
741 const Iterator
begin()
const;
743 const Iterator
end()
const;
748 virtual int TestCapability(
const char * );
750 virtual OGRLayer *CreateLayer(
const char *pszName,
753 char ** papszOptions =
nullptr );
755 const char *pszNewName,
756 char **papszOptions =
nullptr );
759 virtual void SetStyleTableDirectly(
OGRStyleTable *poStyleTable );
763 virtual OGRLayer * ExecuteSQL(
const char *pszStatement,
765 const char *pszDialect );
766 virtual void ReleaseResultSet(
OGRLayer * poResultsSet );
768 int GetRefCount()
const;
769 int GetSummaryRefCount()
const;
772 virtual OGRErr StartTransaction(
int bForce=FALSE);
773 virtual OGRErr CommitTransaction();
774 virtual OGRErr RollbackTransaction();
777 static int IsGenericSQLDialect(
const char* pszDialect);
780 GDALSQLParseInfo* BuildParseInfo(swq_select* psSelectInfo,
781 swq_select_parse_options* poSelectParseOptions);
782 static void DestroyParseInfo(GDALSQLParseInfo* psParseInfo );
783 OGRLayer * ExecuteSQL(
const char *pszStatement,
785 const char *pszDialect,
786 swq_select_parse_options* poSelectParseOptions);
790 virtual OGRLayer *ICreateLayer(
const char *pszName,
793 char ** papszOptions =
nullptr );
796 OGRErr ProcessSQLCreateIndex(
const char * );
797 OGRErr ProcessSQLDropIndex(
const char * );
798 OGRErr ProcessSQLDropTable(
const char * );
799 OGRErr ProcessSQLAlterTableAddColumn(
const char * );
800 OGRErr ProcessSQLAlterTableDropColumn(
const char * );
801 OGRErr ProcessSQLAlterTableAlterColumn(
const char * );
802 OGRErr ProcessSQLAlterTableRenameColumn(
const char * );
812 struct CPL_DLL GDALDatasetUniquePtrDeleter
836 friend class GDALAbstractBandBlockCache;
841 volatile int nLockCount;
858 void Detach_unlocked(
void );
859 void Touch_unlocked(
void );
861 void RecycleFor(
int nXOffIn,
int nYOffIn );
868 CPLErr Internalize(
void );
870 void MarkDirty(
void );
871 void MarkClean(
void );
873 int AddLock(
void ) {
return CPLAtomicInc(&nLockCount); }
875 int DropLock(
void ) {
return CPLAtomicDec(&nLockCount); }
915 int DropLockForRemovalFromStorage();
921 static void FlushDirtyBlocks();
922 static int FlushCacheBlock(
int bDirtyBlocksOnly = FALSE);
923 static void Verify();
925 static void EnterDisableDirtyBlockFlush();
926 static void LeaveDisableDirtyBlockFlush();
931 static void DumpAll();
936 static void DestroyRBMutex();
953 std::vector<GDALColorEntry> aoEntries;
964 int GetColorEntryCount()
const;
995 class CPL_DLL GDALAbstractBandBlockCache
1003 CPLMutex *hCondMutex;
1004 volatile int nKeepAliveCounter;
1009 void FreeDanglingBlocks();
1010 void UnreferenceBlockBase();
1011 void WaitKeepAliveCounter();
1015 virtual ~GDALAbstractBandBlockCache();
1020 virtual bool Init() = 0;
1021 virtual bool IsInitOK() = 0;
1022 virtual CPLErr FlushCache() = 0;
1025 int nYBlockYOff ) = 0;
1027 virtual CPLErr FlushBlock(
int nXBlockOff,
int nYBlockOff,
1028 int bWriteDirtyBlock ) = 0;
1031 GDALAbstractBandBlockCache* GDALArrayBandBlockCacheCreate(
GDALRasterBand* poBand);
1032 GDALAbstractBandBlockCache* GDALHashSetBandBlockCacheCreate(
GDALRasterBand* poBand);
1045 friend class GDALArrayBandBlockCache;
1046 friend class GDALHashSetBandBlockCache;
1050 GDALAbstractBandBlockCache* poBandBlockCache;
1052 void SetFlushBlockErr(
CPLErr eErr );
1055 void Init(
int bForceCachedIO);
1072 int nBlocksPerColumn;
1081 void InvalidateMaskBand();
1084 friend class GDALProxyRasterBand;
1085 friend class GDALDefaultOverviews;
1092 void LeaveReadWrite();
1097 virtual CPLErr IReadBlock(
int nBlockXOff,
int nBlockYOff,
void * pData ) = 0;
1098 virtual CPLErr IWriteBlock(
int nBlockXOff,
int nBlockYOff,
void * pData );
1100 #ifdef DETECT_OLD_IRASTERIO 1101 virtual signature_changed IRasterIO(
GDALRWFlag,
int,
int,
int,
int,
1110 virtual int IGetDataCoverageStatus(
int nXOff,
int nYOff,
1111 int nXSize,
int nYSize,
1113 double* pdfDataPct);
1120 int nXOff,
int nYOff,
int nXSize,
int nYSize,
1121 void * pData,
int nBufXSize,
int nBufYSize,
1127 int InitBlockInfo();
1132 GDALRasterBlock *TryGetLockedBlockRef(
int nXBlockOff,
int nYBlockYOff );
1146 void GetBlockSize(
int *,
int * );
1147 CPLErr GetActualBlockSize (
int,
int,
int *,
int * );
1153 #ifndef DOXYGEN_SKIP
1154 OPTIONAL_OUTSIDE_GDAL(
nullptr)
1163 CPLErr FlushBlock(
int,
int,
int bWriteDirtyBlock = TRUE );
1165 unsigned char* GetIndexColorTranslationTo(
GDALRasterBand* poReferenceBand,
1166 unsigned char* pTranslationTable =
nullptr,
1167 int* pApproximateMatching =
nullptr);
1171 virtual CPLErr FlushCache();
1172 virtual char **GetCategoryNames();
1173 virtual double GetNoDataValue(
int *pbSuccess =
nullptr );
1174 virtual double GetMinimum(
int *pbSuccess =
nullptr );
1175 virtual double GetMaximum(
int *pbSuccess =
nullptr );
1176 virtual double GetOffset(
int *pbSuccess =
nullptr );
1177 virtual double GetScale(
int *pbSuccess =
nullptr );
1178 virtual const char *GetUnitType();
1181 virtual CPLErr Fill(
double dfRealValue,
double dfImaginaryValue = 0);
1183 virtual CPLErr SetCategoryNames(
char ** papszNames );
1184 virtual CPLErr SetNoDataValue(
double dfNoData );
1185 virtual CPLErr DeleteNoDataValue();
1188 virtual CPLErr SetOffset(
double dfNewOffset );
1189 virtual CPLErr SetScale(
double dfNewScale );
1190 virtual CPLErr SetUnitType(
const char * pszNewValue );
1192 virtual CPLErr GetStatistics(
int bApproxOK,
int bForce,
1193 double *pdfMin,
double *pdfMax,
1194 double *pdfMean,
double *padfStdDev );
1195 virtual CPLErr ComputeStatistics(
int bApproxOK,
1196 double *pdfMin,
double *pdfMax,
1197 double *pdfMean,
double *pdfStdDev,
1198 GDALProgressFunc,
void *pProgressData );
1199 virtual CPLErr SetStatistics(
double dfMin,
double dfMax,
1200 double dfMean,
double dfStdDev );
1201 virtual CPLErr ComputeRasterMinMax(
int,
double* );
1205 char **GetMetadata(
const char * pszDomain =
"" )
override;
1206 CPLErr SetMetadata(
char ** papszMetadata,
1207 const char * pszDomain )
override;
1208 const char *GetMetadataItem(
const char * pszName,
1209 const char * pszDomain )
override;
1210 CPLErr SetMetadataItem(
const char * pszName,
1211 const char * pszValue,
1212 const char * pszDomain )
override;
1215 virtual int HasArbitraryOverviews();
1216 virtual int GetOverviewCount();
1219 virtual CPLErr BuildOverviews(
const char * pszResampling,
1221 int * panOverviewList,
1222 GDALProgressFunc pfnProgress,
1223 void * pProgressData );
1225 virtual CPLErr AdviseRead(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
1226 int nBufXSize,
int nBufYSize,
1229 virtual CPLErr GetHistogram(
double dfMin,
double dfMax,
1230 int nBuckets,
GUIntBig * panHistogram,
1231 int bIncludeOutOfRange,
int bApproxOK,
1232 GDALProgressFunc,
void *pProgressData );
1234 virtual CPLErr GetDefaultHistogram(
double *pdfMin,
double *pdfMax,
1235 int *pnBuckets,
GUIntBig ** ppanHistogram,
1237 GDALProgressFunc,
void *pProgressData);
1238 virtual CPLErr SetDefaultHistogram(
double dfMin,
double dfMax,
1239 int nBuckets,
GUIntBig *panHistogram );
1245 virtual int GetMaskFlags();
1246 virtual CPLErr CreateMaskBand(
int nFlagsIn );
1253 int GetDataCoverageStatus(
int nXOff,
int nYOff,
1254 int nXSize,
int nYSize,
1255 int nMaskFlagStop = 0,
1256 double* pdfDataPct =
nullptr );
1284 CPLErr IReadBlock(
int,
int,
void * )
override;
1288 ~GDALAllValidMaskBand()
override;
1291 int GetMaskFlags()
override;
1300 double dfNoDataValue;
1304 CPLErr IReadBlock(
int,
int,
void * )
override;
1311 ~GDALNoDataMaskBand()
override;
1313 static bool IsNoDataInRange(
double dfNoDataValue,
1323 double *padfNodataValues;
1326 CPLErr IReadBlock(
int,
int,
void * )
override;
1329 explicit GDALNoDataValuesMaskBand(
GDALDataset * );
1330 ~GDALNoDataValuesMaskBand()
override;
1343 CPLErr IReadBlock(
int,
int,
void * )
override;
1351 ~GDALRescaledAlphaBand()
override;
1395 CPLErr SetMetadataItem(
const char * pszName,
1396 const char * pszValue,
1397 const char * pszDomain =
"" )
override;
1403 int nXSize,
int nYSize,
int nBands,
1406 CPLErr Delete(
const char * pszName );
1407 CPLErr Rename(
const char * pszNewName,
1408 const char * pszOldName );
1409 CPLErr CopyFiles(
const char * pszNewName,
1410 const char * pszOldName );
1414 GDALProgressFunc pfnProgress,
1426 int nXSize,
int nYSize,
int nBands,
1428 char ** papszOptions );
1430 CPLErr (*pfnDelete)(
const char * pszName );
1434 GDALProgressFunc pfnProgress,
1435 void * pProgressData );
1450 CPLErr (*pfnRename)(
const char * pszNewName,
1451 const char * pszOldName );
1452 CPLErr (*pfnCopyFiles)(
const char * pszNewName,
1453 const char * pszOldName );
1457 GDALDataset *(*pfnCreateVectorOnly)( GDALDriver*,
1458 const char * pszName,
1459 char ** papszOptions );
1460 CPLErr (*pfnDeleteDataSource)( GDALDriver*,
1461 const char * pszName );
1468 GDALDataset *DefaultCreateCopy(
const char *, GDALDataset *,
1470 GDALProgressFunc pfnProgress,
1472 static CPLErr DefaultCopyMasks( GDALDataset *poSrcDS,
1473 GDALDataset *poDstDS,
1476 static CPLErr QuietDelete(
const char * pszName );
1479 static CPLErr DefaultRename(
const char * pszNewName,
1480 const char * pszOldName );
1481 static CPLErr DefaultCopyFiles(
const char * pszNewName,
1482 const char * pszOldName );
1495 {
return static_cast<GDALDriver*
>(hDriver); }
1516 std::map<CPLString, GDALDriver*> oMapNameToDrivers;
1518 GDALDriver *GetDriver_unlocked(
int iDriver )
1519 {
return (iDriver >= 0 && iDriver < nDrivers) ?
1520 papoDrivers[iDriver] :
nullptr; }
1522 GDALDriver *GetDriverByName_unlocked(
const char * pszName )
1529 int GetDriverCount(
void )
const;
1537 static void AutoLoadDrivers();
1538 void AutoSkipDrivers();
1636 GetNextUpdatedRegion(
double dfTimeout,
1637 int* pnBufXOff,
int* pnBufYOff,
1638 int* pnBufXSize,
int* pnBufYSize) = 0;
1639 virtual int LockBuffer(
double dfTimeout = -1.0 );
1640 virtual void UnlockBuffer();
1650 GDALRegenerateOverviewsMultiBand(
int nBands,
GDALRasterBand** papoSrcBands,
1653 const char * pszResampling,
1654 GDALProgressFunc pfnProgress,
void * pProgressData );
1656 typedef CPLErr (*GDALResampleFunction)
1657 (
double dfXRatioDstToSrc,
1658 double dfYRatioDstToSrc,
1663 GByte * pabyChunkNodataMask,
1664 int nChunkXOff,
int nChunkXSize,
1665 int nChunkYOff,
int nChunkYSize,
1666 int nDstXOff,
int nDstXOff2,
1667 int nDstYOff,
int nDstYOff2,
1669 const char * pszResampling,
1670 int bHasNoData,
float fNoDataValue,
1673 bool bPropagateNoData );
1675 GDALResampleFunction GDALGetResampleFunction(
const char* pszResampling,
1678 #ifdef GDAL_ENABLE_RESAMPLING_MULTIBAND 1679 typedef CPLErr (*GDALResampleFunctionMultiBands)
1680 (
double dfXRatioDstToSrc,
1681 double dfYRatioDstToSrc,
1685 void * pChunk,
int nBands,
1686 GByte * pabyChunkNodataMask,
1687 int nChunkXOff,
int nChunkXSize,
1688 int nChunkYOff,
int nChunkYSize,
1689 int nDstXOff,
int nDstXOff2,
1690 int nDstYOff,
int nDstYOff2,
1692 const char * pszResampling,
1693 int bHasNoData,
float fNoDataValue,
1697 GDALResampleFunctionMultiBands GDALGetResampleFunctionMultiBands(
const char* pszResampling,
1701 GDALDataType GDALGetOvrWorkDataType(
const char* pszResampling,
1707 HFAAuxBuildOverviews(
const char *pszOvrFilename,
GDALDataset *poParentDS,
1709 int nBands,
int *panBandList,
1710 int nNewOverviews,
int *panNewOverviewList,
1711 const char *pszResampling,
1712 GDALProgressFunc pfnProgress,
1713 void *pProgressData );
1716 GTIFFBuildOverviews(
const char * pszFilename,
1718 int nOverviews,
int * panOverviewList,
1719 const char * pszResampling,
1720 GDALProgressFunc pfnProgress,
void * pProgressData );
1723 GDALDefaultBuildOverviews(
GDALDataset *hSrcDS,
const char * pszBasename,
1724 const char * pszResampling,
1725 int nOverviews,
int * panOverviewList,
1726 int nBands,
int * panBandList,
1727 GDALProgressFunc pfnProgress,
void * pProgressData);
1730 int &nXOff,
int &nYOff,
1731 int &nXSize,
int &nYSize,
1732 int nBufXSize,
int nBufYSize) CPL_WARN_DEPRECATED(
"Use GDALBandGetBestOverviewLevel2 instead");
1733 int CPL_DLL GDALBandGetBestOverviewLevel2(
GDALRasterBand* poBand,
1734 int &nXOff,
int &nYOff,
1735 int &nXSize,
int &nYSize,
1736 int nBufXSize,
int nBufYSize,
1739 int CPL_DLL GDALOvLevelAdjust(
int nOvLevel,
int nXSize ) CPL_WARN_DEPRECATED(
"Use GDALOvLevelAdjust2 instead");
1740 int CPL_DLL GDALOvLevelAdjust2(
int nOvLevel,
int nXSize,
int nYSize );
1741 int CPL_DLL GDALComputeOvFactor(
int nOvrXSize,
int nRasterXSize,
1742 int nOvrYSize,
int nRasterYSize );
1745 GDALFindAssociatedAuxFile(
const char *pszBasefile,
GDALAccess eAccess,
1752 int CPL_DLL GDALCheckDatasetDimensions(
int nXSize,
int nYSize );
1753 int CPL_DLL GDALCheckBandCount(
int nBands,
int bIsZeroAllowed );
1758 int CPL_DLL GDALReadWorldFile2(
const char *pszBaseFilename,
const char *pszExtension,
1759 double *padfGeoTransform,
char** papszSiblingFiles,
1760 char** ppszWorldFileNameOut);
1761 int GDALReadTabFile2(
const char * pszBaseFilename,
1762 double *padfGeoTransform,
char **ppszWKT,
1763 int *pnGCPCount,
GDAL_GCP **ppasGCPs,
1764 char** papszSiblingFiles,
char** ppszTabFileNameOut );
1771 void GDALNullifyOpenDatasetsList();
1772 CPLMutex** GDALGetphDMMutex();
1773 CPLMutex** GDALGetphDLMutex();
1774 void GDALNullifyProxyPoolSingleton();
1776 void GDALSetResponsiblePIDForCurrentThread(
GIntBig responsiblePID);
1777 GIntBig GDALGetResponsiblePIDForCurrentThread();
1779 CPLString GDALFindAssociatedFile(
const char *pszBasename,
const char *pszExt,
1782 CPLErr EXIFExtractMetadata(
char**& papszMetadata,
1783 void *fpL,
int nOffset,
1784 int bSwabflag,
int nTIFFHEADER,
1785 int& nExifOffset,
int& nInterOffset,
int& nGPSOffset);
1788 const char*
const* papszOptionOptions);
1789 int GDALValidateOptions(
const char* pszOptionList,
1790 const char*
const* papszOptionsToValidate,
1791 const char* pszErrorMessageOptionType,
1792 const char* pszErrorMessageContainerName);
1798 int nXSize,
int nYSize,
1799 int nBufXSize,
int nBufYSize);
1803 int bThisLevelOnly);
1808 template<
class T>
inline bool ARE_REAL_EQUAL(T fVal1, T fVal2,
int ulp = 2)
1810 return fVal1 == fVal2 ||
1811 std::abs(fVal1 - fVal2) < std::numeric_limits<float>::epsilon() * std::abs(fVal1+fVal2) * ulp;
1814 #define DIV_ROUND_UP(a, b) ( ((a) % (b)) == 0 ? ((a) / (b)) : (((a) / (b)) + 1) ) 1818 #define GDALSTAT_APPROX_NUMSAMPLES 2500 1823 void GDALSerializeGCPListToXML(
CPLXMLNode* psParentNode,
1826 const char* pszGCPProjection );
1827 void GDALDeserializeGCPListFromXML(
CPLXMLNode* psGCPList,
1830 char** ppszGCPProjection );
1833 void GDALSerializeOpenOptionsToXML(
CPLXMLNode* psParentNode,
char** papszOpenOptions);
1834 char** GDALDeserializeOpenOptionsFromXML(
CPLXMLNode* psParentNode );
1836 int GDALCanFileAcceptSidecarFile(
const char* pszFilename);
The GDALRasterAttributeTable (or RAT) class is used to encapsulate a table used to provide attribute ...
Definition: gdal_rat.h:47
Layer iterator.
Definition: gdal_priv.h:667
GDALDatasetH GDALOpenEx(const char *pszFilename, unsigned int nOpenFlags, const char *const *papszAllowedDrivers, const char *const *papszOpenOptions, const char *const *papszSiblingFiles) CPL_WARN_UNUSED_RESULT
Open a raster or vector file as a GDALDataset.
Definition: gdaldataset.cpp:2665
int GetBlockSize() const
Return the block size in bytes.
Definition: gdal_priv.h:911
std::unique_ptr< OGRFeature, OGRFeatureUniquePtrDeleter > OGRFeatureUniquePtr
Unique pointer type for OGRFeature.
Definition: ogr_feature.h:779
int GetYSize() const
Return height.
Definition: gdal_priv.h:1597
GDALDataType
Definition: gdal.h:60
Identify could not determine if the file is recognized or not by the probed driver.
Definition: gdal_priv.h:1367
std::unique_ptr< GDALDataset, GDALDatasetUniquePtrDeleter > GDALDatasetUniquePtr
Unique pointer type for GDALDataset.
Definition: gdal_priv.h:824
Document node structure.
Definition: cpl_minixml.h:66
Definitions for CPL mini XML Parser/Serializer.
void static GDALRasterBandH ToHandle(GDALRasterBand *poBand)
Convert a GDALRasterBand* to a GDALRasterBandH.
Definition: gdal_priv.h:1263
GDALDataset * GetGDALDataset()
Return dataset.
Definition: gdal_priv.h:1581
int GetBandCount() const
Return band count.
Definition: gdal_priv.h:1617
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:335
Object returned by GetFeatures() iterators.
Definition: gdal_priv.h:627
const char *const * papszAllowedDrivers
Allowed drivers (NULL for all)
Definition: gdal_priv.h:300
int GetXOffset() const
Return x offset.
Definition: gdal_priv.h:1585
int * GetBandMap()
Return band map.
Definition: gdal_priv.h:1621
int DropLock(void)
Decrement the lock count.
Definition: gdal_priv.h:875
FILE VSILFILE
Opaque type for a FILE that implements the VSIVirtualHandle API.
Definition: cpl_vsi.h:155
char ** GetOpenOptions()
Return open options.
Definition: gdal_priv.h:575
void pointer
pointer
Definition: gdal_priv.h:676
GByte * pabyHeader
Buffer with first bytes of the file.
Definition: gdal_priv.h:297
int GetLineSpace() const
Return line spacing.
Definition: gdal_priv.h:1629
GDALAccess eAccess
Access flag.
Definition: gdal_priv.h:282
GDALDataType GetDataType() const
Return the data type.
Definition: gdal_priv.h:883
GDALRIOResampleAlg
RasterIO() resampling method.
Definition: gdal.h:128
VSILFILE * fpL
Pointer to the file.
Definition: gdal_priv.h:292
int GetBufferYSize() const
Return buffer height.
Definition: gdal_priv.h:1609
static GDALRasterBand * FromHandle(GDALRasterBandH hBand)
Convert a GDALRasterBandH to a GDALRasterBand*.
Definition: gdal_priv.h:1269
int GetBandSpace() const
Return band spacing.
Definition: gdal_priv.h:1633
GDALRWFlag
Definition: gdal.h:119
void * GDALDatasetH
Opaque type used for the C bindings of the C++ GDALDataset class.
Definition: gdal.h:255
unsigned char GByte
Unsigned byte type.
Definition: cpl_port.h:213
char * pszFilename
Filename.
Definition: gdal_priv.h:277
Color tuple.
Definition: gdal.h:1044
int nOpenFlags
Open flags.
Definition: gdal_priv.h:284
A single raster block in the block cache.
Definition: gdal_priv.h:834
void * GDALRasterBandH
Opaque type used for the C bindings of the C++ GDALRasterBand class.
Definition: gdal.h:258
int AddLock(void)
Increment the lock count.
Definition: gdal_priv.h:873
Convenient string class based on std::string.
Definition: cpl_string.h:336
#define CPL_PRINT_FUNC_FORMAT(format_idx, arg_idx)
Tag a function to have printf() formatting.
Definition: cpl_port.h:904
unknown type, non-standard
Definition: ogr_core.h:319
struct CPLVirtualMem CPLVirtualMem
Opaque type that represents a virtual memory mapping.
Definition: cpl_virtualmem.h:62
OGRLayer * layer
Layer to which the feature belongs to.
Definition: gdal_priv.h:633
CPLErr BuildOverviews(const char *, int, int *, int, int *, GDALProgressFunc, void *)
Build raster overview(s)
Definition: gdaldataset.cpp:1489
Various convenience functions for working with strings and string lists.
GIntBig GSpacing
Type to express pixel, line or band spacing.
Definition: gdal.h:273
int bIsDirectory
Whether the file is a directory.
Definition: gdal_priv.h:289
static GDALColorTableH ToHandle(GDALColorTable *poCT)
Convert a GDALColorTable* to a GDALRasterBandH.
Definition: gdal_priv.h:974
int GetDirty() const
Return the dirty flag.
Definition: gdal_priv.h:903
int GetXOff() const
Return the x offset of the top-left corner of the block.
Definition: gdal_priv.h:887
OGRwkbGeometryType
List of well known binary geometry types.
Definition: ogr_core.h:317
static GDALDriverH ToHandle(GDALDriver *poDriver)
Convert a GDALDriver* to a GDALDriverH.
Definition: gdal_priv.h:1488
Public (C callable) GDAL entry points.
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:614
GDALAsyncStatusType
status of the asynchronous stream
Definition: gdal.h:100
int GetPixelSpace() const
Return pixel spacing.
Definition: gdal_priv.h:1625
Abstract base class for all geometry classes.
Definition: ogr_geometry.h:286
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1184
void * GetBuffer()
Return buffer.
Definition: gdal_priv.h:1601
GDALRasterBand * GetBand()
Accessor to source GDALRasterBand object.
Definition: gdal_priv.h:919
Class for dataset open functions.
Definition: gdal_priv.h:265
GDALAccess GetAccess() const
Return access mode.
Definition: gdal_priv.h:564
void MarkSuppressOnClose()
Set that the dataset must be deleted on close.
Definition: gdal_priv.h:570
String list class designed around our use of C "char**" string lists.
Definition: cpl_string.h:447
static GDALDriver * FromHandle(GDALDriverH hDriver)
Convert a GDALDriverH to a GDALDriver*.
Definition: gdal_priv.h:1494
Identify determined the file is recognized by the probed driver.
Definition: gdal_priv.h:1371
static GDALMajorObjectH ToHandle(GDALMajorObject *poMajorObject)
Convert a GDALMajorObject* to a GDALMajorObjectH.
Definition: gdal_priv.h:168
GDALPaletteInterp
Definition: gdal.h:216
Core portability services for cross-platform OGR code.
int bStatOK
Whether stat()'ing the file was successful.
Definition: gdal_priv.h:287
int nHeaderBytes
Number of bytes in pabyHeader.
Definition: gdal_priv.h:295
Class returned by GetBands() that act as a container for raster bands.
Definition: gdal_priv.h:472
virtual int CloseDependentDatasets()
Drop references to any other datasets referenced by this dataset.
Definition: gdaldataset.cpp:3432
void * GetDataRef(void)
Return the data buffer.
Definition: gdal_priv.h:907
virtual CPLErr CreateMaskBand(int nFlagsIn)
Adds a mask band to the dataset.
Definition: gdaldataset.cpp:2477
unsigned long long GUIntBig
Large unsigned integer type (generally 64-bit unsigned integer type).
Definition: cpl_port.h:249
int CPLErrorNum
Error number.
Definition: cpl_error.h:94
Various convenience functions for CPL.
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:145
int GetXSize() const
Return width.
Definition: gdal_priv.h:1593
void * GDALDriverH
Opaque type used for the C bindings of the C++ GDALDriver class.
Definition: gdal.h:261
int GetXSize() const
Return the width of the block.
Definition: gdal_priv.h:895
void GDALClose(GDALDatasetH)
Close GDAL dataset.
Definition: gdaldataset.cpp:3059
static GDALDatasetH ToHandle(GDALDataset *poDS)
Convert a GDALDataset* to a GDALDatasetH.
Definition: gdal_priv.h:602
void * GDALMajorObjectH
Opaque type used for the C bindings of the C++ GDALMajorObject class.
Definition: gdal.h:252
char ** papszOpenOptions
Open options.
Definition: gdal_priv.h:279
Object with metadata.
Definition: gdal_priv.h:132
int GetYSize() const
Return the height of the block.
Definition: gdal_priv.h:899
Class returned by GetLayers() that acts as a range of layers.
Definition: gdal_priv.h:654
static GDALDataset * FromHandle(GDALDatasetH hDS)
Convert a GDALDatasetH to a GDALDataset*.
Definition: gdal_priv.h:608
std::input_iterator_tag iterator_category
iterator_category
Definition: gdal_priv.h:677
This class represents a layer of simple features, with access methods.
Definition: ogrsf_frmts.h:70
int GetYOffset() const
Return y offset.
Definition: gdal_priv.h:1589
A single raster band (or channel).
Definition: gdal_priv.h:1042
GDALAccess
Definition: gdal.h:113
CPLSTRING_DLL CPLString & toupper(void)
Convert to upper case in place.
Definition: cplstring.cpp:331
A simple feature, including geometry and attributes.
Definition: ogr_feature.h:353
This class represents a style table.
Definition: ogr_featurestyle.h:84
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:339
#define CPL_C_END
Macro to end a block of C symbols.
Definition: cpl_port.h:337
GDALDataType GetBufferType() const
Return buffer data type.
Definition: gdal_priv.h:1613
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition: cpl_port.h:246
void * GDALColorTableH
Opaque type used for the C bindings of the C++ GDALColorTable class.
Definition: gdal.h:264
Class for managing the registration of file format drivers.
Definition: gdal_priv.h:1512
OGRLayer::FeatureIterator begin(OGRLayer *poLayer)
Return begin of feature iterator.
Definition: ogrsf_frmts.h:285
#define CPL_NULL_TERMINATED
Null terminated variadic.
Definition: cpl_port.h:894
int GetYOff() const
Return the y offset of the top-left corner of the block.
Definition: gdal_priv.h:891
GDALIdentifyEnum
Enumeration used by GDALDriver::pfnIdentify().
Definition: gdal_priv.h:1364
int OGRErr
Simple container for a bounding region.
Definition: ogr_core.h:290
GDALColorInterp
Definition: gdal.h:190
int GDALGetDataTypeSizeBytes(GDALDataType)
Get data type size in bytes.
Definition: gdal_misc.cpp:305
Class returned by GetFeatures() that act as a container for vector features.
Definition: gdal_priv.h:717
static GDALMajorObject * FromHandle(GDALMajorObjectH hMajorObject)
Convert a GDALMajorObjectH to a GDALMajorObject*.
Definition: gdal_priv.h:174
Identify determined the file is not recognized by the probed driver.
Definition: gdal_priv.h:1369
OGRLayer::FeatureIterator end(OGRLayer *poLayer)
Return end of feature iterator.
Definition: ogrsf_frmts.h:290
void difference_type
difference_type
Definition: gdal_priv.h:675
Format specific driver.
Definition: gdal_priv.h:1389
A color table / palette.
Definition: gdal_priv.h:949
OGRFeatureUniquePtr feature
Unique pointer to a OGRFeature.
Definition: gdal_priv.h:630
Ground Control Point.
Definition: gdal.h:560
CPLErr
Error category.
Definition: cpl_error.h:52
GDALDriverManager * GetGDALDriverManager(void)
Fetch the global GDAL driver manager.
Definition: gdaldrivermanager.cpp:97
#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:987
int GetBufferXSize() const
Return buffer width.
Definition: gdal_priv.h:1605
#define CPL_WARN_UNUSED_RESULT
Qualifier to warn when the return value of a function is not used.
Definition: cpl_port.h:929
Class used as a session object for asynchronous requests.
Definition: gdal_priv.h:1554
static GDALColorTable * FromHandle(GDALColorTableH hCT)
Convert a GDALColorTableH to a GDALColorTable*.
Definition: gdal_priv.h:980