lucenaBAL
2.0.0.20
Lucena Build Abstraction Library for C++
|
Provides feature detection describing the capabilities of platform. More...
LBAL_TYPE | |
These identify characteristics of certain POD types for a given compiler; preprocessor definitions are used since | |
#define | LBAL_TYPE_HAS_INT64 |
#define | LBAL_TYPE_HAS_INT128 |
#define | LBAL_TYPE_EXACT_WIDTH_INTEGERS |
#define | LBAL_TYPE_DOUBLE_GT_FLOAT |
#define | LBAL_TYPE_LONG_DOUBLE_GT_DOUBLE |
#define | LBAL_TYPE_WCHAR_T_IS_16_BITS |
LBAL_FEATURE | |
Some compilers and platforms do things in a peculiar way that we may need to work around or otherwise deal with. Those features are noted here. | |
#define | LBAL_FEATURE_UTF16_FILE_SYSTEM |
File system requires UTF-16 encoding. More... | |
#define | LBAL_FEATURE_CONSTEXPR_INTRINSICS |
Indicate whether the current compiler’s intrinsics are constant expressions in the C++ sense. More... | |
Provides feature detection describing the capabilities of platform.
These are all simple availability flags, and will be set to 1
if a feature is available and 0
otherwise.
Mostly, the platform features are actually compiler features whose availability is intentionally dependent on the target platform.
#define LBAL_FEATURE_CONSTEXPR_INTRINSICS |
Indicate whether the current compiler’s intrinsics are constant expressions in the C++ sense.
In the absence of a means to identify whether a given function is constexpr at compile-time, we rely on tools like this to aid us in determining, expression-by-expression, whether a given function is probably able to be declared constexpr.
#define LBAL_FEATURE_UTF16_FILE_SYSTEM |
File system requires UTF-16 encoding.
It is assumed that the file system uses UTF-8 encoding unless this feature conditional is set.
#define LBAL_TYPE_DOUBLE_GT_FLOAT |
double
is distinct from float
#define LBAL_TYPE_EXACT_WIDTH_INTEGERS |
availability of C99 exact width int
types
#define LBAL_TYPE_HAS_INT128 |
native 128-bit ints
- including usigned int
s - as __int128_t
and __uint128_t
#define LBAL_TYPE_HAS_INT64 |
native 64-bit int
s - including usigned int
s - as int64_t
and uint64_t
(and possibly also long long
and unsigned long long
, depending)
#define LBAL_TYPE_LONG_DOUBLE_GT_DOUBLE |
long double
is distinct from double
#define LBAL_TYPE_WCHAR_T_IS_16_BITS |
if this is 0
, wchar_t
is assumed to be a 32-bit integer type