ae2f::Core
Loading...
Searching...
No Matches
BitVec.h
Go to the documentation of this file.
1
#if !defined(ae2f_Macro_BitVector_h)
2
#define ae2f_Macro_BitVector_h
3
4
#include "
Cast.h
"
5
#include "
Cmp.h
"
6
#include <stdint.h>
7
10
typedef
uint8_t
ae2f_Macro_BitVecI_t
;
11
15
#define _ae2f_Macro_BitVec_Filled(len, vec_t) ae2f_static_cast(vec_t, (sizeof(vec_t) << 3) == (len) ? ae2f_static_cast(vec_t, -1) : (ae2f_static_cast(vec_t, ae2f_static_cast(vec_t, 1) << (len)) - 1))
16
19
#define ae2f_Macro_BitVec_Filled(len) _ae2f_Macro_BitVec_Filled(len, size_t)
20
29
#define _ae2f_Macro_BitVec_GetRanged(vector, start, end, vec_t) (((vector) >> (start)) & _ae2f_Macro_BitVec_Filled((end) - (start), vec_t))
30
38
#define ae2f_Macro_BitVec_GetRanged(vector, start, end) _ae2f_Macro_BitVec_GetRanged(vector, ae2f_Macro_Cmp_TakeLs(start, end), ae2f_Macro_Cmp_TakeGt(start, end), size_t)
39
45
#define ae2f_Macro_BitVec_Get(vector, idx) ae2f_Macro_BitVec_GetRanged(vector, idx, (idx) + 1)
46
56
#define _ae2f_Macro_BitVec_SetRanged(vector, start, end, val, vec_t) ((vector) & (~((_ae2f_Macro_BitVec_Filled((end) - (start), vec_t)) << start)) | ((val) << start))
57
65
#define ae2f_Macro_BitVec_SetRanged(vector, start, end, val) _ae2f_Macro_BitVec_SetRanged(vector, ae2f_Macro_Cmp_TakeLs(start, end), ae2f_Macro_Cmp_TakeGt(start, end), (val) & ae2f_Macro_BitVec_Filled(ae2f_Macro_Cmp_Diff(start, end)), size_t)
66
72
#define ae2f_Macro_BitVec_Set(vector, idx, val) ae2f_Macro_BitVec_SetRanged(vector, idx, (idx) + 1, val)
73
74
#endif
// !defined(ae2f_Macro_BitVector_h)
ae2f_Macro_BitVecI_t
uint8_t ae2f_Macro_BitVecI_t
The pre-defined index type for Bit vector.
Definition
BitVec.h:10
Cast.h
Cmp.h
include
ae2f
Macro
BitVec.h
Generated by
1.12.0