GDAL
gdal_proxy.h
1/******************************************************************************
2 * $Id$
3 *
4 * Project: GDAL Core
5 * Purpose: GDAL Core C++/Private declarations
6 * Author: Even Rouault <even dot rouault at spatialys.com>
7 *
8 ******************************************************************************
9 * Copyright (c) 2008-2014, Even Rouault <even dot rouault at spatialys.com>
10 *
11 * SPDX-License-Identifier: MIT
12 ****************************************************************************/
13
14#ifndef GDAL_PROXY_H_INCLUDED
15#define GDAL_PROXY_H_INCLUDED
16
17#ifndef DOXYGEN_SKIP
18
19#include "gdal.h"
20
21#ifdef __cplusplus
22
23#include "gdal_priv.h"
24#include "cpl_hash_set.h"
25
26/* ******************************************************************** */
27/* GDALProxyDataset */
28/* ******************************************************************** */
29
30class CPL_DLL GDALProxyDataset : public GDALDataset
31{
32 protected:
33 GDALProxyDataset()
34 {
35 }
36
37 virtual GDALDataset *RefUnderlyingDataset() const = 0;
38 virtual void UnrefUnderlyingDataset(GDALDataset *poUnderlyingDataset) const;
39
40 CPLErr IBuildOverviews(const char *, int, const int *, int, const int *,
41 GDALProgressFunc, void *,
42 CSLConstList papszOptions) override;
43 CPLErr IRasterIO(GDALRWFlag, int, int, int, int, void *, int, int,
44 GDALDataType, int, BANDMAP_TYPE, GSpacing, GSpacing,
45 GSpacing, GDALRasterIOExtraArg *psExtraArg) override;
46 CPLErr BlockBasedRasterIO(GDALRWFlag eRWFlag, int nXOff, int nYOff,
47 int nXSize, int nYSize, void *pData,
48 int nBufXSize, int nBufYSize,
49 GDALDataType eBufType, int nBandCount,
50 const int *panBandMap, GSpacing nPixelSpace,
51 GSpacing nLineSpace, GSpacing nBandSpace,
52 GDALRasterIOExtraArg *psExtraArg) override;
53
54 public:
55 char **GetMetadataDomainList() override;
56 char **GetMetadata(const char *pszDomain) override;
57 CPLErr SetMetadata(char **papszMetadata, const char *pszDomain) override;
58 const char *GetMetadataItem(const char *pszName,
59 const char *pszDomain) override;
60 CPLErr SetMetadataItem(const char *pszName, const char *pszValue,
61 const char *pszDomain) override;
62
63 CPLErr FlushCache(bool bAtClosing) override;
64
65 const OGRSpatialReference *GetSpatialRef() const override;
66 CPLErr SetSpatialRef(const OGRSpatialReference *poSRS) override;
67
68 CPLErr GetGeoTransform(double *) override;
69 CPLErr SetGeoTransform(double *) override;
70
71 void *GetInternalHandle(const char *) override;
72 GDALDriver *GetDriver() override;
73 char **GetFileList() override;
74
75 int GetGCPCount() override;
76 const OGRSpatialReference *GetGCPSpatialRef() const override;
77 const GDAL_GCP *GetGCPs() override;
78 CPLErr SetGCPs(int nGCPCount, const GDAL_GCP *pasGCPList,
79 const OGRSpatialReference *poGCP_SRS) override;
80
81 CPLErr AdviseRead(int nXOff, int nYOff, int nXSize, int nYSize,
82 int nBufXSize, int nBufYSize, GDALDataType eDT,
83 int nBandCount, int *panBandList,
84 char **papszOptions) override;
85
86 CPLErr CreateMaskBand(int nFlags) override;
87
88 virtual CPLStringList
89 GetCompressionFormats(int nXOff, int nYOff, int nXSize, int nYSize,
90 int nBandCount, const int *panBandList) override;
91 virtual CPLErr ReadCompressedData(const char *pszFormat, int nXOff,
92 int nYOff, int nXSize, int nYSize,
93 int nBandCount, const int *panBandList,
94 void **ppBuffer, size_t *pnBufferSize,
95 char **ppszDetailedFormat) override;
96
97 private:
98 CPL_DISALLOW_COPY_ASSIGN(GDALProxyDataset)
99};
100
101/* ******************************************************************** */
102/* GDALProxyRasterBand */
103/* ******************************************************************** */
104
105class CPL_DLL GDALProxyRasterBand : public GDALRasterBand
106{
107 protected:
108 GDALProxyRasterBand()
109 {
110 }
111
112 virtual GDALRasterBand *
113 RefUnderlyingRasterBand(bool bForceOpen = true) const = 0;
114 virtual void
115 UnrefUnderlyingRasterBand(GDALRasterBand *poUnderlyingRasterBand) const;
116
117 CPLErr IReadBlock(int, int, void *) override;
118 CPLErr IWriteBlock(int, int, void *) override;
119 CPLErr IRasterIO(GDALRWFlag, int, int, int, int, void *, int, int,
121 GDALRasterIOExtraArg *psExtraArg) override;
122
123 int IGetDataCoverageStatus(int nXOff, int nYOff, int nXSize, int nYSize,
124 int nMaskFlagStop, double *pdfDataPct) override;
125
126 public:
127 char **GetMetadataDomainList() override;
128 char **GetMetadata(const char *pszDomain) override;
129 CPLErr SetMetadata(char **papszMetadata, const char *pszDomain) override;
130 const char *GetMetadataItem(const char *pszName,
131 const char *pszDomain) override;
132 CPLErr SetMetadataItem(const char *pszName, const char *pszValue,
133 const char *pszDomain) override;
134
135 GDALRasterBlock *GetLockedBlockRef(int nXBlockOff, int nYBlockOff,
136 int bJustInitialize) override;
137
138 GDALRasterBlock *TryGetLockedBlockRef(int nXBlockOff,
139 int nYBlockYOff) override;
140
141 CPLErr FlushBlock(int nXBlockOff, int nYBlockOff,
142 int bWriteDirtyBlock) override;
143
144 CPLErr FlushCache(bool bAtClosing) override;
145 char **GetCategoryNames() override;
146 double GetNoDataValue(int *pbSuccess = nullptr) override;
147 double GetMinimum(int *pbSuccess = nullptr) override;
148 double GetMaximum(int *pbSuccess = nullptr) override;
149 double GetOffset(int *pbSuccess = nullptr) override;
150 double GetScale(int *pbSuccess = nullptr) override;
151 const char *GetUnitType() override;
152 GDALColorInterp GetColorInterpretation() override;
153 GDALColorTable *GetColorTable() override;
154 CPLErr Fill(double dfRealValue, double dfImaginaryValue = 0) override;
155
156 CPLErr SetCategoryNames(char **) override;
157 CPLErr SetNoDataValue(double) override;
158 CPLErr DeleteNoDataValue() override;
159 CPLErr SetColorTable(GDALColorTable *) override;
160 CPLErr SetColorInterpretation(GDALColorInterp) override;
161 CPLErr SetOffset(double) override;
162 CPLErr SetScale(double) override;
163 CPLErr SetUnitType(const char *) override;
164
165 CPLErr GetStatistics(int bApproxOK, int bForce, double *pdfMin,
166 double *pdfMax, double *pdfMean,
167 double *padfStdDev) override;
168 CPLErr ComputeStatistics(int bApproxOK, double *pdfMin, double *pdfMax,
169 double *pdfMean, double *pdfStdDev,
170 GDALProgressFunc, void *pProgressData) override;
171 CPLErr SetStatistics(double dfMin, double dfMax, double dfMean,
172 double dfStdDev) override;
173 CPLErr ComputeRasterMinMax(int, double *) override;
174
175 int HasArbitraryOverviews() override;
176 int GetOverviewCount() override;
177 GDALRasterBand *GetOverview(int) override;
178 GDALRasterBand *GetRasterSampleOverview(GUIntBig) override;
179 CPLErr BuildOverviews(const char *, int, const int *, GDALProgressFunc,
180 void *, CSLConstList papszOptions) override;
181
182 CPLErr AdviseRead(int nXOff, int nYOff, int nXSize, int nYSize,
183 int nBufXSize, int nBufYSize, GDALDataType eDT,
184 char **papszOptions) override;
185
186 CPLErr GetHistogram(double dfMin, double dfMax, int nBuckets,
187 GUIntBig *panHistogram, int bIncludeOutOfRange,
188 int bApproxOK, GDALProgressFunc,
189 void *pProgressData) override;
190
191 CPLErr GetDefaultHistogram(double *pdfMin, double *pdfMax, int *pnBuckets,
192 GUIntBig **ppanHistogram, int bForce,
193 GDALProgressFunc, void *pProgressData) override;
194 CPLErr SetDefaultHistogram(double dfMin, double dfMax, int nBuckets,
195 GUIntBig *panHistogram) override;
196
197 GDALRasterAttributeTable *GetDefaultRAT() override;
198 CPLErr SetDefaultRAT(const GDALRasterAttributeTable *) override;
199
200 GDALRasterBand *GetMaskBand() override;
201 int GetMaskFlags() override;
202 CPLErr CreateMaskBand(int nFlags) override;
203 bool IsMaskBand() const override;
204 GDALMaskValueRange GetMaskValueRange() const override;
205
206 CPLVirtualMem *GetVirtualMemAuto(GDALRWFlag eRWFlag, int *pnPixelSpace,
207 GIntBig *pnLineSpace,
208 char **papszOptions) override;
209
210 CPLErr InterpolateAtPoint(double dfPixel, double dfLine,
211 GDALRIOResampleAlg eInterpolation,
212 double *pdfRealValue,
213 double *pdfImagValue) const override;
214
215 void EnablePixelTypeSignedByteWarning(bool b) override;
216
217 private:
218 CPL_DISALLOW_COPY_ASSIGN(GDALProxyRasterBand)
219};
220
221/* ******************************************************************** */
222/* GDALProxyPoolDataset */
223/* ******************************************************************** */
224
225typedef struct _GDALProxyPoolCacheEntry GDALProxyPoolCacheEntry;
226class GDALProxyPoolRasterBand;
227
228class CPL_DLL GDALProxyPoolDataset : public GDALProxyDataset
229{
230 private:
231 GIntBig responsiblePID = -1;
232
233 mutable char *pszProjectionRef = nullptr;
234 mutable OGRSpatialReference *m_poSRS = nullptr;
235 mutable OGRSpatialReference *m_poGCPSRS = nullptr;
236 double adfGeoTransform[6]{0, 1, 0, 0, 0, 1};
237 bool m_bHasSrcSRS = false;
238 bool bHasSrcGeoTransform = false;
239 char *pszGCPProjection = nullptr;
240 int nGCPCount = 0;
241 GDAL_GCP *pasGCPList = nullptr;
242 CPLHashSet *metadataSet = nullptr;
243 CPLHashSet *metadataItemSet = nullptr;
244
245 mutable GDALProxyPoolCacheEntry *cacheEntry = nullptr;
246 char *m_pszOwner = nullptr;
247
248 GDALDataset *RefUnderlyingDataset(bool bForceOpen) const;
249
250 GDALProxyPoolDataset(const char *pszSourceDatasetDescription,
251 GDALAccess eAccess, int bShared, const char *pszOwner);
252
253 protected:
254 GDALDataset *RefUnderlyingDataset() const override;
255 void
256 UnrefUnderlyingDataset(GDALDataset *poUnderlyingDataset) const override;
257
258 friend class GDALProxyPoolRasterBand;
259
260 public:
261 GDALProxyPoolDataset(const char *pszSourceDatasetDescription,
262 int nRasterXSize, int nRasterYSize,
263 GDALAccess eAccess = GA_ReadOnly, int bShared = FALSE,
264 const char *pszProjectionRef = nullptr,
265 double *padfGeoTransform = nullptr,
266 const char *pszOwner = nullptr);
267
268 static GDALProxyPoolDataset *Create(const char *pszSourceDatasetDescription,
269 CSLConstList papszOpenOptions = nullptr,
270 GDALAccess eAccess = GA_ReadOnly,
271 int bShared = FALSE,
272 const char *pszOwner = nullptr);
273
274 ~GDALProxyPoolDataset() override;
275
276 void SetOpenOptions(CSLConstList papszOpenOptions);
277
278 // If size (nBlockXSize&nBlockYSize) parameters is zero
279 // they will be loaded when RefUnderlyingRasterBand function is called.
280 // But in this case we cannot use them in other non-virtual methods before
281 // RefUnderlyingRasterBand fist call.
282 void AddSrcBandDescription(GDALDataType eDataType, int nBlockXSize,
283 int nBlockYSize);
284
285 // Used by VRT SimpleSource to add a single GDALProxyPoolRasterBand while
286 // keeping all other bands initialized to a nullptr. This is under the
287 // assumption, VRT SimpleSource will not have to access any other bands than
288 // the one added.
289 void AddSrcBand(int nBand, GDALDataType eDataType, int nBlockXSize,
290 int nBlockYSize);
291 CPLErr FlushCache(bool bAtClosing) override;
292
293 const OGRSpatialReference *GetSpatialRef() const override;
294 CPLErr SetSpatialRef(const OGRSpatialReference *poSRS) override;
295
296 CPLErr GetGeoTransform(double *) override;
297 CPLErr SetGeoTransform(double *) override;
298
299 // Special behavior for the following methods : they return a pointer
300 // data type, that must be cached by the proxy, so it doesn't become invalid
301 // when the underlying object get closed.
302 char **GetMetadata(const char *pszDomain) override;
303 const char *GetMetadataItem(const char *pszName,
304 const char *pszDomain) override;
305
306 void *GetInternalHandle(const char *pszRequest) override;
307
308 const OGRSpatialReference *GetGCPSpatialRef() const override;
309 const GDAL_GCP *GetGCPs() override;
310
311 private:
312 CPL_DISALLOW_COPY_ASSIGN(GDALProxyPoolDataset)
313};
314
315/* ******************************************************************** */
316/* GDALProxyPoolRasterBand */
317/* ******************************************************************** */
318
319class GDALProxyPoolOverviewRasterBand;
320class GDALProxyPoolMaskBand;
321
322class CPL_DLL GDALProxyPoolRasterBand : public GDALProxyRasterBand
323{
324 private:
325 CPLHashSet *metadataSet = nullptr;
326 CPLHashSet *metadataItemSet = nullptr;
327 char *pszUnitType = nullptr;
328 char **papszCategoryNames = nullptr;
329 GDALColorTable *poColorTable = nullptr;
330
331 int nSizeProxyOverviewRasterBand = 0;
332 GDALProxyPoolOverviewRasterBand **papoProxyOverviewRasterBand = nullptr;
333 GDALProxyPoolMaskBand *poProxyMaskBand = nullptr;
334
335 protected:
337 RefUnderlyingRasterBand(bool bForceOpen = true) const override;
338 void UnrefUnderlyingRasterBand(
339 GDALRasterBand *poUnderlyingRasterBand) const override;
340
341 friend class GDALProxyPoolOverviewRasterBand;
342 friend class GDALProxyPoolMaskBand;
343
344 public:
345 GDALProxyPoolRasterBand(GDALProxyPoolDataset *poDS, int nBand,
346 GDALDataType eDataType, int nBlockXSize,
347 int nBlockYSize);
348 GDALProxyPoolRasterBand(GDALProxyPoolDataset *poDS,
349 GDALRasterBand *poUnderlyingRasterBand);
350 ~GDALProxyPoolRasterBand() override;
351
352 void AddSrcMaskBandDescription(GDALDataType eDataType, int nBlockXSize,
353 int nBlockYSize);
354
355 void AddSrcMaskBandDescriptionFromUnderlying();
356
357 // Special behavior for the following methods : they return a pointer
358 // data type, that must be cached by the proxy, so it doesn't become invalid
359 // when the underlying object get closed.
360 char **GetMetadata(const char *pszDomain) override;
361 const char *GetMetadataItem(const char *pszName,
362 const char *pszDomain) override;
363 char **GetCategoryNames() override;
364 const char *GetUnitType() override;
365 GDALColorTable *GetColorTable() override;
366 GDALRasterBand *GetOverview(int) override;
368 GetRasterSampleOverview(GUIntBig nDesiredSamples) override; // TODO
369 GDALRasterBand *GetMaskBand() override;
370
371 CPLErr FlushCache(bool bAtClosing) override;
372
373 private:
374 CPL_DISALLOW_COPY_ASSIGN(GDALProxyPoolRasterBand)
375};
376
377/* ******************************************************************** */
378/* GDALProxyPoolOverviewRasterBand */
379/* ******************************************************************** */
380
381class GDALProxyPoolOverviewRasterBand : public GDALProxyPoolRasterBand
382{
383 private:
384 GDALProxyPoolRasterBand *poMainBand = nullptr;
385 int nOverviewBand = 0;
386
387 mutable GDALRasterBand *poUnderlyingMainRasterBand = nullptr;
388 mutable int nRefCountUnderlyingMainRasterBand = 0;
389
390 CPL_DISALLOW_COPY_ASSIGN(GDALProxyPoolOverviewRasterBand)
391
392 protected:
394 RefUnderlyingRasterBand(bool bForceOpen = true) const override;
395 void UnrefUnderlyingRasterBand(
396 GDALRasterBand *poUnderlyingRasterBand) const override;
397
398 public:
399 GDALProxyPoolOverviewRasterBand(GDALProxyPoolDataset *poDS,
400 GDALRasterBand *poUnderlyingOverviewBand,
401 GDALProxyPoolRasterBand *poMainBand,
402 int nOverviewBand);
403 ~GDALProxyPoolOverviewRasterBand() override;
404};
405
406/* ******************************************************************** */
407/* GDALProxyPoolMaskBand */
408/* ******************************************************************** */
409
410class GDALProxyPoolMaskBand : public GDALProxyPoolRasterBand
411{
412 private:
413 GDALProxyPoolRasterBand *poMainBand = nullptr;
414
415 mutable GDALRasterBand *poUnderlyingMainRasterBand = nullptr;
416 mutable int nRefCountUnderlyingMainRasterBand = 0;
417
418 CPL_DISALLOW_COPY_ASSIGN(GDALProxyPoolMaskBand)
419
420 protected:
422 RefUnderlyingRasterBand(bool bForceOpen = true) const override;
423 void UnrefUnderlyingRasterBand(
424 GDALRasterBand *poUnderlyingRasterBand) const override;
425
426 public:
427 GDALProxyPoolMaskBand(GDALProxyPoolDataset *poDS,
428 GDALRasterBand *poUnderlyingMaskBand,
429 GDALProxyPoolRasterBand *poMainBand);
430 GDALProxyPoolMaskBand(GDALProxyPoolDataset *poDS,
431 GDALProxyPoolRasterBand *poMainBand,
432 GDALDataType eDataType, int nBlockXSize,
433 int nBlockYSize);
434 ~GDALProxyPoolMaskBand() override;
435
436 bool IsMaskBand() const override
437 {
438 return true;
439 }
440};
441
442#endif
443
444/* ******************************************************************** */
445/* C types and methods declarations */
446/* ******************************************************************** */
447
449
450typedef struct GDALProxyPoolDatasetHS *GDALProxyPoolDatasetH;
451
452GDALProxyPoolDatasetH CPL_DLL GDALProxyPoolDatasetCreate(
453 const char *pszSourceDatasetDescription, int nRasterXSize, int nRasterYSize,
454 GDALAccess eAccess, int bShared, const char *pszProjectionRef,
455 double *padfGeoTransform);
456
457void CPL_DLL
458GDALProxyPoolDatasetDelete(GDALProxyPoolDatasetH hProxyPoolDataset);
459
460void CPL_DLL GDALProxyPoolDatasetAddSrcBandDescription(
461 GDALProxyPoolDatasetH hProxyPoolDataset, GDALDataType eDataType,
462 int nBlockXSize, int nBlockYSize);
463
464int CPL_DLL GDALGetMaxDatasetPoolSize(void);
465
467
468#endif /* #ifndef DOXYGEN_SKIP */
469
470#endif /* GDAL_PROXY_H_INCLUDED */
String list class designed around our use of C "char**" string lists.
Definition: cpl_string.h:436
A color table / palette.
Definition: gdal_priv.h:1362
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:495
virtual CPLErr AdviseRead(int nXOff, int nYOff, int nXSize, int nYSize, int nBufXSize, int nBufYSize, GDALDataType eDT, int nBandCount, int *panBandList, char **papszOptions)
Advise driver of upcoming read requests.
Definition: gdaldataset.cpp:3038
char ** GetMetadataDomainList() override
Fetch list of metadata domains.
Definition: gdaldataset.cpp:4774
virtual void * GetInternalHandle(const char *pszHandleName)
Fetch a format specific internally meaningful handle.
Definition: gdaldataset.cpp:1478
CPLErr BuildOverviews(const char *pszResampling, int nOverviews, const int *panOverviewList, int nListBands, const int *panBandList, GDALProgressFunc pfnProgress, void *pProgressData, CSLConstList papszOptions)
Build raster overview(s)
Definition: gdaldataset.cpp:2131
virtual CPLErr CreateMaskBand(int nFlagsIn)
Adds a mask band to the dataset.
Definition: gdaldataset.cpp:3349
virtual CPLStringList GetCompressionFormats(int nXOff, int nYOff, int nXSize, int nYSize, int nBandCount, const int *panBandList)
Return the compression formats that can be natively obtained for the window of interest and requested...
Definition: gdaldataset.cpp:9878
virtual int GetGCPCount()
Get number of GCPs.
Definition: gdaldataset.cpp:1774
virtual CPLErr GetGeoTransform(double *padfTransform)
Fetch the affine transformation coefficients.
Definition: gdaldataset.cpp:1380
virtual const OGRSpatialReference * GetGCPSpatialRef() const
Get output spatial reference system for GCPs.
Definition: gdaldataset.cpp:1864
CPLErr SetMetadata(char **papszMetadata, const char *pszDomain) override
Set metadata.
virtual CPLErr SetSpatialRef(const OGRSpatialReference *poSRS)
Set the spatial reference system for this dataset.
Definition: gdaldataset.cpp:1301
virtual GDALDriver * GetDriver(void)
Fetch the driver to which this dataset relates.
Definition: gdaldataset.cpp:1516
virtual CPLErr FlushCache(bool bAtClosing=false)
Flush all write cached data to disk.
Definition: gdaldataset.cpp:550
virtual CPLErr SetGeoTransform(double *padfTransform)
Set the affine transformation coefficients.
Definition: gdaldataset.cpp:1434
virtual CPLErr SetGCPs(int nGCPCount, const GDAL_GCP *pasGCPList, const OGRSpatialReference *poGCP_SRS)
Assign GCPs.
Definition: gdaldataset.cpp:2028
virtual const OGRSpatialReference * GetSpatialRef() const
Fetch the spatial reference for this dataset.
Definition: gdaldataset.cpp:1196
CPLErr SetMetadataItem(const char *pszName, const char *pszValue, const char *pszDomain) override
Set single metadata item.
void static void char ** GetMetadata(const char *pszDomain="") override
Fetch metadata.
Definition: gdaldataset.cpp:4668
virtual const GDAL_GCP * GetGCPs()
Fetch GCPs.
Definition: gdaldataset.cpp:1921
virtual char ** GetFileList(void)
Fetch files forming dataset.
Definition: gdaldataset.cpp:3231
virtual CPLErr ReadCompressedData(const char *pszFormat, int nXOff, int nYOff, int nXSize, int nYSize, int nBands, const int *panBandList, void **ppBuffer, size_t *pnBufferSize, char **ppszDetailedFormat)
Return the compressed content that can be natively obtained for the window of interest and requested ...
Definition: gdaldataset.cpp:10108
Format specific driver.
Definition: gdal_priv.h:2124
virtual const char * GetMetadataItem(const char *pszName, const char *pszDomain="")
Fetch single metadata item.
Definition: gdalmajorobject.cpp:325
The GDALRasterAttributeTable (or RAT) class is used to encapsulate a table used to provide attribute ...
Definition: gdal_rat.h:32
A single raster band (or channel).
Definition: gdal_priv.h:1519
A single raster block in the block cache.
Definition: gdal_priv.h:1204
This class represents an OpenGIS Spatial Reference System, and contains methods for converting betwee...
Definition: ogr_spatialref.h:153
CPLErr
Error category.
Definition: cpl_error.h:37
Hash set implementation.
struct _CPLHashSet CPLHashSet
Opaque type for a hash set.
Definition: cpl_hash_set.h:36
unsigned long long GUIntBig
Large unsigned integer type (generally 64-bit unsigned integer type).
Definition: cpl_port.h:202
#define CPL_C_END
Macro to end a block of C symbols.
Definition: cpl_port.h:283
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:279
#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:1030
char ** CSLConstList
Type of a constant null-terminated list of nul terminated strings.
Definition: cpl_port.h:1179
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition: cpl_port.h:199
struct CPLVirtualMem CPLVirtualMem
Opaque type that represents a virtual memory mapping.
Definition: cpl_virtualmem.h:46
Public (C callable) GDAL entry points.
GIntBig GSpacing
Type to express pixel, line or band spacing.
Definition: gdal.h:400
GDALAccess
Definition: gdal.h:110
@ GA_ReadOnly
Definition: gdal.h:111
GDALDataType
Definition: gdal.h:48
GDALRIOResampleAlg
RasterIO() resampling method.
Definition: gdal.h:128
GDALColorInterp
Types of color interpretation for raster bands.
Definition: gdal.h:257
GDALRWFlag
Definition: gdal.h:117
C++ GDAL entry points.
GDALMaskValueRange
Range of values found in a mask band.
Definition: gdal_priv.h:1490
Structure to pass extra arguments to RasterIO() method, must be initialized with INIT_RASTERIO_EXTRA_...
Definition: gdal.h:161
Ground Control Point.
Definition: gdal.h:1168