#define __field(_type, _item) \
{ \
.name = #_item, \
- .type = __type_integer(_type, __BYTE_ORDER, 10), \
+ .type = __type_integer(_type, __BYTE_ORDER, 10, none),\
},
#undef __field_ext
#define __field_network(_type, _item) \
{ \
.name = #_item, \
- .type = __type_integer(_type, __BIG_ENDIAN, 10), \
+ .type = __type_integer(_type, __BIG_ENDIAN, 10, none),\
},
-#undef __array
-#define __array(_type, _item, _length) \
+#undef __array_enc
+#define __array_enc(_type, _item, _length, _encoding) \
{ \
.name = #_item, \
.type = \
.u.array = \
{ \
.length = _length, \
- .elem_type = __type_integer(_type, __BYTE_ORDER, 10), \
+ .elem_type = __type_integer(_type, __BYTE_ORDER, 10, _encoding), \
}, \
}, \
},
-#undef __dynamic_array
-#define __dynamic_array(_type, _item, _length) \
+#undef __array
+#define __array(_type, _item, _length) \
+ __array_enc(_type, _item, _length, none)
+
+#undef __array_text
+#define __array_text(_type, _item, _length) \
+ __array_enc(_type, _item, _length, UTF8)
+
+#undef __dynamic_array_enc
+#define __dynamic_array_enc(_type, _item, _length, _encoding) \
{ \
.name = #_item, \
.type = \
.atype = atype_sequence, \
.u.sequence = \
{ \
- .length_type = __type_integer(u32, __BYTE_ORDER, 10), \
- .elem_type = __type_integer(_type, __BYTE_ORDER, 10), \
+ .length_type = __type_integer(u32, __BYTE_ORDER, 10, none), \
+ .elem_type = __type_integer(_type, __BYTE_ORDER, 10, _encoding), \
}, \
}, \
},
+#undef __dynamic_array
+#define __dynamic_array(_type, _item, _length) \
+ __dynamic_array_enc(_type, _item, _length, none)
+
+#undef __dynamic_array_text
+#define __dynamic_array_text(_type, _item, _length) \
+ __dynamic_array_enc(_type, _item, _length, UTF8)
+
#undef __string
#define __string(_item, _src) \
{ \
__event_len += lib_ring_buffer_align(__event_len, ltt_alignof(_type)); \
__event_len += sizeof(_type) * (_length);
+#undef __array_text
+#define __array_text(_type, _item, _length) \
+ __array(_type, _item, _length)
+
#undef __dynamic_array
#define __dynamic_array(_type, _item, _length) \
__event_len += lib_ring_buffer_align(__event_len, ltt_alignof(u32)); \
__event_len += lib_ring_buffer_align(__event_len, ltt_alignof(_type)); \
__event_len += sizeof(_type) * (_length);
+#undef __dynamic_array_text
+#define __dynamic_array_text(_type, _item, _length) \
+ __dynamic_array(_type, _item, _length)
+
#undef __string
#define __string(_item, _src) \
__event_len += __dynamic_len[__dynamic_len_idx++] = strlen(_src) + 1;
#define __array(_type, _item, _length) \
__event_align = max_t(size_t, __event_align, ltt_alignof(_type));
+#undef __array_text
+#define __array_text(_type, _item, _length) \
+ __array(_type, _item, _length)
+
#undef __dynamic_array
#define __dynamic_array(_type, _item, _length) \
__event_align = max_t(size_t, __event_align, ltt_alignof(u32)); \
__event_align = max_t(size_t, __event_align, ltt_alignof(_type));
+#undef __dynamic_array_text
+#define __dynamic_array_text(_type, _item, _length) \
+ __dynamic_array(_type, _item, _length)
+
#undef __string
#define __string(_item, _src)
#undef __array
#define __array(_type, _item, _length) _type _item;
+#undef __array_text
+#define __array_text(_type, _item, _length) \
+ __array(_type, _item, _length)
+
#undef __dynamic_array
#define __dynamic_array(_type, _item, _length) _type _item;
+#undef __dynamic_array_text
+#define __dynamic_array_text(_type, _item, _length) \
+ __dynamic_array(_type, _item, _length)
+
#undef __string
#define __string(_item, _src) char _item;
goto __assign_##_item; \
__end_field_##_item:
+#undef __array_text
+#define __array_text(_type, _item, _length) \
+ __array(_type, _item, _length)
+
#undef __dynamic_array
#define __dynamic_array(_type, _item, _length) \
goto __assign_##_item##_1; \
goto __assign_##_item##_2; \
__end_field_##_item##_2:
+#undef __dynamic_array_text
+#define __dynamic_array_text(_type, _item, _length) \
+ __dynamic_array(_type, _item, _length)
+
#undef __string
#define __string(_item, _src) \
goto __assign_##_item; \
__event_align = __event_get_align__##_name(_args); \
lib_ring_buffer_ctx_init(&ctx, __chan->chan, NULL, __event_len, \
__event_align, -1); \
- __ret = __chan->ops->event_reserve(&ctx); \
+ __ret = __chan->ops->event_reserve(&ctx, __event->id); \
if (__ret < 0) \
return; \
/* Control code (field ordering) */ \