roo_io
API Documentation for roo_io
Loading...
Searching...
No Matches
ieee754.h
Go to the documentation of this file.
1
#pragma once
2
3
// IEEE754 availability detection.
4
//
5
// ROO_IO_IEEE754 is enabled if:
6
// 1) IEEE754 conformance macros indicate support, and
7
// 2) float/double endianness appears compatible with integer endianness.
8
//
9
// Overrides:
10
// - ROO_IO_FORCE_IEEE754: force enable regardless of auto-detection.
11
// - ROO_IO_DISABLE_IEEE754: force disable regardless of auto-detection.
12
13
#if defined(ROO_IO_FORCE_IEEE754)
14
#define ROO_IO_IEEE754 1
15
#elif defined(ROO_IO_DISABLE_IEEE754)
16
#define ROO_IO_IEEE754 0
17
#else
18
19
#if defined(__STDC_IEC_559__) || defined(__STDCPP_IEC_559__) || \
20
defined(__GCC_IEC_559)
21
#define ROO_IO_IEEE754_FORMAT 1
22
#else
23
#define ROO_IO_IEEE754_FORMAT 0
24
#endif
25
26
// Gate for float/integer endianness compatibility.
27
// If compiler exposes floating-point byte order, require it to match
28
// integer byte order. Otherwise, assume compatible by default.
29
#if defined(__FLOAT_WORD_ORDER__) && defined(__BYTE_ORDER__)
30
#define ROO_IO_IEEE754_ENDIAN_MATCH \
31
(__FLOAT_WORD_ORDER__ == __BYTE_ORDER__)
32
#elif defined(__FLOAT_WORD_ORDER) && defined(__BYTE_ORDER)
33
#define ROO_IO_IEEE754_ENDIAN_MATCH (__FLOAT_WORD_ORDER == __BYTE_ORDER)
34
#else
35
#define ROO_IO_IEEE754_ENDIAN_MATCH 1
36
#endif
37
38
#if ROO_IO_IEEE754_FORMAT && ROO_IO_IEEE754_ENDIAN_MATCH
39
#define ROO_IO_IEEE754 1
40
#else
41
#define ROO_IO_IEEE754 0
42
#endif
43
44
#endif
temp_repos
roo_io
src
roo_io
data
ieee754.h
Generated by
1.9.8