1 // SPDX-License-Identifier: MIT
3 * Copyright 2022-2023 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
6 #ifndef SIDE_ABI_TYPE_VALUE_H
7 #define SIDE_ABI_TYPE_VALUE_H
10 #include <side/macros.h>
11 #include <side/endian.h>
13 enum side_type_label_byte_order
{
14 SIDE_TYPE_BYTE_ORDER_LE
= 0,
15 SIDE_TYPE_BYTE_ORDER_BE
= 1,
18 union side_integer_value
{
30 side_check_size(union side_integer_value
, 32);
32 union side_bool_value
{
39 side_check_size(union side_bool_value
, 32);
41 union side_float_value
{
43 _Float16 side_float_binary16
;
46 _Float32 side_float_binary32
;
49 _Float64 side_float_binary64
;
52 _Float128 side_float_binary128
;
56 side_check_size(union side_float_value
, 32);
58 struct side_type_raw_string
{
59 side_ptr_t(const void) p
; /* pointer to string */
60 uint8_t unit_size
; /* 1, 2, or 4 bytes */
61 side_enum_t(enum side_type_label_byte_order
, uint8_t) byte_order
;
63 side_check_size(struct side_type_raw_string
, 18);
65 #endif /* SIDE_ABI_TYPE_VALUE_H */