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;
1320 double *padfNodataValues;
1323 CPLErr IReadBlock(
int,
int,
void * )
override;
1326 explicit GDALNoDataValuesMaskBand(
GDALDataset * );
1327 ~GDALNoDataValuesMaskBand()
override;
1340 CPLErr IReadBlock(
int,
int,
void * )
override;
1348 ~GDALRescaledAlphaBand()
override;
1392 CPLErr SetMetadataItem(
const char * pszName,
1393 const char * pszValue,
1394 const char * pszDomain =
"" )
override;
1400 int nXSize,
int nYSize,
int nBands,
1403 CPLErr Delete(
const char * pszName );
1404 CPLErr Rename(
const char * pszNewName,
1405 const char * pszOldName );
1406 CPLErr CopyFiles(
const char * pszNewName,
1407 const char * pszOldName );
1411 GDALProgressFunc pfnProgress,
1423 int nXSize,
int nYSize,
int nBands,
1425 char ** papszOptions );
1427 CPLErr (*pfnDelete)(
const char * pszName );
1431 GDALProgressFunc pfnProgress,
1432 void * pProgressData );
1447 CPLErr (*pfnRename)(
const char * pszNewName,
1448 const char * pszOldName );
1449 CPLErr (*pfnCopyFiles)(
const char * pszNewName,
1450 const char * pszOldName );
1454 GDALDataset *(*pfnCreateVectorOnly)( GDALDriver*,
1455 const char * pszName,
1456 char ** papszOptions );
1457 CPLErr (*pfnDeleteDataSource)( GDALDriver*,
1458 const char * pszName );
1465 GDALDataset *DefaultCreateCopy(
const char *, GDALDataset *,
1467 GDALProgressFunc pfnProgress,
1469 static CPLErr DefaultCopyMasks( GDALDataset *poSrcDS,
1470 GDALDataset *poDstDS,
1473 static CPLErr QuietDelete(
const char * pszName );
1476 static CPLErr DefaultRename(
const char * pszNewName,
1477 const char * pszOldName );
1478 static CPLErr DefaultCopyFiles(
const char * pszNewName,
1479 const char * pszOldName );
1492 {
return static_cast<GDALDriver*
>(hDriver); }
1513 std::map<CPLString, GDALDriver*> oMapNameToDrivers;
1515 GDALDriver *GetDriver_unlocked(
int iDriver )
1516 {
return (iDriver >= 0 && iDriver < nDrivers) ?
1517 papoDrivers[iDriver] :
nullptr; }
1519 GDALDriver *GetDriverByName_unlocked(
const char * pszName )
1526 int GetDriverCount(
void )
const;
1534 static void AutoLoadDrivers();
1535 void AutoSkipDrivers();
1633 GetNextUpdatedRegion(
double dfTimeout,
1634 int* pnBufXOff,
int* pnBufYOff,
1635 int* pnBufXSize,
int* pnBufYSize) = 0;
1636 virtual int LockBuffer(
double dfTimeout = -1.0 );
1637 virtual void UnlockBuffer();
1647 GDALRegenerateOverviewsMultiBand(
int nBands,
GDALRasterBand** papoSrcBands,
1650 const char * pszResampling,
1651 GDALProgressFunc pfnProgress,
void * pProgressData );
1653 typedef CPLErr (*GDALResampleFunction)
1654 (
double dfXRatioDstToSrc,
1655 double dfYRatioDstToSrc,
1660 GByte * pabyChunkNodataMask,
1661 int nChunkXOff,
int nChunkXSize,
1662 int nChunkYOff,
int nChunkYSize,
1663 int nDstXOff,
int nDstXOff2,
1664 int nDstYOff,
int nDstYOff2,
1666 const char * pszResampling,
1667 int bHasNoData,
float fNoDataValue,
1670 bool bPropagateNoData );
1672 GDALResampleFunction GDALGetResampleFunction(
const char* pszResampling,
1675 #ifdef GDAL_ENABLE_RESAMPLING_MULTIBAND 1676 typedef CPLErr (*GDALResampleFunctionMultiBands)
1677 (
double dfXRatioDstToSrc,
1678 double dfYRatioDstToSrc,
1682 void * pChunk,
int nBands,
1683 GByte * pabyChunkNodataMask,
1684 int nChunkXOff,
int nChunkXSize,
1685 int nChunkYOff,
int nChunkYSize,
1686 int nDstXOff,
int nDstXOff2,
1687 int nDstYOff,
int nDstYOff2,
1689 const char * pszResampling,
1690 int bHasNoData,
float fNoDataValue,
1694 GDALResampleFunctionMultiBands GDALGetResampleFunctionMultiBands(
const char* pszResampling,
1698 GDALDataType GDALGetOvrWorkDataType(
const char* pszResampling,
1704 HFAAuxBuildOverviews(
const char *pszOvrFilename,
GDALDataset *poParentDS,
1706 int nBands,
int *panBandList,
1707 int nNewOverviews,
int *panNewOverviewList,
1708 const char *pszResampling,
1709 GDALProgressFunc pfnProgress,
1710 void *pProgressData );
1713 GTIFFBuildOverviews(
const char * pszFilename,
1715 int nOverviews,
int * panOverviewList,
1716 const char * pszResampling,
1717 GDALProgressFunc pfnProgress,
void * pProgressData );
1720 GDALDefaultBuildOverviews(
GDALDataset *hSrcDS,
const char * pszBasename,
1721 const char * pszResampling,
1722 int nOverviews,
int * panOverviewList,
1723 int nBands,
int * panBandList,
1724 GDALProgressFunc pfnProgress,
void * pProgressData);
1727 int &nXOff,
int &nYOff,
1728 int &nXSize,
int &nYSize,
1729 int nBufXSize,
int nBufYSize) CPL_WARN_DEPRECATED(
"Use GDALBandGetBestOverviewLevel2 instead");
1730 int CPL_DLL GDALBandGetBestOverviewLevel2(
GDALRasterBand* poBand,
1731 int &nXOff,
int &nYOff,
1732 int &nXSize,
int &nYSize,
1733 int nBufXSize,
int nBufYSize,
1736 int CPL_DLL GDALOvLevelAdjust(
int nOvLevel,
int nXSize ) CPL_WARN_DEPRECATED(
"Use GDALOvLevelAdjust2 instead");
1737 int CPL_DLL GDALOvLevelAdjust2(
int nOvLevel,
int nXSize,
int nYSize );
1738 int CPL_DLL GDALComputeOvFactor(
int nOvrXSize,
int nRasterXSize,
1739 int nOvrYSize,
int nRasterYSize );
1742 GDALFindAssociatedAuxFile(
const char *pszBasefile,
GDALAccess eAccess,
1749 int CPL_DLL GDALCheckDatasetDimensions(
int nXSize,
int nYSize );
1750 int CPL_DLL GDALCheckBandCount(
int nBands,
int bIsZeroAllowed );
1755 int CPL_DLL GDALReadWorldFile2(
const char *pszBaseFilename,
const char *pszExtension,
1756 double *padfGeoTransform,
char** papszSiblingFiles,
1757 char** ppszWorldFileNameOut);
1758 int GDALReadTabFile2(
const char * pszBaseFilename,
1759 double *padfGeoTransform,
char **ppszWKT,
1760 int *pnGCPCount,
GDAL_GCP **ppasGCPs,
1761 char** papszSiblingFiles,
char** ppszTabFileNameOut );
1768 void GDALNullifyOpenDatasetsList();
1769 CPLMutex** GDALGetphDMMutex();
1770 CPLMutex** GDALGetphDLMutex();
1771 void GDALNullifyProxyPoolSingleton();
1773 void GDALSetResponsiblePIDForCurrentThread(
GIntBig responsiblePID);
1774 GIntBig GDALGetResponsiblePIDForCurrentThread();
1776 CPLString GDALFindAssociatedFile(
const char *pszBasename,
const char *pszExt,
1779 CPLErr EXIFExtractMetadata(
char**& papszMetadata,
1780 void *fpL,
int nOffset,
1781 int bSwabflag,
int nTIFFHEADER,
1782 int& nExifOffset,
int& nInterOffset,
int& nGPSOffset);
1785 const char*
const* papszOptionOptions);
1786 int GDALValidateOptions(
const char* pszOptionList,
1787 const char*
const* papszOptionsToValidate,
1788 const char* pszErrorMessageOptionType,
1789 const char* pszErrorMessageContainerName);
1795 int nXSize,
int nYSize,
1796 int nBufXSize,
int nBufYSize);
1800 int bThisLevelOnly);
1805 template<
class T>
inline bool ARE_REAL_EQUAL(T fVal1, T fVal2,
int ulp = 2)
1807 return fVal1 == fVal2 ||
1808 std::abs(fVal1 - fVal2) < std::numeric_limits<float>::epsilon() * std::abs(fVal1+fVal2) * ulp;
1811 #define DIV_ROUND_UP(a, b) ( ((a) % (b)) == 0 ? ((a) / (b)) : (((a) / (b)) + 1) ) 1815 #define GDALSTAT_APPROX_NUMSAMPLES 2500 1820 void GDALSerializeGCPListToXML(
CPLXMLNode* psParentNode,
1823 const char* pszGCPProjection );
1824 void GDALDeserializeGCPListFromXML(
CPLXMLNode* psGCPList,
1827 char** ppszGCPProjection );
1830 void GDALSerializeOpenOptionsToXML(
CPLXMLNode* psParentNode,
char** papszOpenOptions);
1831 char** GDALDeserializeOpenOptionsFromXML(
CPLXMLNode* psParentNode );
1833 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:1594
GDALDataType
Definition: gdal.h:60
Identify could not determine if the file is recognized or not by the probed driver.
Definition: gdal_priv.h:1364
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:1578
int GetBandCount() const
Return band count.
Definition: gdal_priv.h:1614
#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:1582
int * GetBandMap()
Return band map.
Definition: gdal_priv.h:1618
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:1626
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:1606
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:1630
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:1485
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:1622
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:1598
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:1491
Identify determined the file is recognized by the probed driver.
Definition: gdal_priv.h:1368
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:1590
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:1586
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:1610
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:1509
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:1361
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:1366
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:1386
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:1602
#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:1551
static GDALColorTable * FromHandle(GDALColorTableH hCT)
Convert a GDALColorTableH to a GDALColorTable*.
Definition: gdal_priv.h:980