|
CHERIoT RTOS
A compartmentalised RTOS for CHERIoT hardware
|

Macros | |
| #define | BITPACK_HAS_MACRO_MAP |
| An in-situ probe for the #include-sion of <__macro_map.h>. | |
| #define | BITPACK_MAP_DECLTYPE_HELPER(x, b) |
| Map function for BITPACK_MAP_DECLTYPE. | |
| #define | BITPACK_MAP_DECLTYPE(b, ...) |
| Given bitpack b, qualify each additional argument with decltype(b). | |
| #define | BITPACK_MAP_DEPENDENT_HELPER(x, b) |
| Map function for BITPACK_MAP_DEPENDENT. | |
| #define | BITPACK_MAP_DEPENDENT(b, ...) |
| Given bitpack b, qualify each additional argument with typename
decltype(b). | |
| #define | BITPACK_MAP_WITHS_HELPER(x) |
| Map function for BITPACK_WITHS. | |
| #define BITPACK_HAS_MACRO_MAP |
An in-situ probe for the #include-sion of <__macro_map.h>.
While we could gate our behavior on #if defined(CHERIOT_EVAL0), for example, that would require that <__macro_map.h> be included before us, which is slightly rude. Instead, we can take creative advantage of the syntactic primitives __macro_map.h uses internally and some C++ quirks to (ab)usefully test the behavior of CHERIOT_EVAL0 at each expansion of this macro.
In terms of operation, this relies on U CHERIOT_EVAL0(T); meaning one of two very different things and so dramatically changing what the subsequent sizeof(T) means.
Definition at line 1352 of file bitpack.hh.
| #define BITPACK_MAP_DECLTYPE | ( | b, | |
| ... ) |
Given bitpack b, qualify each additional argument with decltype(b).
That is, BITPACK_MAP_DECLTYPE(b, X, Y) evalutes to decltype(b)::X, decltype(b)::Y.
This requires #include <__macro_map.h> (and will give confusing error messages if not included). (Because this is very much a C++ token level hack, unlike the other __macro_map users, it's hard for us to statically assert and give nice error messages.)
Definition at line 1380 of file bitpack.hh.
| #define BITPACK_MAP_DECLTYPE_HELPER | ( | x, | |
| b ) |
Map function for BITPACK_MAP_DECLTYPE.
Definition at line 1367 of file bitpack.hh.
| #define BITPACK_MAP_DEPENDENT | ( | b, | |
| ... ) |
Given bitpack b, qualify each additional argument with typename decltype(b).
That is, BITPACK_DEPENDENT(b, X, Y) evalutes to typename decltype(b)::X, typename decltype(b)::Y.
This requires #include <__macro_map.h>.
Definition at line 1394 of file bitpack.hh.
| #define BITPACK_MAP_DEPENDENT_HELPER | ( | x, | |
| b ) |
Map function for BITPACK_MAP_DEPENDENT.
Definition at line 1384 of file bitpack.hh.
| #define BITPACK_MAP_WITHS_HELPER | ( | x | ) |