|
GDAL
|
Core portability definitions for CPL. More...
#include "cpl_config.h"#include <stdio.h>#include <stdlib.h>#include <math.h>#include <stdarg.h>#include <string.h>#include <ctype.h>#include <limits.h>#include <time.h>#include <errno.h>#include <locale.h>#include <strings.h>Go to the source code of this file.
Defines | |
| #define | GINTBIG_MIN ((GIntBig)(0x80000000) << 32) |
| Minimum GIntBig value. | |
| #define | GINTBIG_MAX (((GIntBig)(0x7FFFFFFF) << 32) | 0xFFFFFFFFU) |
| Maximum GIntBig value. | |
| #define | GUINTBIG_MAX (((GUIntBig)(0xFFFFFFFFU) << 32) | 0xFFFFFFFFU) |
| Maximum GUIntBig value. | |
| #define | GINT64_MIN GINTBIG_MIN |
| Minimum GInt64 value. | |
| #define | GINT64_MAX GINTBIG_MAX |
| Maximum GInt64 value. | |
| #define | GUINT64_MAX GUINTBIG_MAX |
| Minimum GUInt64 value. | |
| #define | CPL_FRMT_GB_WITHOUT_PREFIX "ll" |
| Printf formatting suffix for GIntBig. | |
| #define | CPL_FRMT_GIB "%" CPL_FRMT_GB_WITHOUT_PREFIX "d" |
| Printf formatting for GIntBig. | |
| #define | CPL_FRMT_GUIB "%" CPL_FRMT_GB_WITHOUT_PREFIX "u" |
| Printf formatting for GUIntBig. | |
| #define | CPL_C_START extern "C" { |
| Macro to start a block of C symbols. | |
| #define | CPL_C_END } |
| Macro to end a block of C symbols. | |
| #define | CPL_SWAP16(x) ((GUInt16)( ((GUInt16)(x) << 8) | ((GUInt16)(x) >> 8) )) |
| Byte-swap a 16bit unsigned integer. | |
| #define | CPL_SWAP32(x) |
| Byte-swap a 32bit unsigned integer. | |
| #define | CPL_SWAP64(x) |
| Byte-swap a 64bit unsigned integer. | |
| #define | CPL_SWAP16PTR(x) |
| Byte-swap a 16 bit pointer. | |
| #define | CPL_SWAP32PTR(x) |
| Byte-swap a 32 bit pointer. | |
| #define | CPL_SWAP64PTR(x) |
| Byte-swap a 64 bit pointer. | |
| #define | CPL_SWAPDOUBLE(p) CPL_SWAP64PTR(p) |
| Byte-swap a 64 bit pointer. | |
| #define | CPL_LSBWORD16(x) (x) |
| Return a 16bit word from a originally LSB ordered word. | |
| #define | CPL_MSBWORD16(x) CPL_SWAP16(x) |
| Return a 16bit word from a originally MSB ordered word. | |
| #define | CPL_LSBWORD32(x) (x) |
| Return a 32bit word from a originally LSB ordered word. | |
| #define | CPL_MSBWORD32(x) CPL_SWAP32(x) |
| Return a 32bit word from a originally MSB ordered word. | |
| #define | CPL_LSBPTR16(x) CPL_STATIC_ASSERT_IF_AVAILABLE(sizeof(*(x)) == 1 || sizeof(*(x)) == 2) |
| Byte-swap if necessary a 16bit word at the location pointed from a originally LSB ordered pointer. | |
| #define | CPL_MSBPTR16(x) CPL_SWAP16PTR(x) |
| Byte-swap if necessary a 16bit word at the location pointed from a originally MSB ordered pointer. | |
| #define | CPL_LSBPTR32(x) CPL_STATIC_ASSERT_IF_AVAILABLE(sizeof(*(x)) == 1 || sizeof(*(x)) == 4) |
| Byte-swap if necessary a 32bit word at the location pointed from a originally LSB ordered pointer. | |
| #define | CPL_MSBPTR32(x) CPL_SWAP32PTR(x) |
| Byte-swap if necessary a 32bit word at the location pointed from a originally MSB ordered pointer. | |
| #define | CPL_LSBPTR64(x) CPL_STATIC_ASSERT_IF_AVAILABLE(sizeof(*(x)) == 1 || sizeof(*(x)) == 8) |
| Byte-swap if necessary a 64bit word at the location pointed from a originally LSB ordered pointer. | |
| #define | CPL_MSBPTR64(x) CPL_SWAP64PTR(x) |
| Byte-swap if necessary a 64bit word at the location pointed from a originally MSB ordered pointer. | |
| #define | CPL_LSBINT16PTR(x) ((*(GByte*)(x)) | (*(((GByte*)(x))+1) << 8)) |
| Return a Int16 from the 2 bytes ordered in LSB order at address x. | |
| #define | CPL_LSBINT32PTR(x) |
| Return a Int32 from the 4 bytes ordered in LSB order at address x. | |
| #define | CPL_LSBSINT16PTR(x) ((GInt16) CPL_LSBINT16PTR(x)) |
| Return a signed Int16 from the 2 bytes ordered in LSB order at address x. | |
| #define | CPL_LSBUINT16PTR(x) ((GUInt16)CPL_LSBINT16PTR(x)) |
| Return a unsigned Int16 from the 2 bytes ordered in LSB order at address x. | |
| #define | CPL_LSBSINT32PTR(x) ((GInt32) CPL_LSBINT32PTR(x)) |
| Return a signed Int32 from the 4 bytes ordered in LSB order at address x. | |
| #define | CPL_LSBUINT32PTR(x) ((GUInt32)CPL_LSBINT32PTR(x)) |
| Return a unsigned Int32 from the 4 bytes ordered in LSB order at address x. | |
| #define | CPL_NULL_TERMINATED |
| Null terminated variadic. | |
| #define | CPL_PRINT_FUNC_FORMAT(format_idx, arg_idx) |
| Tag a function to have printf() formatting. | |
| #define | CPL_SCAN_FUNC_FORMAT(format_idx, arg_idx) |
| Tag a function to have scanf() formatting. | |
| #define | CPL_FORMAT_STRING(arg) arg |
| Macro into which to wrap the format argument of a printf-like function. | |
| #define | CPL_SCANF_FORMAT_STRING(arg) arg |
| Macro into which to wrap the format argument of a sscanf-like function. | |
| #define | CPL_WARN_UNUSED_RESULT |
| Qualifier to warn when the return value of a function is not used. | |
| #define | CPL_UNUSED |
| Qualifier for an argument that is unused. | |
| #define | CPL_NO_RETURN |
| Qualifier for a function that does not return at all (terminates the process) | |
| #define | CPL_RETURNS_NONNULL |
| Qualifier for a function that does not return NULL. | |
| #define | CPL_RESTRICT |
| restrict keyword to declare that pointers do not alias | |
| #define | CPL_OVERRIDE |
| To be used in public headers only. | |
| #define | CPL_FINAL |
| C++11 final qualifier. | |
| #define | CPL_DISALLOW_COPY_ASSIGN(ClassName) |
| Helper to remove the copy and assignment constructors so that the compiler will not generate the default versions. | |
| #define | CPL_ARRAYSIZE(array) |
| Returns the size of C style arrays. | |
| #define | CPL_FALLTHROUGH |
| Macro for fallthrough in a switch case construct. | |
Typedefs | |
| typedef int | GInt32 |
| Int32 type. | |
| typedef unsigned int | GUInt32 |
| Unsigned int32 type. | |
| typedef short | GInt16 |
| Int16 type. | |
| typedef unsigned short | GUInt16 |
| Unsigned int16 type. | |
| typedef unsigned char | GByte |
| Unsigned byte type. | |
| typedef long long | GIntBig |
| Large signed integer type (generally 64-bit integer type). | |
| typedef unsigned long long | GUIntBig |
| Large unsigned integer type (generally 64-bit unsigned integer type). | |
| typedef GIntBig | GInt64 |
| Signed 64 bit integer type. | |
| typedef GUIntBig | GUInt64 |
| Unsigned 64 bit integer type. | |
| typedef int | GPtrDiff_t |
| Integer type large enough to hold the difference between 2 addresses. | |
Core portability definitions for CPL.
| #define CPL_ARRAYSIZE | ( | array | ) |
((sizeof(array) / sizeof(*(array))) / \ static_cast<size_t>(!(sizeof(array) % sizeof(*(array)))))
Returns the size of C style arrays.
| #define CPL_DISALLOW_COPY_ASSIGN | ( | ClassName | ) |
ClassName( const ClassName & ); \ ClassName &operator=( const ClassName & );
Helper to remove the copy and assignment constructors so that the compiler will not generate the default versions.
Must be placed in the private section of a class and should be at the end.
| #define CPL_LSBINT16PTR | ( | x | ) | ((*(GByte*)(x)) | (*(((GByte*)(x))+1) << 8)) |
Return a Int16 from the 2 bytes ordered in LSB order at address x.
| #define CPL_LSBINT32PTR | ( | x | ) |
((*(GByte*)(x)) | (*(((GByte*)(x))+1) << 8) | \ (*(((GByte*)(x))+2) << 16) | (*(((GByte*)(x))+3) << 24))
Return a Int32 from the 4 bytes ordered in LSB order at address x.
| #define CPL_OVERRIDE |
To be used in public headers only.
For non-public headers or .cpp files, use override directly.
| #define CPL_SCANF_FORMAT_STRING | ( | arg | ) | arg |
Macro into which to wrap the format argument of a sscanf-like function.
| #define CPL_SWAP16PTR | ( | x | ) |
{ \
GByte byTemp, *_pabyDataT = (GByte *) (x); \
CPL_STATIC_ASSERT_IF_AVAILABLE(sizeof(*(x)) == 1 || sizeof(*(x)) == 2); \
\
byTemp = _pabyDataT[0]; \
_pabyDataT[0] = _pabyDataT[1]; \
_pabyDataT[1] = byTemp; \
}
Byte-swap a 16 bit pointer.
| #define CPL_SWAP32 | ( | x | ) |
| #define CPL_SWAP32PTR | ( | x | ) |
{ \
GByte byTemp, *_pabyDataT = (GByte *) (x); \
CPL_STATIC_ASSERT_IF_AVAILABLE(sizeof(*(x)) == 1 || sizeof(*(x)) == 4); \
\
byTemp = _pabyDataT[0]; \
_pabyDataT[0] = _pabyDataT[3]; \
_pabyDataT[3] = byTemp; \
byTemp = _pabyDataT[1]; \
_pabyDataT[1] = _pabyDataT[2]; \
_pabyDataT[2] = byTemp; \
}
Byte-swap a 32 bit pointer.
| #define CPL_SWAP64 | ( | x | ) |
(((GUInt64)(CPL_SWAP32((GUInt32)(x))) << 32) | \ (GUInt64)(CPL_SWAP32((GUInt32)((GUInt64)(x) >> 32))))
Byte-swap a 64bit unsigned integer.
| #define CPL_SWAP64PTR | ( | x | ) |
{ \
GByte byTemp, *_pabyDataT = (GByte *) (x); \
CPL_STATIC_ASSERT_IF_AVAILABLE(sizeof(*(x)) == 1 || sizeof(*(x)) == 8); \
\
byTemp = _pabyDataT[0]; \
_pabyDataT[0] = _pabyDataT[7]; \
_pabyDataT[7] = byTemp; \
byTemp = _pabyDataT[1]; \
_pabyDataT[1] = _pabyDataT[6]; \
_pabyDataT[6] = byTemp; \
byTemp = _pabyDataT[2]; \
_pabyDataT[2] = _pabyDataT[5]; \
_pabyDataT[5] = byTemp; \
byTemp = _pabyDataT[3]; \
_pabyDataT[3] = _pabyDataT[4]; \
_pabyDataT[4] = byTemp; \
}
Byte-swap a 64 bit pointer.
| typedef long long GIntBig |
Large signed integer type (generally 64-bit integer type).
Use GInt64 when exactly 64 bit is needed
| typedef unsigned long long GUIntBig |
Large unsigned integer type (generally 64-bit unsigned integer type).
Use GUInt64 when exactly 64 bit is needed
1.7.6.1.