Provides typedefs and routines for working with primitives. More...
#include "RCconfig.h"
#include "Macros.h"
#include <stdint.h>
#include <stddef.h>
#include <limits>
#include <cfloat>
#include <type_traits>
Go to the source code of this file.
Classes | |
class | RC::Endian |
Auto-detects the endianness of the compilation target, and provides automatic endian conversion features. More... | |
Namespaces | |
RC | |
Macros | |
#define | RC_HAVE_F80 |
Defined if the 80-bit float was found available on this system. | |
#define | RC_THREAD_LOCAL thread_local |
Provides thread_local if available. | |
#define | RC_NOEXCEPT noexcept |
Provides noexcept if available. | |
#define | RC_TYPE_TRUE_MACRO(StructName, Type) |
For adding a new float or integral type, where StructName is FloatType or IntegerType. More... | |
Typedefs | |
typedef int8_t | i8 |
8-bit signed integer. | |
typedef uint8_t | u8 |
8-bit unsigned integer. | |
typedef int16_t | i16 |
16-bit signed integer. | |
typedef uint16_t | u16 |
16-bit unsigned integer. | |
typedef int32_t | i32 |
32-bit signed integer. | |
typedef uint32_t | u32 |
32-bit unsigned integer. | |
typedef int64_t | i64 |
64-bit signed integer. | |
typedef uint64_t | u64 |
64-bit unsigned integer. | |
typedef float | f32 |
32-bit float. | |
typedef double | f64 |
64-bit float. | |
typedef long double | f80 |
80-bit float. (Note: Usually takes 16 bytes.) | |
typedef f128 | fBIGGEST |
The biggest float type available. | |
template<class FT > | |
using | RC::FuncPtr = FT * |
Clean C-style function pointers: FuncPtr<void(int)> f = &func; f(4);. | |
template<class C , class FT > | |
using | RC::MemFuncPtr = FT(C::*) |
Clean function pointer syntax for member function. More... | |
Functions | |
template<class T > | |
bool | RC::IsSignedType (const T &x __attribute__((unused))=0) |
True if the type is signed. More... | |
template<class T > | |
bool | RC::IsIntegerType (const T &x __attribute__((unused))=1) |
True if the type is an integer type. More... | |
template<class T > | |
void | RC::AssertFloat () |
For generating compilation errors if the type is not a float. | |
template<class T > | |
void | RC::AssertInteger () |
For generating compilation errors if the type is not an integer. | |
template<class T > | |
auto | RC::ForceFloat (T val) -> typename ForceFloatHelper< T, FloatType< T >::value >::type |
If T is a float type, return the same type. Otherwise return it as an f64. | |
template<class T > | |
std::make_unsigned< T >::type | RC::ForceUnsigned (T val) |
Returns the unsigned equivalent to the given type. | |
template<class T > | |
std::make_signed< T >::type | RC::ForceSigned (T val) |
Returns the signed equivalent to the given type. | |
template<class T > | |
T | RC::MIN_VAL (const T &x __attribute__((unused))=std::numeric_limits< T >::min()) |
Provide the minimum value held by this type. For floats, the smallest positive value. More... | |
template<class T > | |
T | RC::MAX_VAL (const T &x __attribute__((unused))=std::numeric_limits< T >::max()) |
Provide the maximum value held by this type. More... | |
template<class T > | |
T | RC::LOW_VAL (const T &x __attribute__((unused))=std::numeric_limits< T >::lowest()) |
Provide the lowest value held by this type, for which no value is less. More... | |
template<class T > | |
T | RC::MIN_POS (const T &x __attribute__((unused))=MIN_POS_Helper< T, FloatType< T >::value >::F()) |
Provide the minimum positive value held by this type. More... | |
Provides typedefs and routines for working with primitives.
#define RC_TYPE_TRUE_MACRO | ( | StructName, | |
Type | |||
) |
For adding a new float or integral type, where StructName is FloatType or IntegerType.