Veritable Lasagna
An Allocator & Data Structure Library for C.
Loading...
Searching...
No Matches
vl_numtypes.h
Go to the documentation of this file.
1
14#ifndef VL_NUMTYPES_H
15#define VL_NUMTYPES_H
16
17#include <vl/vl_libconfig.h>
18
19typedef enum vl_numtype_
20{
21 VL_NUMTYPE_DSOFFS,
22 VL_NUMTYPE_DSIDX,
23
24#ifdef VL_U8_T
25 VL_NUMTYPE_UINT8,
26#endif
27
28#ifdef VL_U16_T
29 VL_NUMTYPE_UINT16,
30#endif
31
32#ifdef VL_U32_T
33 VL_NUMTYPE_UINT32,
34#endif
35
36#ifdef VL_U64_T
37 VL_NUMTYPE_UINT64,
38#endif
39
40#ifdef VL_I8_T
41 VL_NUMTYPE_INT8,
42#endif
43
44#ifdef VL_I16_T
45 VL_NUMTYPE_INT16,
46#endif
47
48#ifdef VL_I32_T
49 VL_NUMTYPE_INT32,
50#endif
51
52#ifdef VL_I64_T
53 VL_NUMTYPE_INT64,
54#endif
55
56#ifdef VL_F32_T
57 VL_NUMTYPE_FLOAT32,
58#endif
59
60#ifdef VL_F64_T
61 VL_NUMTYPE_FLOAT64,
62#endif
63
64 VL_NUMTYPE_MAX
65} vl_numtype;
66
70typedef VL_STRUCTURE_OFFSET_T vl_dsoffs_t;
71
75typedef VL_STRUCTURE_INDEX_T vl_dsidx_t;
76
77#ifdef VL_U8_T
81typedef VL_U8_T vl_uint8_t;
82#endif
83
84#ifdef VL_U16_T
88typedef VL_U16_T vl_uint16_t;
89#endif
90
91#ifdef VL_U32_T
95typedef VL_U32_T vl_uint32_t;
96#endif
97
98#ifdef VL_U64_T
102typedef VL_U64_T vl_uint64_t;
103#endif
104
105#ifdef VL_I8_T
109typedef VL_I8_T vl_int8_t;
110#endif
111
112#ifdef VL_I16_T
116typedef VL_I16_T vl_int16_t;
117#endif
118
119#ifdef VL_I32_T
123typedef VL_I32_T vl_int32_t;
124#endif
125
126#ifdef VL_I64_T
130typedef VL_I64_T vl_int64_t;
131#endif
132
136typedef VL_ULARGE_T vl_ularge_t;
140typedef VL_ILARGE_T vl_ilarge_t;
144typedef VL_USMALL_T vl_usmall_t;
148typedef VL_ISMALL_T vl_ismall_t;
149
153typedef VL_INT_T vl_int_t;
154
158typedef VL_UINT_T vl_uint_t;
159
163typedef VL_UPTR_T vl_uintptr_t;
164
168typedef VL_IPTR_T vl_intptr_t;
169
173typedef VL_F32_T vl_float32_t;
174
175#ifdef VL_F64_T
179typedef VL_F64_T vl_float64_t;
180#endif
181
185typedef VL_FHIGHP_T vl_float_highp_t;
186
187#define VL_TRUE 1
188#define VL_FALSE 0
189
190#define VL_BOOL_T VL_USMALL_T
192
202typedef void (*vl_numtype_converter)(const void* src, void* dst);
203
213typedef void (*vl_numtype_normalizer)(const void* src, void* dst);
214
215typedef struct vl_numtype_info_
216{
217 vl_numtype type;
218 vl_uint16_t size;
219 vl_uint16_t alignment;
223
224 vl_numtype_converter typeConverters[VL_NUMTYPE_MAX];
226
230VL_API extern const vl_numtype_info VL_NUMTYPE_INFO[VL_NUMTYPE_MAX];
231
242static inline void vlNumTypeCast(const void* src, vl_numtype srcType, void* dst, vl_numtype dstType)
243{
244 VL_NUMTYPE_INFO[srcType].typeConverters[dstType](src, dst);
245}
246
247static inline vl_uint16_t vlNumTypeSizeof(vl_numtype type) { return VL_NUMTYPE_INFO[type].size; }
248
249#endif // VL_NUMTYPES_H
VL_ISMALL_T vl_ismall_t
Smallest available signed integer type.
Definition vl_numtypes.h:148
VL_UPTR_T vl_uintptr_t
Unsigned integer type suitable for expressing memory addresses.
Definition vl_numtypes.h:163
vl_numtype type
Definition vl_numtypes.h:217
vl_uint16_t alignment
Definition vl_numtypes.h:219
VL_UINT_T vl_uint_t
Standard unsigned integer type.
Definition vl_numtypes.h:158
VL_BOOL_T vl_bool_t
Definition vl_numtypes.h:191
vl_bool_t isSigned
Definition vl_numtypes.h:220
VL_IPTR_T vl_intptr_t
Signed integer type suitable for expressing memory addresses.
Definition vl_numtypes.h:168
VL_STRUCTURE_INDEX_T vl_dsidx_t
Index type for data structures.
Definition vl_numtypes.h:75
VL_USMALL_T vl_usmall_t
Smallest available unsigned integer type.
Definition vl_numtypes.h:144
VL_F32_T vl_float32_t
32-bit floating point number type.
Definition vl_numtypes.h:173
void(* vl_numtype_converter)(const void *src, void *dst)
Function pointer type for converting between numeric types.
Definition vl_numtypes.h:202
VL_FHIGHP_T vl_float_highp_t
Highest precision floating point number type.
Definition vl_numtypes.h:185
VL_ULARGE_T vl_ularge_t
Largest available unsigned integer type.
Definition vl_numtypes.h:136
VL_STRUCTURE_OFFSET_T vl_dsoffs_t
Byte offset type for data structures.
Definition vl_numtypes.h:70
void(* vl_numtype_normalizer)(const void *src, void *dst)
Function pointer type for converting between numeric types.
Definition vl_numtypes.h:213
VL_API const vl_numtype_info VL_NUMTYPE_INFO[VL_NUMTYPE_MAX]
Provides runtime numeric type introspection.
Definition vl_numtypes.c:420
vl_numtype_converter typeConverters[VL_NUMTYPE_MAX]
Definition vl_numtypes.h:224
vl_uint16_t size
Definition vl_numtypes.h:218
VL_ILARGE_T vl_ilarge_t
Largest available signed integer type.
Definition vl_numtypes.h:140
#define VL_BOOL_T
Definition vl_numtypes.h:190
vl_bool_t isInteger
Definition vl_numtypes.h:221
VL_INT_T vl_int_t
Standard signed integer type.
Definition vl_numtypes.h:153
vl_bool_t isFloating
Definition vl_numtypes.h:222
Definition vl_numtypes.h:216