1 /*
2  *  Union to access IEEE float memory representation.
3  */
4 
5 #if !defined(DUK_FLTUNION_H_INCLUDED)
6 #define DUK_FLTUNION_H_INCLUDED
7 
8 #include "duk_internal.h"
9 
10 union duk_float_union {
11 	float f;
12 	duk_uint32_t ui[1];
13 	duk_uint16_t us[2];
14 	duk_uint8_t uc[4];
15 };
16 
17 typedef union duk_float_union duk_float_union;
18 
19 #if defined(DUK_USE_DOUBLE_LE) || defined(DUK_USE_DOUBLE_ME)
20 #define DUK_FLT_IDX_UI0    0
21 #define DUK_FLT_IDX_US0    1
22 #define DUK_FLT_IDX_US1    0
23 #define DUK_FLT_IDX_UC0    3
24 #define DUK_FLT_IDX_UC1    2
25 #define DUK_FLT_IDX_UC2    1
26 #define DUK_FLT_IDX_UC3    0
27 #elif defined(DUK_USE_DOUBLE_BE)
28 #define DUK_FLT_IDX_UI0    0
29 #define DUK_FLT_IDX_US0    0
30 #define DUK_FLT_IDX_US1    1
31 #define DUK_FLT_IDX_UC0    0
32 #define DUK_FLT_IDX_UC1    1
33 #define DUK_FLT_IDX_UC2    2
34 #define DUK_FLT_IDX_UC3    3
35 #else
36 #error internal error
37 #endif
38 
39 #endif  /* DUK_FLTUNION_H_INCLUDED */
40