Variant/algebraic data-type for holding the values of xrt_futures.
More...
#include "xrt/xrt_compiler.h"
#include "xrt/xrt_defines.h"
#include <assert.h>
Go to the source code of this file.
|
| #define | XRT_FUTURE_VALUE_TYPES_WITH(_, P) |
| |
|
#define | XRT_FUTURE_VALUE_WRAP_MACRO(N, T, M, X) X(N, T, M) |
| |
|
#define | XRT_FUTURE_VALUE_TYPES(X) XRT_FUTURE_VALUE_TYPES_WITH(XRT_FUTURE_VALUE_WRAP_MACRO, X) |
| |
|
#define | X_ENUM_ENTRY(TYPE_NAME, T, M) XRT_FUTURE_VALUE_TYPE_##TYPE_NAME, |
| |
|
#define | X_MEMBER_ENTRY(N, TYPE, MEMBER) TYPE MEMBER; |
| |
| #define | XRT_FUTURE_VALUE_MAKE(TYPE_NAME, MEMBER, VALUE) |
| |
|
#define | XRT_NULL_FUTURE_VALUE XRT_FUTURE_VALUE_MAKE(NONE, uint64_, 0) |
| |
| #define | X_MAKE_CONS_FN(TYPE_NAME, TYPE, MEMBER) |
| |
| #define | XRT_FUTURE_VALUE_TYPECASE(TYPE_NAME, TYPE, MEMBER, P) |
| |
| #define | xrt_future_value_make(VALUE) |
| |
|
|
typedef enum xrt_future_value_type | xrt_future_value_type_t |
| |
|
| enum | xrt_future_value_type {
XRT_FUTURE_VALUE_TYPE_NONE
, XRT_FUTURE_VALUE_TYPE_UINT64
, XRT_FUTURE_VALUE_TYPE_INT64
, XRT_FUTURE_VALUE_TYPE_LIST_END
,
XRT_FUTURE_VALUE_TYPE_COUNT = XRT_FUTURE_VALUE_TYPE_LIST_END - 1
} |
| |
◆ X_MAKE_CONS_FN
| #define X_MAKE_CONS_FN |
( |
|
TYPE_NAME, |
|
|
|
TYPE, |
|
|
|
MEMBER |
|
) |
| |
Value: static inline struct xrt_future_value xrt_future_value_make_##MEMBER(TYPE value) \
{ \
return XRT_FUTURE_VALUE_MAKE(TYPE_NAME, MEMBER, value); \
} \
\
static
inline struct xrt_future_value xrt_future_value_make_##MEMBER##_ptr(const TYPE *value) \
{ \
assert(value != NULL); \
return XRT_FUTURE_VALUE_MAKE(TYPE_NAME, MEMBER, (*value)); \
}
Definition: xrt_future_value.h:46
◆ XRT_FUTURE_VALUE_MAKE
| #define XRT_FUTURE_VALUE_MAKE |
( |
|
TYPE_NAME, |
|
|
|
MEMBER, |
|
|
|
VALUE |
|
) |
| |
Value:
{ \
.MEMBER = VALUE, .type = XRT_FUTURE_VALUE_TYPE_##TYPE_NAME, \
}
◆ xrt_future_value_make
| #define xrt_future_value_make |
( |
|
VALUE | ) |
|
Value: _Generic((VALUE), \
XRT_FUTURE_VALUE_TYPES_WITH(XRT_FUTURE_VALUE_TYPECASE, _) \
default: xrt_future_value_make_none \
)(VALUE)
◆ XRT_FUTURE_VALUE_TYPECASE
| #define XRT_FUTURE_VALUE_TYPECASE |
( |
|
TYPE_NAME, |
|
|
|
TYPE, |
|
|
|
MEMBER, |
|
|
|
P |
|
) |
| |
Value: TYPE: xrt_future_value_make_##MEMBER, \
const TYPE*: xrt_future_value_make_##MEMBER##_ptr,
◆ XRT_FUTURE_VALUE_TYPES_WITH
| #define XRT_FUTURE_VALUE_TYPES_WITH |
( |
|
_, |
|
|
|
P |
|
) |
| |
Value: _(UINT64, uint64_t, uint64_, P) \
_(INT64, int64_t, int64_, P)