-#define side_arg_dynamic_u8(val) { .type = SIDE_DYNAMIC_TYPE_U8, .u = { .side_u8 = (val) } }
-#define side_arg_dynamic_u16(val) { .type = SIDE_DYNAMIC_TYPE_U16, .u = { .side_u16 = (val) } }
-#define side_arg_dynamic_u32(val) { .type = SIDE_DYNAMIC_TYPE_U32, .u = { .side_u32 = (val) } }
-#define side_arg_dynamic_u64(val) { .type = SIDE_DYNAMIC_TYPE_U64, .u = { .side_u64 = (val) } }
-#define side_arg_dynamic_s8(val) { .type = SIDE_DYNAMIC_TYPE_S8, .u = { .side_s8 = (val) } }
-#define side_arg_dynamic_s16(val) { .type = SIDE_DYNAMIC_TYPE_S16, .u = { .side_s16 = (val) } }
-#define side_arg_dynamic_s32(val) { .type = SIDE_DYNAMIC_TYPE_S32, .u = { .side_s32 = (val) } }
-#define side_arg_dynamic_s64(val) { .type = SIDE_DYNAMIC_TYPE_S64, .u = { .side_s64 = (val) } }
-#define side_arg_dynamic_string(val) { .type = SIDE_DYNAMIC_TYPE_STRING, .u = { .string = (val) } }
+#define side_arg_dynamic_null(_attr) \
+ { \
+ .dynamic_type = SIDE_DYNAMIC_TYPE_NULL, \
+ .u = { \
+ .side_basic = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ }, \
+ }, \
+ }
+
+#define side_arg_dynamic_bool(_val, _attr) \
+ { \
+ .dynamic_type = SIDE_DYNAMIC_TYPE_BOOL, \
+ .u = { \
+ .side_basic = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .u = { \
+ .side_bool = !!(_val), \
+ }, \
+ }, \
+ }, \
+ }
+
+#define side_arg_dynamic_u8(_val, _attr) \
+ { \
+ .dynamic_type = SIDE_DYNAMIC_TYPE_U8, \
+ .u = { \
+ .side_basic = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .u = { \
+ .side_u8 = (_val), \
+ }, \
+ }, \
+ }, \
+ }
+#define side_arg_dynamic_u16(_val, _attr) \
+ { \
+ .dynamic_type = SIDE_DYNAMIC_TYPE_U16, \
+ .u = { \
+ .side_basic = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .u = { \
+ .side_u16 = (_val), \
+ }, \
+ }, \
+ }, \
+ }
+#define side_arg_dynamic_u32(_val, _attr) \
+ { \
+ .dynamic_type = SIDE_DYNAMIC_TYPE_U32, \
+ .u = { \
+ .side_basic = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .u = { \
+ .side_u32 = (_val), \
+ }, \
+ }, \
+ }, \
+ }
+#define side_arg_dynamic_u64(_val, _attr) \
+ { \
+ .dynamic_type = SIDE_DYNAMIC_TYPE_U64, \
+ .u = { \
+ .side_basic = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .u = { \
+ .side_u64 = (_val), \
+ }, \
+ }, \
+ }, \
+ }
+
+#define side_arg_dynamic_s8(_val, _attr) \
+ { \
+ .dynamic_type = SIDE_DYNAMIC_TYPE_S8, \
+ .u = { \
+ .side_basic = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .u = { \
+ .side_s8 = (_val), \
+ }, \
+ }, \
+ }, \
+ }
+#define side_arg_dynamic_s16(_val, _attr) \
+ { \
+ .dynamic_type = SIDE_DYNAMIC_TYPE_S16, \
+ .u = { \
+ .side_basic = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .u = { \
+ .side_s16 = (_val), \
+ }, \
+ }, \
+ }, \
+ }
+#define side_arg_dynamic_s32(_val, _attr) \
+ { \
+ .dynamic_type = SIDE_DYNAMIC_TYPE_S32, \
+ .u = { \
+ .side_basic = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .u = { \
+ .side_s32 = (_val), \
+ }, \
+ }, \
+ }, \
+ }
+#define side_arg_dynamic_s64(_val, _attr) \
+ { \
+ .dynamic_type = SIDE_DYNAMIC_TYPE_S64, \
+ .u = { \
+ .side_basic = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .u = { \
+ .side_s64 = (_val), \
+ }, \
+ }, \
+ }, \
+ }
+#define side_arg_dynamic_byte(_val, _attr) \
+ { \
+ .dynamic_type = SIDE_DYNAMIC_TYPE_BYTE, \
+ .u = { \
+ .side_basic = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .u = { \
+ .side_byte = (_val), \
+ }, \
+ }, \
+ }, \
+ }
+
+#define side_arg_dynamic_float_binary16(_val, _attr) \
+ { \
+ .dynamic_type = SIDE_DYNAMIC_TYPE_FLOAT_BINARY16, \
+ .u = { \
+ .side_basic = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .u = { \
+ .side_float_binary16 = (_val), \
+ }, \
+ }, \
+ }, \
+ }
+#define side_arg_dynamic_float_binary32(_val, _attr) \
+ { \
+ .dynamic_type = SIDE_DYNAMIC_TYPE_FLOAT_BINARY32, \
+ .u = { \
+ .side_basic = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .u = { \
+ .side_float_binary32 = (_val), \
+ }, \
+ }, \
+ }, \
+ }
+#define side_arg_dynamic_float_binary64(_val, _attr) \
+ { \
+ .dynamic_type = SIDE_DYNAMIC_TYPE_FLOAT_BINARY64, \
+ .u = { \
+ .side_basic = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .u = { \
+ .side_float_binary64 = (_val), \
+ }, \
+ }, \
+ }, \
+ }
+#define side_arg_dynamic_float_binary128(_val, _attr) \
+ { \
+ .dynamic_type = SIDE_DYNAMIC_TYPE_FLOAT_BINARY128, \
+ .u = { \
+ .side_basic = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .u = { \
+ .side_float_binary128 = (_val), \
+ }, \
+ }, \
+ }, \
+ }