Move type descriptions in header file
[libside.git] / src / test.c
CommitLineData
f611d0c3
MD
1// SPDX-License-Identifier: MIT
2/*
3 * Copyright 2022 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
4 */
5
6#include <stdint.h>
7#include <inttypes.h>
8#include <stdlib.h>
9#include <stdio.h>
4f40d951 10#include <stdbool.h>
7a1cb105 11#include <stddef.h>
f611d0c3
MD
12
13#include <side/trace.h>
14#include "tracer.h"
15
16/* User code example */
17
89747802 18side_static_event(my_provider_event, "myprovider", "myevent", SIDE_LOGLEVEL_DEBUG,
f611d0c3 19 side_field_list(
485b800a
MD
20 side_field_u32("abc", side_attr_list()),
21 side_field_s64("def", side_attr_list()),
f5e650d7 22 side_field_pointer("ptr", side_attr_list()),
485b800a 23 side_field_dynamic("dynamic", side_attr_list()),
d8107f01 24 side_field_dynamic("dynamic_pointer", side_attr_list()),
9b641221 25 side_field_null("null", side_attr_list()),
399c836b
MD
26 ),
27 side_attr_list()
f611d0c3
MD
28);
29
30static
31void test_fields(void)
32{
33 uint32_t uw = 42;
34 int64_t sdw = -500;
35
f5e650d7
MD
36 side_event(my_provider_event,
37 side_arg_list(
38 side_arg_u32(uw),
39 side_arg_s64(sdw),
40 side_arg_pointer((void *) 0x1),
41 side_arg_dynamic(side_arg_dynamic_string("zzz", side_attr_list())),
d8107f01 42 side_arg_dynamic(side_arg_dynamic_pointer((void *) 0x1, side_attr_list())),
9b641221 43 side_arg_null(),
f5e650d7
MD
44 )
45 );
f611d0c3
MD
46}
47
89747802
MD
48side_hidden_event(my_provider_event_hidden, "myprovider", "myeventhidden", SIDE_LOGLEVEL_DEBUG,
49 side_field_list(
50 side_field_u32("abc", side_attr_list()),
51 ),
52 side_attr_list()
53);
54
55static
56void test_event_hidden(void)
57{
89747802
MD
58 side_event(my_provider_event_hidden, side_arg_list(side_arg_u32(2)));
59}
60
61side_declare_event(my_provider_event_export);
62
63side_export_event(my_provider_event_export, "myprovider", "myeventexport", SIDE_LOGLEVEL_DEBUG,
64 side_field_list(
65 side_field_u32("abc", side_attr_list()),
66 ),
67 side_attr_list()
68);
69
70static
71void test_event_export(void)
72{
89747802
MD
73 side_event(my_provider_event_export, side_arg_list(side_arg_u32(2)));
74}
75
76side_static_event(my_provider_event_struct_literal, "myprovider", "myeventstructliteral", SIDE_LOGLEVEL_DEBUG,
f611d0c3 77 side_field_list(
c7a14585
MD
78 side_field_struct("structliteral",
79 side_struct_literal(
80 side_field_list(
81 side_field_u32("x", side_attr_list()),
82 side_field_s64("y", side_attr_list()),
83 ),
84 side_attr_list()
85 )
f611d0c3 86 ),
485b800a 87 side_field_u8("z", side_attr_list()),
399c836b
MD
88 ),
89 side_attr_list()
f611d0c3
MD
90);
91
c7a14585
MD
92static
93void test_struct_literal(void)
94{
c7a14585
MD
95 side_event_cond(my_provider_event_struct_literal) {
96 side_arg_define_vec(mystruct, side_arg_list(side_arg_u32(21), side_arg_s64(22)));
97 side_event_call(my_provider_event_struct_literal, side_arg_list(side_arg_struct(&mystruct), side_arg_u8(55)));
98 }
99}
100
101static side_define_struct(mystructdef,
102 side_field_list(
103 side_field_u32("x", side_attr_list()),
104 side_field_s64("y", side_attr_list()),
105 ),
106 side_attr_list()
107);
108
89747802 109side_static_event(my_provider_event_struct, "myprovider", "myeventstruct", SIDE_LOGLEVEL_DEBUG,
c7a14585
MD
110 side_field_list(
111 side_field_struct("struct", &mystructdef),
112 side_field_u8("z", side_attr_list()),
113 ),
114 side_attr_list()
115);
116
f611d0c3
MD
117static
118void test_struct(void)
119{
c7a14585 120 side_event_cond(my_provider_event_struct) {
f611d0c3 121 side_arg_define_vec(mystruct, side_arg_list(side_arg_u32(21), side_arg_s64(22)));
c7a14585 122 side_event_call(my_provider_event_struct, side_arg_list(side_arg_struct(&mystruct), side_arg_u8(55)));
f611d0c3
MD
123 }
124}
125
89747802 126side_static_event(my_provider_event_array, "myprovider", "myarray", SIDE_LOGLEVEL_DEBUG,
f611d0c3 127 side_field_list(
9a55f555 128 side_field_array("arr", side_elem(side_type_u32(side_attr_list())), 3, side_attr_list()),
485b800a 129 side_field_s64("v", side_attr_list()),
399c836b
MD
130 ),
131 side_attr_list()
f611d0c3
MD
132);
133
134static
135void test_array(void)
136{
d5cdb129 137 side_event_cond(my_provider_event_array) {
f611d0c3 138 side_arg_define_vec(myarray, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
d5cdb129 139 side_event_call(my_provider_event_array, side_arg_list(side_arg_array(&myarray), side_arg_s64(42)));
f611d0c3
MD
140 }
141}
142
89747802 143side_static_event(my_provider_event_vla, "myprovider", "myvla", SIDE_LOGLEVEL_DEBUG,
f611d0c3 144 side_field_list(
9a55f555 145 side_field_vla("vla", side_elem(side_type_u32(side_attr_list())), side_attr_list()),
485b800a 146 side_field_s64("v", side_attr_list()),
399c836b
MD
147 ),
148 side_attr_list()
f611d0c3
MD
149);
150
151static
152void test_vla(void)
153{
d5cdb129 154 side_event_cond(my_provider_event_vla) {
f611d0c3 155 side_arg_define_vec(myvla, side_arg_list(side_arg_u32(1), side_arg_u32(2), side_arg_u32(3)));
d5cdb129 156 side_event_call(my_provider_event_vla, side_arg_list(side_arg_vla(&myvla), side_arg_s64(42)));
f611d0c3
MD
157 }
158}
159
cdd6e858
MD
160/* 1D array visitor */
161
f611d0c3
MD
162struct app_visitor_ctx {
163 const uint32_t *ptr;
352a4b77 164 uint32_t length;
f611d0c3
MD
165};
166
352a4b77
MD
167static
168enum side_visitor_status test_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx)
f611d0c3
MD
169{
170 struct app_visitor_ctx *ctx = (struct app_visitor_ctx *) _ctx;
352a4b77
MD
171 uint32_t length = ctx->length, i;
172
173 for (i = 0; i < length; i++) {
ffb5c809
MD
174 const struct side_arg_vec elem = side_arg_u32(ctx->ptr[i]);
175
db6ecef9
MD
176 if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK)
177 return SIDE_VISITOR_STATUS_ERROR;
352a4b77 178 }
f611d0c3
MD
179 return SIDE_VISITOR_STATUS_OK;
180}
181
182static uint32_t testarray[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
183
89747802 184side_static_event(my_provider_event_vla_visitor, "myprovider", "myvlavisit", SIDE_LOGLEVEL_DEBUG,
f611d0c3 185 side_field_list(
9a55f555 186 side_field_vla_visitor("vlavisit", side_elem(side_type_u32(side_attr_list())), test_visitor, side_attr_list()),
485b800a 187 side_field_s64("v", side_attr_list()),
399c836b
MD
188 ),
189 side_attr_list()
f611d0c3
MD
190);
191
192static
193void test_vla_visitor(void)
194{
d5cdb129 195 side_event_cond(my_provider_event_vla_visitor) {
f611d0c3
MD
196 struct app_visitor_ctx ctx = {
197 .ptr = testarray,
352a4b77 198 .length = SIDE_ARRAY_SIZE(testarray),
f611d0c3 199 };
d5cdb129 200 side_event_call(my_provider_event_vla_visitor, side_arg_list(side_arg_vla_visitor(&ctx), side_arg_s64(42)));
f611d0c3
MD
201 }
202}
203
cdd6e858
MD
204/* 2D array visitor */
205
206struct app_visitor_2d_inner_ctx {
207 const uint32_t *ptr;
208 uint32_t length;
209};
210
211static
212enum side_visitor_status test_inner_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx)
213{
214 struct app_visitor_2d_inner_ctx *ctx = (struct app_visitor_2d_inner_ctx *) _ctx;
215 uint32_t length = ctx->length, i;
216
217 for (i = 0; i < length; i++) {
ffb5c809
MD
218 const struct side_arg_vec elem = side_arg_u32(ctx->ptr[i]);
219
db6ecef9
MD
220 if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK)
221 return SIDE_VISITOR_STATUS_ERROR;
cdd6e858
MD
222 }
223 return SIDE_VISITOR_STATUS_OK;
224}
225
226struct app_visitor_2d_outer_ctx {
227 const uint32_t (*ptr)[2];
228 uint32_t length;
229};
230
231static
232enum side_visitor_status test_outer_visitor(const struct side_tracer_visitor_ctx *tracer_ctx, void *_ctx)
233{
234 struct app_visitor_2d_outer_ctx *ctx = (struct app_visitor_2d_outer_ctx *) _ctx;
235 uint32_t length = ctx->length, i;
236
237 for (i = 0; i < length; i++) {
238 struct app_visitor_2d_inner_ctx inner_ctx = {
239 .ptr = ctx->ptr[i],
240 .length = 2,
241 };
242 const struct side_arg_vec elem = side_arg_vla_visitor(&inner_ctx);
db6ecef9
MD
243 if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK)
244 return SIDE_VISITOR_STATUS_ERROR;
cdd6e858
MD
245 }
246 return SIDE_VISITOR_STATUS_OK;
247}
248
249static uint32_t testarray2d[][2] = {
250 { 1, 2 },
251 { 33, 44 },
252 { 55, 66 },
253};
254
89747802 255side_static_event(my_provider_event_vla_visitor2d, "myprovider", "myvlavisit2d", SIDE_LOGLEVEL_DEBUG,
cdd6e858
MD
256 side_field_list(
257 side_field_vla_visitor("vlavisit2d",
f37a556f 258 side_elem(
32ba58fc 259 side_type_vla_visitor(
9a55f555 260 side_elem(side_type_u32(side_attr_list())),
f37a556f
MD
261 test_inner_visitor,
262 side_attr_list())
263 ), test_outer_visitor, side_attr_list()),
485b800a 264 side_field_s64("v", side_attr_list()),
399c836b
MD
265 ),
266 side_attr_list()
cdd6e858
MD
267);
268
269static
270void test_vla_visitor_2d(void)
271{
d5cdb129 272 side_event_cond(my_provider_event_vla_visitor2d) {
cdd6e858
MD
273 struct app_visitor_2d_outer_ctx ctx = {
274 .ptr = testarray2d,
275 .length = SIDE_ARRAY_SIZE(testarray2d),
276 };
d5cdb129 277 side_event_call(my_provider_event_vla_visitor2d, side_arg_list(side_arg_vla_visitor(&ctx), side_arg_s64(42)));
cdd6e858
MD
278 }
279}
280
ba845af5
MD
281static int64_t array_fixint[] = { -444, 555, 123, 2897432587 };
282
89747802 283side_static_event(my_provider_event_array_fixint, "myprovider", "myarrayfixint", SIDE_LOGLEVEL_DEBUG,
ba845af5 284 side_field_list(
9a55f555 285 side_field_array("arrfixint", side_elem(side_type_s64(side_attr_list())), SIDE_ARRAY_SIZE(array_fixint), side_attr_list()),
485b800a 286 side_field_s64("v", side_attr_list()),
399c836b
MD
287 ),
288 side_attr_list()
ba845af5
MD
289);
290
291static
292void test_array_fixint(void)
293{
d5cdb129 294 side_event(my_provider_event_array_fixint,
1533629f
MD
295 side_arg_list(side_arg_array_s64(array_fixint), side_arg_s64(42)));
296}
297
298static int64_t vla_fixint[] = { -444, 555, 123, 2897432587 };
299
89747802 300side_static_event(my_provider_event_vla_fixint, "myprovider", "myvlafixint", SIDE_LOGLEVEL_DEBUG,
1533629f 301 side_field_list(
9a55f555 302 side_field_vla("vlafixint", side_elem(side_type_s64(side_attr_list())), side_attr_list()),
485b800a 303 side_field_s64("v", side_attr_list()),
399c836b
MD
304 ),
305 side_attr_list()
1533629f
MD
306);
307
308static
309void test_vla_fixint(void)
310{
d5cdb129 311 side_event(my_provider_event_vla_fixint,
1533629f 312 side_arg_list(side_arg_vla_s64(vla_fixint, SIDE_ARRAY_SIZE(vla_fixint)), side_arg_s64(42)));
ba845af5
MD
313}
314
89747802 315side_static_event(my_provider_event_dynamic_basic,
a2e2357e
MD
316 "myprovider", "mydynamicbasic", SIDE_LOGLEVEL_DEBUG,
317 side_field_list(
485b800a 318 side_field_dynamic("dynamic", side_attr_list()),
399c836b
MD
319 ),
320 side_attr_list()
a2e2357e
MD
321);
322
323static
324void test_dynamic_basic_type(void)
325{
d5cdb129 326 side_event(my_provider_event_dynamic_basic,
808bd9bf 327 side_arg_list(side_arg_dynamic(side_arg_dynamic_s16(-33, side_attr_list()))));
a2e2357e
MD
328}
329
89747802 330side_static_event(my_provider_event_dynamic_vla,
a2e2357e
MD
331 "myprovider", "mydynamicvla", SIDE_LOGLEVEL_DEBUG,
332 side_field_list(
485b800a 333 side_field_dynamic("dynamic", side_attr_list()),
399c836b
MD
334 ),
335 side_attr_list()
a2e2357e
MD
336);
337
338static
339void test_dynamic_vla(void)
340{
948e3e72
MD
341 side_arg_dynamic_define_vec(myvla,
342 side_arg_list(
808bd9bf
MD
343 side_arg_dynamic_u32(1, side_attr_list()),
344 side_arg_dynamic_u32(2, side_attr_list()),
345 side_arg_dynamic_u32(3, side_attr_list()),
8d20e708
MD
346 ),
347 side_attr_list()
df075fa5 348 );
d5cdb129 349 side_event(my_provider_event_dynamic_vla,
8d20e708 350 side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla))));
a2e2357e
MD
351}
352
89747802 353side_static_event(my_provider_event_dynamic_null,
465e5e7e
MD
354 "myprovider", "mydynamicnull", SIDE_LOGLEVEL_DEBUG,
355 side_field_list(
485b800a 356 side_field_dynamic("dynamic", side_attr_list()),
399c836b
MD
357 ),
358 side_attr_list()
465e5e7e
MD
359);
360
361static
362void test_dynamic_null(void)
363{
d5cdb129 364 side_event(my_provider_event_dynamic_null,
808bd9bf 365 side_arg_list(side_arg_dynamic(side_arg_dynamic_null(side_attr_list()))));
465e5e7e
MD
366}
367
89747802 368side_static_event(my_provider_event_dynamic_struct,
c208889e 369 "myprovider", "mydynamicstruct", SIDE_LOGLEVEL_DEBUG,
465e5e7e 370 side_field_list(
485b800a 371 side_field_dynamic("dynamic", side_attr_list()),
399c836b
MD
372 ),
373 side_attr_list()
465e5e7e
MD
374);
375
376static
c208889e 377void test_dynamic_struct(void)
465e5e7e 378{
c208889e 379 side_arg_dynamic_define_struct(mystruct,
465e5e7e 380 side_arg_list(
808bd9bf
MD
381 side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())),
382 side_arg_dynamic_field("b", side_arg_dynamic_string("zzz", side_attr_list())),
383 side_arg_dynamic_field("c", side_arg_dynamic_null(side_attr_list())),
8d20e708
MD
384 ),
385 side_attr_list()
465e5e7e
MD
386 );
387
d5cdb129 388 side_event(my_provider_event_dynamic_struct,
8d20e708 389 side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct))));
465e5e7e
MD
390}
391
89747802 392side_static_event(my_provider_event_dynamic_nested_struct,
c208889e 393 "myprovider", "mydynamicnestedstruct", SIDE_LOGLEVEL_DEBUG,
3222d397 394 side_field_list(
485b800a 395 side_field_dynamic("dynamic", side_attr_list()),
399c836b
MD
396 ),
397 side_attr_list()
3222d397
MD
398);
399
400static
c208889e 401void test_dynamic_nested_struct(void)
3222d397 402{
c208889e 403 side_arg_dynamic_define_struct(nested,
3222d397 404 side_arg_list(
808bd9bf
MD
405 side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())),
406 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
8d20e708
MD
407 ),
408 side_attr_list()
3222d397 409 );
c208889e 410 side_arg_dynamic_define_struct(nested2,
3222d397 411 side_arg_list(
808bd9bf
MD
412 side_arg_dynamic_field("aa", side_arg_dynamic_u64(128, side_attr_list())),
413 side_arg_dynamic_field("bb", side_arg_dynamic_u16(1, side_attr_list())),
8d20e708
MD
414 ),
415 side_attr_list()
3222d397 416 );
c208889e 417 side_arg_dynamic_define_struct(mystruct,
3222d397 418 side_arg_list(
8d20e708
MD
419 side_arg_dynamic_field("nested", side_arg_dynamic_struct(&nested)),
420 side_arg_dynamic_field("nested2", side_arg_dynamic_struct(&nested2)),
421 ),
422 side_attr_list()
3222d397 423 );
d5cdb129 424 side_event(my_provider_event_dynamic_nested_struct,
8d20e708 425 side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct))));
3222d397
MD
426}
427
89747802 428side_static_event(my_provider_event_dynamic_vla_struct,
c208889e 429 "myprovider", "mydynamicvlastruct", SIDE_LOGLEVEL_DEBUG,
7ce1b78f 430 side_field_list(
485b800a 431 side_field_dynamic("dynamic", side_attr_list()),
399c836b
MD
432 ),
433 side_attr_list()
7ce1b78f
MD
434);
435
436static
c208889e 437void test_dynamic_vla_struct(void)
7ce1b78f 438{
c208889e 439 side_arg_dynamic_define_struct(nested,
7ce1b78f 440 side_arg_list(
808bd9bf
MD
441 side_arg_dynamic_field("a", side_arg_dynamic_u32(43, side_attr_list())),
442 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
8d20e708
MD
443 ),
444 side_attr_list()
7ce1b78f
MD
445 );
446 side_arg_dynamic_define_vec(myvla,
447 side_arg_list(
8d20e708
MD
448 side_arg_dynamic_struct(&nested),
449 side_arg_dynamic_struct(&nested),
450 side_arg_dynamic_struct(&nested),
451 side_arg_dynamic_struct(&nested),
452 ),
453 side_attr_list()
7ce1b78f 454 );
d5cdb129 455 side_event(my_provider_event_dynamic_vla_struct,
8d20e708 456 side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla))));
7ce1b78f
MD
457}
458
89747802 459side_static_event(my_provider_event_dynamic_struct_vla,
c208889e 460 "myprovider", "mydynamicstructvla", SIDE_LOGLEVEL_DEBUG,
980bfdc4 461 side_field_list(
485b800a 462 side_field_dynamic("dynamic", side_attr_list()),
399c836b
MD
463 ),
464 side_attr_list()
980bfdc4
MD
465);
466
467static
c208889e 468void test_dynamic_struct_vla(void)
980bfdc4
MD
469{
470 side_arg_dynamic_define_vec(myvla,
948e3e72 471 side_arg_list(
808bd9bf
MD
472 side_arg_dynamic_u32(1, side_attr_list()),
473 side_arg_dynamic_u32(2, side_attr_list()),
474 side_arg_dynamic_u32(3, side_attr_list()),
8d20e708
MD
475 ),
476 side_attr_list()
df075fa5 477 );
980bfdc4 478 side_arg_dynamic_define_vec(myvla2,
948e3e72 479 side_arg_list(
808bd9bf
MD
480 side_arg_dynamic_u32(4, side_attr_list()),
481 side_arg_dynamic_u64(5, side_attr_list()),
482 side_arg_dynamic_u32(6, side_attr_list()),
8d20e708
MD
483 ),
484 side_attr_list()
df075fa5 485 );
c208889e 486 side_arg_dynamic_define_struct(mystruct,
980bfdc4 487 side_arg_list(
8d20e708
MD
488 side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla)),
489 side_arg_dynamic_field("b", side_arg_dynamic_vla(&myvla2)),
490 ),
491 side_attr_list()
980bfdc4 492 );
d5cdb129 493 side_event(my_provider_event_dynamic_struct_vla,
8d20e708 494 side_arg_list(side_arg_dynamic(side_arg_dynamic_struct(&mystruct))));
980bfdc4
MD
495}
496
89747802 497side_static_event(my_provider_event_dynamic_nested_vla,
948e3e72
MD
498 "myprovider", "mydynamicnestedvla", SIDE_LOGLEVEL_DEBUG,
499 side_field_list(
485b800a 500 side_field_dynamic("dynamic", side_attr_list()),
399c836b
MD
501 ),
502 side_attr_list()
948e3e72
MD
503);
504
505static
506void test_dynamic_nested_vla(void)
507{
508 side_arg_dynamic_define_vec(nestedvla,
509 side_arg_list(
808bd9bf
MD
510 side_arg_dynamic_u32(1, side_attr_list()),
511 side_arg_dynamic_u16(2, side_attr_list()),
512 side_arg_dynamic_u32(3, side_attr_list()),
8d20e708
MD
513 ),
514 side_attr_list()
948e3e72
MD
515 );
516 side_arg_dynamic_define_vec(nestedvla2,
517 side_arg_list(
808bd9bf
MD
518 side_arg_dynamic_u8(4, side_attr_list()),
519 side_arg_dynamic_u32(5, side_attr_list()),
520 side_arg_dynamic_u32(6, side_attr_list()),
8d20e708
MD
521 ),
522 side_attr_list()
948e3e72
MD
523 );
524 side_arg_dynamic_define_vec(myvla,
525 side_arg_list(
8d20e708
MD
526 side_arg_dynamic_vla(&nestedvla),
527 side_arg_dynamic_vla(&nestedvla2),
528 ),
529 side_attr_list()
948e3e72 530 );
d5cdb129 531 side_event(my_provider_event_dynamic_nested_vla,
8d20e708 532 side_arg_list(side_arg_dynamic(side_arg_dynamic_vla(&myvla))));
948e3e72
MD
533}
534
89747802 535side_static_event_variadic(my_provider_event_variadic,
19fa6aa2 536 "myprovider", "myvariadicevent", SIDE_LOGLEVEL_DEBUG,
399c836b
MD
537 side_field_list(),
538 side_attr_list()
19fa6aa2
MD
539);
540
541static
542void test_variadic(void)
543{
d5cdb129 544 side_event_variadic(my_provider_event_variadic,
19fa6aa2
MD
545 side_arg_list(),
546 side_arg_list(
808bd9bf
MD
547 side_arg_dynamic_field("a", side_arg_dynamic_u32(55, side_attr_list())),
548 side_arg_dynamic_field("b", side_arg_dynamic_s8(-4, side_attr_list())),
8d20e708
MD
549 ),
550 side_attr_list()
19fa6aa2
MD
551 );
552}
553
89747802 554side_static_event_variadic(my_provider_event_static_variadic,
41c4d119
MD
555 "myprovider", "mystaticvariadicevent", SIDE_LOGLEVEL_DEBUG,
556 side_field_list(
485b800a
MD
557 side_field_u32("abc", side_attr_list()),
558 side_field_u16("def", side_attr_list()),
399c836b
MD
559 ),
560 side_attr_list()
41c4d119
MD
561);
562
563static
564void test_static_variadic(void)
565{
d5cdb129 566 side_event_variadic(my_provider_event_static_variadic,
41c4d119
MD
567 side_arg_list(
568 side_arg_u32(1),
569 side_arg_u16(2),
570 ),
571 side_arg_list(
808bd9bf
MD
572 side_arg_dynamic_field("a", side_arg_dynamic_u32(55, side_attr_list())),
573 side_arg_dynamic_field("b", side_arg_dynamic_s8(-4, side_attr_list())),
8d20e708
MD
574 ),
575 side_attr_list()
41c4d119
MD
576 );
577}
578
89747802 579side_static_event(my_provider_event_bool, "myprovider", "myeventbool", SIDE_LOGLEVEL_DEBUG,
4f40d951 580 side_field_list(
485b800a
MD
581 side_field_bool("a_false", side_attr_list()),
582 side_field_bool("b_true", side_attr_list()),
583 side_field_bool("c_true", side_attr_list()),
584 side_field_bool("d_true", side_attr_list()),
585 side_field_bool("e_true", side_attr_list()),
586 side_field_bool("f_false", side_attr_list()),
587 side_field_bool("g_true", side_attr_list()),
399c836b
MD
588 ),
589 side_attr_list()
4f40d951
MD
590);
591
592static
593void test_bool(void)
594{
595 uint32_t a = 0;
596 uint32_t b = 1;
597 uint64_t c = 0x12345678;
598 int16_t d = -32768;
599 bool e = true;
600 bool f = false;
601 uint32_t g = 256;
602
d5cdb129 603 side_event(my_provider_event_bool,
4f40d951
MD
604 side_arg_list(
605 side_arg_bool(a),
606 side_arg_bool(b),
607 side_arg_bool(c),
608 side_arg_bool(d),
609 side_arg_bool(e),
610 side_arg_bool(f),
611 side_arg_bool(g),
612 )
613 );
614}
615
89747802 616side_static_event_variadic(my_provider_event_dynamic_bool,
4f40d951 617 "myprovider", "mydynamicbool", SIDE_LOGLEVEL_DEBUG,
399c836b
MD
618 side_field_list(),
619 side_attr_list()
4f40d951
MD
620);
621
622static
623void test_dynamic_bool(void)
624{
d5cdb129 625 side_event_variadic(my_provider_event_dynamic_bool,
4f40d951
MD
626 side_arg_list(),
627 side_arg_list(
808bd9bf
MD
628 side_arg_dynamic_field("a_true", side_arg_dynamic_bool(55, side_attr_list())),
629 side_arg_dynamic_field("b_true", side_arg_dynamic_bool(-4, side_attr_list())),
630 side_arg_dynamic_field("c_false", side_arg_dynamic_bool(0, side_attr_list())),
631 side_arg_dynamic_field("d_true", side_arg_dynamic_bool(256, side_attr_list())),
8d20e708
MD
632 ),
633 side_attr_list()
4f40d951
MD
634 );
635}
636
89747802 637side_static_event(my_provider_event_dynamic_vla_visitor,
8ceca0cd
MD
638 "myprovider", "mydynamicvlavisitor", SIDE_LOGLEVEL_DEBUG,
639 side_field_list(
485b800a 640 side_field_dynamic("dynamic", side_attr_list()),
399c836b
MD
641 ),
642 side_attr_list()
8ceca0cd
MD
643);
644
645struct app_dynamic_vla_visitor_ctx {
646 const uint32_t *ptr;
647 uint32_t length;
648};
649
650static
651enum side_visitor_status test_dynamic_vla_visitor(const struct side_tracer_dynamic_vla_visitor_ctx *tracer_ctx, void *_ctx)
652{
653 struct app_dynamic_vla_visitor_ctx *ctx = (struct app_dynamic_vla_visitor_ctx *) _ctx;
654 uint32_t length = ctx->length, i;
655
656 for (i = 0; i < length; i++) {
657 const struct side_arg_dynamic_vec elem = {
658 .dynamic_type = SIDE_DYNAMIC_TYPE_U32,
659 .u = {
d2be7696
MD
660 .side_integer = {
661 .type = {
662 .attr = NULL,
663 .nr_attr = 0,
664 .integer_size_bits = 32,
665 .len_bits = 32,
666 .signedness = false,
667 .byte_order = SIDE_TYPE_BYTE_ORDER_HOST,
668 },
669 .value = {
670 .side_u32 = ctx->ptr[i],
8d20e708
MD
671 },
672 },
8ceca0cd
MD
673 },
674 };
675 if (tracer_ctx->write_elem(tracer_ctx, &elem) != SIDE_VISITOR_STATUS_OK)
676 return SIDE_VISITOR_STATUS_ERROR;
677 }
678 return SIDE_VISITOR_STATUS_OK;
679}
680
681static uint32_t testarray_dynamic_vla[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
682
683static
684void test_dynamic_vla_with_visitor(void)
685{
d5cdb129 686 side_event_cond(my_provider_event_dynamic_vla_visitor) {
8ceca0cd
MD
687 struct app_dynamic_vla_visitor_ctx ctx = {
688 .ptr = testarray_dynamic_vla,
689 .length = SIDE_ARRAY_SIZE(testarray_dynamic_vla),
690 };
d5cdb129 691 side_event_call(my_provider_event_dynamic_vla_visitor,
8ceca0cd
MD
692 side_arg_list(
693 side_arg_dynamic(
808bd9bf 694 side_arg_dynamic_vla_visitor(test_dynamic_vla_visitor, &ctx, side_attr_list())
8ceca0cd
MD
695 )
696 )
697 );
698 }
699}
700
89747802 701side_static_event(my_provider_event_dynamic_struct_visitor,
2b359235
MD
702 "myprovider", "mydynamicstructvisitor", SIDE_LOGLEVEL_DEBUG,
703 side_field_list(
485b800a 704 side_field_dynamic("dynamic", side_attr_list()),
399c836b
MD
705 ),
706 side_attr_list()
2b359235
MD
707);
708
709struct struct_visitor_pair {
710 const char *name;
711 uint32_t value;
712};
713
714struct app_dynamic_struct_visitor_ctx {
715 const struct struct_visitor_pair *ptr;
716 uint32_t length;
717};
718
719static
720enum side_visitor_status test_dynamic_struct_visitor(const struct side_tracer_dynamic_struct_visitor_ctx *tracer_ctx, void *_ctx)
721{
722 struct app_dynamic_struct_visitor_ctx *ctx = (struct app_dynamic_struct_visitor_ctx *) _ctx;
723 uint32_t length = ctx->length, i;
724
725 for (i = 0; i < length; i++) {
726 struct side_arg_dynamic_event_field dynamic_field = {
727 .field_name = ctx->ptr[i].name,
728 .elem = {
729 .dynamic_type = SIDE_DYNAMIC_TYPE_U32,
730 .u = {
d2be7696
MD
731 .side_integer = {
732 .type = {
733 .attr = NULL,
734 .nr_attr = 0,
735 .integer_size_bits = 32,
736 .len_bits = 32,
737 .signedness = false,
738 .byte_order = SIDE_TYPE_BYTE_ORDER_HOST,
739 },
740 .value = {
741 .side_u32 = ctx->ptr[i].value,
8d20e708
MD
742 },
743 },
2b359235
MD
744 },
745 },
746 };
747 if (tracer_ctx->write_field(tracer_ctx, &dynamic_field) != SIDE_VISITOR_STATUS_OK)
748 return SIDE_VISITOR_STATUS_ERROR;
749 }
750 return SIDE_VISITOR_STATUS_OK;
751}
752
753static struct struct_visitor_pair testarray_dynamic_struct[] = {
754 { "a", 1, },
755 { "b", 2, },
756 { "c", 3, },
757 { "d", 4, },
758};
759
760static
761void test_dynamic_struct_with_visitor(void)
762{
d5cdb129 763 side_event_cond(my_provider_event_dynamic_struct_visitor) {
2b359235
MD
764 struct app_dynamic_struct_visitor_ctx ctx = {
765 .ptr = testarray_dynamic_struct,
766 .length = SIDE_ARRAY_SIZE(testarray_dynamic_struct),
767 };
d5cdb129 768 side_event_call(my_provider_event_dynamic_struct_visitor,
2b359235
MD
769 side_arg_list(
770 side_arg_dynamic(
808bd9bf 771 side_arg_dynamic_struct_visitor(test_dynamic_struct_visitor, &ctx, side_attr_list())
2b359235
MD
772 )
773 )
774 );
775 }
776}
777
89747802 778side_static_event(my_provider_event_user_attribute, "myprovider", "myevent_user_attribute", SIDE_LOGLEVEL_DEBUG,
65010f43 779 side_field_list(
485b800a
MD
780 side_field_u32("abc", side_attr_list()),
781 side_field_s64("def", side_attr_list()),
399c836b
MD
782 ),
783 side_attr_list(
bc3c89b3
MD
784 side_attr("user_attribute_a", side_attr_string("val1")),
785 side_attr("user_attribute_b", side_attr_string("val2")),
65010f43
MD
786 )
787);
788
789static
790void test_event_user_attribute(void)
791{
d5cdb129 792 side_event(my_provider_event_user_attribute, side_arg_list(side_arg_u32(1), side_arg_s64(2)));
65010f43
MD
793}
794
89747802 795side_static_event(my_provider_field_user_attribute, "myprovider", "myevent_field_attribute", SIDE_LOGLEVEL_DEBUG,
a848763d 796 side_field_list(
485b800a 797 side_field_u32("abc",
a848763d 798 side_attr_list(
bc3c89b3
MD
799 side_attr("user_attribute_a", side_attr_string("val1")),
800 side_attr("user_attribute_b", side_attr_u32(2)),
a848763d
MD
801 )
802 ),
485b800a 803 side_field_s64("def",
a848763d 804 side_attr_list(
bc3c89b3
MD
805 side_attr("user_attribute_c", side_attr_string("val3")),
806 side_attr("user_attribute_d", side_attr_s64(-5)),
a848763d
MD
807 )
808 ),
809 ),
810 side_attr_list()
811);
812
813static
814void test_field_user_attribute(void)
815{
d5cdb129 816 side_event(my_provider_field_user_attribute, side_arg_list(side_arg_u32(1), side_arg_s64(2)));
a848763d
MD
817}
818
89747802 819side_static_event_variadic(my_provider_event_variadic_attr,
808bd9bf
MD
820 "myprovider", "myvariadiceventattr", SIDE_LOGLEVEL_DEBUG,
821 side_field_list(),
822 side_attr_list()
823);
824
825static
826void test_variadic_attr(void)
827{
d5cdb129 828 side_event_variadic(my_provider_event_variadic_attr,
808bd9bf
MD
829 side_arg_list(),
830 side_arg_list(
831 side_arg_dynamic_field("a",
832 side_arg_dynamic_u32(55,
833 side_attr_list(
bc3c89b3
MD
834 side_attr("user_attribute_c", side_attr_string("valX")),
835 side_attr("user_attribute_d", side_attr_u8(55)),
808bd9bf
MD
836 )
837 )
838 ),
839 side_arg_dynamic_field("b",
840 side_arg_dynamic_s8(-4,
841 side_attr_list(
bc3c89b3
MD
842 side_attr("X", side_attr_u8(1)),
843 side_attr("Y", side_attr_s8(2)),
808bd9bf
MD
844 )
845 )
846 ),
8d20e708
MD
847 ),
848 side_attr_list()
808bd9bf
MD
849 );
850}
851
89747802 852side_static_event_variadic(my_provider_event_variadic_vla_attr,
808bd9bf
MD
853 "myprovider", "myvariadiceventvlaattr", SIDE_LOGLEVEL_DEBUG,
854 side_field_list(),
855 side_attr_list()
856);
857
858static
859void test_variadic_vla_attr(void)
860{
861 side_arg_dynamic_define_vec(myvla,
862 side_arg_list(
863 side_arg_dynamic_u32(1,
864 side_attr_list(
bc3c89b3
MD
865 side_attr("Z", side_attr_u8(0)),
866 side_attr("A", side_attr_u8(123)),
808bd9bf
MD
867 )
868 ),
869 side_arg_dynamic_u32(2, side_attr_list()),
870 side_arg_dynamic_u32(3, side_attr_list()),
8d20e708
MD
871 ),
872 side_attr_list(
873 side_attr("X", side_attr_u8(1)),
874 side_attr("Y", side_attr_u8(2)),
808bd9bf
MD
875 )
876 );
d5cdb129 877 side_event_variadic(my_provider_event_variadic_vla_attr,
808bd9bf
MD
878 side_arg_list(),
879 side_arg_list(
8d20e708
MD
880 side_arg_dynamic_field("a", side_arg_dynamic_vla(&myvla)),
881 ),
882 side_attr_list()
808bd9bf
MD
883 );
884}
885
89747802 886side_static_event_variadic(my_provider_event_variadic_struct_attr,
808bd9bf
MD
887 "myprovider", "myvariadiceventstructattr", SIDE_LOGLEVEL_DEBUG,
888 side_field_list(),
889 side_attr_list()
890);
891
892static
893void test_variadic_struct_attr(void)
894{
d5cdb129 895 side_event_cond(my_provider_event_variadic_struct_attr) {
808bd9bf
MD
896 side_arg_dynamic_define_struct(mystruct,
897 side_arg_list(
898 side_arg_dynamic_field("a",
899 side_arg_dynamic_u32(43,
900 side_attr_list(
bc3c89b3 901 side_attr("A", side_attr_bool(true)),
808bd9bf
MD
902 )
903 )
904 ),
905 side_arg_dynamic_field("b", side_arg_dynamic_u8(55, side_attr_list())),
8d20e708
MD
906 ),
907 side_attr_list(
908 side_attr("X", side_attr_u8(1)),
909 side_attr("Y", side_attr_u8(2)),
808bd9bf
MD
910 )
911 );
d5cdb129 912 side_event_call_variadic(my_provider_event_variadic_struct_attr,
808bd9bf
MD
913 side_arg_list(),
914 side_arg_list(
8d20e708
MD
915 side_arg_dynamic_field("a", side_arg_dynamic_struct(&mystruct)),
916 ),
917 side_attr_list()
808bd9bf
MD
918 );
919 }
920}
921
89747802 922side_static_event(my_provider_event_float, "myprovider", "myeventfloat", SIDE_LOGLEVEL_DEBUG,
fb25b355
MD
923 side_field_list(
924#if __HAVE_FLOAT16
485b800a 925 side_field_float_binary16("binary16", side_attr_list()),
8bdd5c12
MD
926 side_field_float_binary16_le("binary16_le", side_attr_list()),
927 side_field_float_binary16_be("binary16_be", side_attr_list()),
fb25b355
MD
928#endif
929#if __HAVE_FLOAT32
485b800a 930 side_field_float_binary32("binary32", side_attr_list()),
8bdd5c12
MD
931 side_field_float_binary32_le("binary32_le", side_attr_list()),
932 side_field_float_binary32_be("binary32_be", side_attr_list()),
fb25b355
MD
933#endif
934#if __HAVE_FLOAT64
485b800a 935 side_field_float_binary64("binary64", side_attr_list()),
8bdd5c12
MD
936 side_field_float_binary64_le("binary64_le", side_attr_list()),
937 side_field_float_binary64_be("binary64_be", side_attr_list()),
fb25b355
MD
938#endif
939#if __HAVE_FLOAT128
485b800a 940 side_field_float_binary128("binary128", side_attr_list()),
8bdd5c12
MD
941 side_field_float_binary128_le("binary128_le", side_attr_list()),
942 side_field_float_binary128_be("binary128_be", side_attr_list()),
fb25b355
MD
943#endif
944 ),
945 side_attr_list()
946);
947
948static
949void test_float(void)
950{
8bdd5c12
MD
951#if __HAVE_FLOAT16
952 union {
953 _Float16 f;
954 uint16_t u;
955 } float16 = {
956 .f = 1.1,
957 };
958#endif
959#if __HAVE_FLOAT32
960 union {
961 _Float32 f;
962 uint32_t u;
963 } float32 = {
964 .f = 2.2,
965 };
966#endif
967#if __HAVE_FLOAT64
968 union {
969 _Float64 f;
970 uint64_t u;
971 } float64 = {
972 .f = 3.3,
973 };
974#endif
975#if __HAVE_FLOAT128
976 union {
977 _Float128 f;
978 char arr[16];
979 } float128 = {
980 .f = 4.4,
981 };
982#endif
983
984#if __HAVE_FLOAT16
985 float16.u = side_bswap_16(float16.u);
986#endif
987#if __HAVE_FLOAT32
988 float32.u = side_bswap_32(float32.u);
989#endif
990#if __HAVE_FLOAT64
991 float64.u = side_bswap_64(float64.u);
992#endif
993#if __HAVE_FLOAT128
994 side_bswap_128p(float128.arr);
995#endif
996
d5cdb129 997 side_event(my_provider_event_float,
fb25b355
MD
998 side_arg_list(
999#if __HAVE_FLOAT16
1000 side_arg_float_binary16(1.1),
8bdd5c12
MD
1001# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1002 side_arg_float_binary16(1.1),
1003 side_arg_float_binary16(float16.f),
1004# else
1005 side_arg_float_binary16(float16.f),
1006 side_arg_float_binary16(1.1),
1007# endif
fb25b355
MD
1008#endif
1009#if __HAVE_FLOAT32
1010 side_arg_float_binary32(2.2),
8bdd5c12
MD
1011# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1012 side_arg_float_binary32(2.2),
1013 side_arg_float_binary32(float32.f),
1014# else
1015 side_arg_float_binary32(float32.f),
1016 side_arg_float_binary32(2.2),
1017# endif
fb25b355
MD
1018#endif
1019#if __HAVE_FLOAT64
1020 side_arg_float_binary64(3.3),
8bdd5c12
MD
1021# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1022 side_arg_float_binary64(3.3),
1023 side_arg_float_binary64(float64.f),
1024# else
1025 side_arg_float_binary64(float64.f),
1026 side_arg_float_binary64(3.3),
1027# endif
fb25b355
MD
1028#endif
1029#if __HAVE_FLOAT128
1030 side_arg_float_binary128(4.4),
8bdd5c12
MD
1031# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1032 side_arg_float_binary128(4.4),
1033 side_arg_float_binary128(float128.f),
1034# else
1035 side_arg_float_binary128(float128.f),
1036 side_arg_float_binary128(4.4),
1037# endif
fb25b355
MD
1038#endif
1039 )
1040 );
1041}
1042
89747802 1043side_static_event_variadic(my_provider_event_variadic_float,
fb25b355
MD
1044 "myprovider", "myvariadicfloat", SIDE_LOGLEVEL_DEBUG,
1045 side_field_list(),
1046 side_attr_list()
1047);
1048
1049static
1050void test_variadic_float(void)
1051{
8bdd5c12
MD
1052#if __HAVE_FLOAT16
1053 union {
1054 _Float16 f;
1055 uint16_t u;
1056 } float16 = {
1057 .f = 1.1,
1058 };
1059#endif
1060#if __HAVE_FLOAT32
1061 union {
1062 _Float32 f;
1063 uint32_t u;
1064 } float32 = {
1065 .f = 2.2,
1066 };
1067#endif
1068#if __HAVE_FLOAT64
1069 union {
1070 _Float64 f;
1071 uint64_t u;
1072 } float64 = {
1073 .f = 3.3,
1074 };
1075#endif
1076#if __HAVE_FLOAT128
1077 union {
1078 _Float128 f;
1079 char arr[16];
1080 } float128 = {
1081 .f = 4.4,
1082 };
1083#endif
1084
1085#if __HAVE_FLOAT16
1086 float16.u = side_bswap_16(float16.u);
1087#endif
1088#if __HAVE_FLOAT32
1089 float32.u = side_bswap_32(float32.u);
1090#endif
1091#if __HAVE_FLOAT64
1092 float64.u = side_bswap_64(float64.u);
1093#endif
1094#if __HAVE_FLOAT128
1095 side_bswap_128p(float128.arr);
1096#endif
1097
d5cdb129 1098 side_event_variadic(my_provider_event_variadic_float,
fb25b355
MD
1099 side_arg_list(),
1100 side_arg_list(
1101#if __HAVE_FLOAT16
8bdd5c12
MD
1102 side_arg_dynamic_field("binary16", side_arg_dynamic_float_binary16(1.1, side_attr_list())),
1103# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1104 side_arg_dynamic_field("binary16_le", side_arg_dynamic_float_binary16_le(1.1, side_attr_list())),
1105 side_arg_dynamic_field("binary16_be", side_arg_dynamic_float_binary16_be(float16.f, side_attr_list())),
1106# else
1107 side_arg_dynamic_field("binary16_le", side_arg_dynamic_float_binary16_le(float16.f, side_attr_list())),
1108 side_arg_dynamic_field("binary16_be", side_arg_dynamic_float_binary16_be(1.1, side_attr_list())),
1109# endif
fb25b355
MD
1110#endif
1111#if __HAVE_FLOAT32
8bdd5c12
MD
1112 side_arg_dynamic_field("binary32", side_arg_dynamic_float_binary32(2.2, side_attr_list())),
1113# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1114 side_arg_dynamic_field("binary32_le", side_arg_dynamic_float_binary32_le(2.2, side_attr_list())),
1115 side_arg_dynamic_field("binary32_be", side_arg_dynamic_float_binary32_be(float32.f, side_attr_list())),
1116# else
1117 side_arg_dynamic_field("binary32_le", side_arg_dynamic_float_binary32_le(float32.f, side_attr_list())),
1118 side_arg_dynamic_field("binary32_be", side_arg_dynamic_float_binary32_be(2.2, side_attr_list())),
1119# endif
fb25b355
MD
1120#endif
1121#if __HAVE_FLOAT64
8bdd5c12
MD
1122 side_arg_dynamic_field("binary64", side_arg_dynamic_float_binary64(3.3, side_attr_list())),
1123# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1124 side_arg_dynamic_field("binary64_le", side_arg_dynamic_float_binary64_le(3.3, side_attr_list())),
1125 side_arg_dynamic_field("binary64_be", side_arg_dynamic_float_binary64_be(float64.f, side_attr_list())),
1126# else
1127 side_arg_dynamic_field("binary64_le", side_arg_dynamic_float_binary64_le(float64.f, side_attr_list())),
1128 side_arg_dynamic_field("binary64_be", side_arg_dynamic_float_binary64_be(3.3, side_attr_list())),
1129# endif
fb25b355
MD
1130#endif
1131#if __HAVE_FLOAT128
8bdd5c12
MD
1132 side_arg_dynamic_field("binary128", side_arg_dynamic_float_binary128(4.4, side_attr_list())),
1133# if SIDE_FLOAT_WORD_ORDER == SIDE_LITTLE_ENDIAN
1134 side_arg_dynamic_field("binary128_le", side_arg_dynamic_float_binary128_le(4.4, side_attr_list())),
1135 side_arg_dynamic_field("binary128_be", side_arg_dynamic_float_binary128_be(float128.f, side_attr_list())),
1136# else
1137 side_arg_dynamic_field("binary128_le", side_arg_dynamic_float_binary128_le(float128.f, side_attr_list())),
1138 side_arg_dynamic_field("binary128_be", side_arg_dynamic_float_binary128_be(4.4, side_attr_list())),
1139# endif
fb25b355 1140#endif
8d20e708
MD
1141 ),
1142 side_attr_list()
fb25b355
MD
1143 );
1144}
1145
79f677ba 1146static side_define_enum(myenum,
66cff328 1147 side_enum_mapping_list(
79f677ba
MD
1148 side_enum_mapping_range("one-ten", 1, 10),
1149 side_enum_mapping_range("100-200", 100, 200),
1150 side_enum_mapping_value("200", 200),
1151 side_enum_mapping_value("300", 300),
d4328528
MD
1152 ),
1153 side_attr_list()
79f677ba
MD
1154);
1155
89747802 1156side_static_event(my_provider_event_enum, "myprovider", "myeventenum", SIDE_LOGLEVEL_DEBUG,
79f677ba 1157 side_field_list(
f89c4ad1
MD
1158 side_field_enum("5", &myenum, side_elem(side_type_u32(side_attr_list()))),
1159 side_field_enum("400", &myenum, side_elem(side_type_u64(side_attr_list()))),
1160 side_field_enum("200", &myenum, side_elem(side_type_u8(side_attr_list()))),
1161 side_field_enum("-100", &myenum, side_elem(side_type_s8(side_attr_list()))),
8bdd5c12
MD
1162 side_field_enum("6_be", &myenum, side_elem(side_type_u32_be(side_attr_list()))),
1163 side_field_enum("6_le", &myenum, side_elem(side_type_u32_le(side_attr_list()))),
79f677ba
MD
1164 ),
1165 side_attr_list()
1166);
1167
1168static
1169void test_enum(void)
1170{
d5cdb129 1171 side_event(my_provider_event_enum,
79f677ba 1172 side_arg_list(
d8be25de
MD
1173 side_arg_u32(5),
1174 side_arg_u64(400),
1175 side_arg_u8(200),
1176 side_arg_s8(-100),
8bdd5c12
MD
1177#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1178 side_arg_u32(side_bswap_32(6)),
1179 side_arg_u32(6),
1180#else
1181 side_arg_u32(side_bswap_32(6)),
1182 side_arg_u32(6),
1183#endif
79f677ba
MD
1184 )
1185 );
1186}
1187
ea32e5fc 1188/* A bitmap enum maps bits to labels. */
66cff328
MD
1189static side_define_enum_bitmap(myenum_bitmap,
1190 side_enum_bitmap_mapping_list(
1191 side_enum_bitmap_mapping_value("0", 0),
1192 side_enum_bitmap_mapping_range("1-2", 1, 2),
1193 side_enum_bitmap_mapping_range("2-4", 2, 4),
1194 side_enum_bitmap_mapping_value("3", 3),
1195 side_enum_bitmap_mapping_value("30", 30),
1196 side_enum_bitmap_mapping_value("63", 63),
af6aa6e1
MD
1197 side_enum_bitmap_mapping_range("158-160", 158, 160),
1198 side_enum_bitmap_mapping_value("159", 159),
1199 side_enum_bitmap_mapping_range("500-700", 500, 700),
d4328528
MD
1200 ),
1201 side_attr_list()
ea32e5fc
MD
1202);
1203
89747802 1204side_static_event(my_provider_event_enum_bitmap, "myprovider", "myeventenumbitmap", SIDE_LOGLEVEL_DEBUG,
ea32e5fc 1205 side_field_list(
f89c4ad1
MD
1206 side_field_enum_bitmap("bit_0", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1207 side_field_enum_bitmap("bit_1", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1208 side_field_enum_bitmap("bit_2", &myenum_bitmap, side_elem(side_type_u8(side_attr_list()))),
1209 side_field_enum_bitmap("bit_3", &myenum_bitmap, side_elem(side_type_u8(side_attr_list()))),
1210 side_field_enum_bitmap("bit_30", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1211 side_field_enum_bitmap("bit_31", &myenum_bitmap, side_elem(side_type_u32(side_attr_list()))),
1212 side_field_enum_bitmap("bit_63", &myenum_bitmap, side_elem(side_type_u64(side_attr_list()))),
1213 side_field_enum_bitmap("bits_1+63", &myenum_bitmap, side_elem(side_type_u64(side_attr_list()))),
4cc2880b 1214 side_field_enum_bitmap("byte_bit_2", &myenum_bitmap, side_elem(side_type_byte(side_attr_list()))),
f89c4ad1
MD
1215 side_field_enum_bitmap("bit_159", &myenum_bitmap,
1216 side_elem(side_type_array(side_elem(side_type_u32(side_attr_list())), 5, side_attr_list()))),
1217 side_field_enum_bitmap("bit_159", &myenum_bitmap,
1218 side_elem(side_type_vla(side_elem(side_type_u32(side_attr_list())), side_attr_list()))),
8bdd5c12
MD
1219 side_field_enum_bitmap("bit_2_be", &myenum_bitmap, side_elem(side_type_u32_be(side_attr_list()))),
1220 side_field_enum_bitmap("bit_2_le", &myenum_bitmap, side_elem(side_type_u32_le(side_attr_list()))),
ea32e5fc
MD
1221 ),
1222 side_attr_list()
1223);
1224
1225static
1226void test_enum_bitmap(void)
1227{
af6aa6e1
MD
1228 side_event_cond(my_provider_event_enum_bitmap) {
1229 side_arg_define_vec(myarray,
1230 side_arg_list(
1231 side_arg_u32(0),
1232 side_arg_u32(0),
1233 side_arg_u32(0),
1234 side_arg_u32(0),
1235 side_arg_u32(0x80000000), /* bit 159 */
1236 )
1237 );
1238 side_event_call(my_provider_event_enum_bitmap,
1239 side_arg_list(
bab5d6e4
MD
1240 side_arg_u32(1 << 0),
1241 side_arg_u32(1 << 1),
1242 side_arg_u8(1 << 2),
1243 side_arg_u8(1 << 3),
1244 side_arg_u32(1 << 30),
1245 side_arg_u32(1 << 31),
1246 side_arg_u64(1ULL << 63),
1247 side_arg_u64((1ULL << 1) | (1ULL << 63)),
4cc2880b 1248 side_arg_byte(1 << 2),
bab5d6e4
MD
1249 side_arg_array(&myarray),
1250 side_arg_vla(&myarray),
8bdd5c12
MD
1251#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1252 side_arg_u32(side_bswap_32(1 << 2)),
1253 side_arg_u32(1 << 2),
1254#else
1255 side_arg_u32(0x06000000),
1256 side_arg_u32(side_bswap_32(1 << 2)),
1257#endif
af6aa6e1
MD
1258 )
1259 );
1260 }
ea32e5fc
MD
1261}
1262
7aec0d09
MD
1263static uint8_t blob_fixint[] = { 0x55, 0x44, 0x33, 0x22, 0x11 };
1264
89747802 1265side_static_event_variadic(my_provider_event_blob, "myprovider", "myeventblob", SIDE_LOGLEVEL_DEBUG,
7aec0d09 1266 side_field_list(
f7653b43
MD
1267 side_field_byte("blobfield", side_attr_list()),
1268 side_field_array("arrayblob", side_elem(side_type_byte(side_attr_list())), 3, side_attr_list()),
1269 side_field_array("arrayblobfix", side_elem(side_type_byte(side_attr_list())), SIDE_ARRAY_SIZE(blob_fixint), side_attr_list()),
1270 side_field_vla("vlablobfix", side_elem(side_type_byte(side_attr_list())), side_attr_list()),
7aec0d09
MD
1271 ),
1272 side_attr_list()
1273);
1274
1275static
1276void test_blob(void)
1277{
d5cdb129 1278 side_event_cond(my_provider_event_blob) {
f7653b43 1279 side_arg_define_vec(myarray, side_arg_list(side_arg_byte(1), side_arg_byte(2), side_arg_byte(3)));
199e7aa9
MD
1280 side_arg_dynamic_define_vec(myvla,
1281 side_arg_list(
f7653b43
MD
1282 side_arg_dynamic_byte(0x22, side_attr_list()),
1283 side_arg_dynamic_byte(0x33, side_attr_list()),
8d20e708
MD
1284 ),
1285 side_attr_list()
199e7aa9 1286 );
d5cdb129 1287 side_event_call_variadic(my_provider_event_blob,
7aec0d09 1288 side_arg_list(
f7653b43 1289 side_arg_byte(0x55),
7aec0d09 1290 side_arg_array(&myarray),
f7653b43
MD
1291 side_arg_array_byte(blob_fixint),
1292 side_arg_vla_byte(blob_fixint, SIDE_ARRAY_SIZE(blob_fixint)),
199e7aa9
MD
1293 ),
1294 side_arg_list(
1295 side_arg_dynamic_field("varblobfield",
f7653b43 1296 side_arg_dynamic_byte(0x55, side_attr_list())
199e7aa9 1297 ),
8d20e708
MD
1298 side_arg_dynamic_field("varblobvla", side_arg_dynamic_vla(&myvla)),
1299 ),
1300 side_attr_list()
7aec0d09
MD
1301 );
1302 }
1303}
ea32e5fc 1304
89747802 1305side_static_event_variadic(my_provider_event_format_string,
71aa8975
MD
1306 "myprovider", "myeventformatstring", SIDE_LOGLEVEL_DEBUG,
1307 side_field_list(
1308 side_field_string("fmt", side_attr_list()),
1309 ),
1310 side_attr_list(
1311 side_attr("lang.c.format_string", side_attr_bool(true)),
1312 )
1313);
1314
1315static
1316void test_fmt_string(void)
1317{
71aa8975
MD
1318 side_event_cond(my_provider_event_format_string) {
1319 side_arg_dynamic_define_vec(args,
1320 side_arg_list(
1321 side_arg_dynamic_string("blah", side_attr_list()),
1322 side_arg_dynamic_s32(123, side_attr_list()),
1323 ),
1324 side_attr_list()
1325 );
1326 side_event_call_variadic(my_provider_event_format_string,
1327 side_arg_list(
1328 side_arg_string("This is a formatted string with str: %s int: %d"),
1329 ),
1330 side_arg_list(
1331 side_arg_dynamic_field("arguments", side_arg_dynamic_vla(&args)),
1332 ),
1333 side_attr_list()
1334 );
1335 }
1336}
1337
8bdd5c12
MD
1338side_static_event_variadic(my_provider_event_endian, "myprovider", "myevent_endian", SIDE_LOGLEVEL_DEBUG,
1339 side_field_list(
1340 side_field_u16_le("u16_le", side_attr_list()),
1341 side_field_u32_le("u32_le", side_attr_list()),
1342 side_field_u64_le("u64_le", side_attr_list()),
1343 side_field_s16_le("s16_le", side_attr_list()),
1344 side_field_s32_le("s32_le", side_attr_list()),
1345 side_field_s64_le("s64_le", side_attr_list()),
1346 side_field_u16_be("u16_be", side_attr_list()),
1347 side_field_u32_be("u32_be", side_attr_list()),
1348 side_field_u64_be("u64_be", side_attr_list()),
1349 side_field_s16_be("s16_be", side_attr_list()),
1350 side_field_s32_be("s32_be", side_attr_list()),
1351 side_field_s64_be("s64_be", side_attr_list()),
1352 ),
1353 side_attr_list()
1354);
1355
1356static
1357void test_endian(void)
1358{
1359 side_event_variadic(my_provider_event_endian,
1360 side_arg_list(
1361#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1362 side_arg_u16(1),
1363 side_arg_u32(1),
1364 side_arg_u64(1),
1365 side_arg_s16(1),
1366 side_arg_s32(1),
1367 side_arg_s64(1),
1368 side_arg_u16(side_bswap_16(1)),
1369 side_arg_u32(side_bswap_32(1)),
1370 side_arg_u64(side_bswap_64(1)),
1371 side_arg_s16(side_bswap_16(1)),
1372 side_arg_s32(side_bswap_32(1)),
1373 side_arg_s64(side_bswap_64(1)),
1374#else
1375 side_arg_u16(side_bswap_16(1)),
1376 side_arg_u32(side_bswap_32(1)),
1377 side_arg_u64(side_bswap_64(1)),
1378 side_arg_s16(side_bswap_16(1)),
1379 side_arg_s32(side_bswap_32(1)),
1380 side_arg_s64(side_bswap_64(1)),
1381 side_arg_u16(1),
1382 side_arg_u32(1),
1383 side_arg_u64(1),
1384 side_arg_s16(1),
1385 side_arg_s32(1),
1386 side_arg_s64(1),
1387#endif
1388 ),
1389 side_arg_list(
1390#if SIDE_BYTE_ORDER == SIDE_LITTLE_ENDIAN
1391 side_arg_dynamic_field("u16_le", side_arg_dynamic_u16_le(1, side_attr_list())),
1392 side_arg_dynamic_field("u32_le", side_arg_dynamic_u32_le(1, side_attr_list())),
1393 side_arg_dynamic_field("u64_le", side_arg_dynamic_u64_le(1, side_attr_list())),
1394 side_arg_dynamic_field("s16_le", side_arg_dynamic_s16_le(1, side_attr_list())),
1395 side_arg_dynamic_field("s32_le", side_arg_dynamic_s32_le(1, side_attr_list())),
1396 side_arg_dynamic_field("s64_le", side_arg_dynamic_s64_le(1, side_attr_list())),
1397 side_arg_dynamic_field("u16_be", side_arg_dynamic_u16_be(side_bswap_16(1), side_attr_list())),
1398 side_arg_dynamic_field("u32_be", side_arg_dynamic_u32_be(side_bswap_32(1), side_attr_list())),
1399 side_arg_dynamic_field("u64_be", side_arg_dynamic_u64_be(side_bswap_64(1), side_attr_list())),
1400 side_arg_dynamic_field("s16_be", side_arg_dynamic_s16_be(side_bswap_16(1), side_attr_list())),
1401 side_arg_dynamic_field("s32_be", side_arg_dynamic_s32_be(side_bswap_32(1), side_attr_list())),
1402 side_arg_dynamic_field("s64_be", side_arg_dynamic_s64_be(side_bswap_64(1), side_attr_list())),
1403#else
1404 side_arg_dynamic_field("u16_le", side_arg_dynamic_u16_le(side_bswap_16(1), side_attr_list())),
1405 side_arg_dynamic_field("u32_le", side_arg_dynamic_u32_le(side_bswap_32(1), side_attr_list())),
1406 side_arg_dynamic_field("u64_le", side_arg_dynamic_u64_le(side_bswap_64(1), side_attr_list())),
1407 side_arg_dynamic_field("s16_le", side_arg_dynamic_s16_le(side_bswap_16(1), side_attr_list())),
1408 side_arg_dynamic_field("s32_le", side_arg_dynamic_s32_le(side_bswap_32(1), side_attr_list())),
1409 side_arg_dynamic_field("s64_le", side_arg_dynamic_s64_le(side_bswap_64(1), side_attr_list())),
1410 side_arg_dynamic_field("u16_be", side_arg_dynamic_u16_be(1, side_attr_list())),
1411 side_arg_dynamic_field("u32_be", side_arg_dynamic_u32_be(1, side_attr_list())),
1412 side_arg_dynamic_field("u64_be", side_arg_dynamic_u64_be(1, side_attr_list())),
1413 side_arg_dynamic_field("s16_be", side_arg_dynamic_s16_be(1, side_attr_list())),
1414 side_arg_dynamic_field("s32_be", side_arg_dynamic_s32_be(1, side_attr_list())),
1415 side_arg_dynamic_field("s64_be", side_arg_dynamic_s64_be(1, side_attr_list())),
1416#endif
1417 ),
1418 side_attr_list()
1419 );
1420}
1421
1d9c515c
MD
1422side_static_event(my_provider_event_base, "myprovider", "myevent_base", SIDE_LOGLEVEL_DEBUG,
1423 side_field_list(
1424 side_field_u8("u8base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1425 side_field_u8("u8base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1426 side_field_u8("u8base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1427 side_field_u8("u8base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1428 side_field_u16("u16base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1429 side_field_u16("u16base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1430 side_field_u16("u16base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1431 side_field_u16("u16base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1432 side_field_u32("u32base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1433 side_field_u32("u32base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1434 side_field_u32("u32base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1435 side_field_u32("u32base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1436 side_field_u64("u64base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1437 side_field_u64("u64base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1438 side_field_u64("u64base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1439 side_field_u64("u64base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1440 side_field_s8("s8base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1441 side_field_s8("s8base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1442 side_field_s8("s8base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1443 side_field_s8("s8base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1444 side_field_s16("s16base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1445 side_field_s16("s16base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1446 side_field_s16("s16base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1447 side_field_s16("s16base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1448 side_field_s32("s32base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1449 side_field_s32("s32base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1450 side_field_s32("s32base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1451 side_field_s32("s32base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1452 side_field_s64("s64base2", side_attr_list(side_attr("std.integer.base", side_attr_u8(2)))),
1453 side_field_s64("s64base8", side_attr_list(side_attr("std.integer.base", side_attr_u8(8)))),
1454 side_field_s64("s64base10", side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1455 side_field_s64("s64base16", side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
1456 ),
1457 side_attr_list()
1458);
1459
1460static
1461void test_base(void)
1462{
1463 side_event(my_provider_event_base,
1464 side_arg_list(
1465 side_arg_u8(55),
1466 side_arg_u8(55),
1467 side_arg_u8(55),
1468 side_arg_u8(55),
1469 side_arg_u16(55),
1470 side_arg_u16(55),
1471 side_arg_u16(55),
1472 side_arg_u16(55),
1473 side_arg_u32(55),
1474 side_arg_u32(55),
1475 side_arg_u32(55),
1476 side_arg_u32(55),
1477 side_arg_u64(55),
1478 side_arg_u64(55),
1479 side_arg_u64(55),
1480 side_arg_u64(55),
1481 side_arg_s8(-55),
1482 side_arg_s8(-55),
1483 side_arg_s8(-55),
1484 side_arg_s8(-55),
1485 side_arg_s16(-55),
1486 side_arg_s16(-55),
1487 side_arg_s16(-55),
1488 side_arg_s16(-55),
1489 side_arg_s32(-55),
1490 side_arg_s32(-55),
1491 side_arg_s32(-55),
1492 side_arg_s32(-55),
1493 side_arg_s64(-55),
1494 side_arg_s64(-55),
1495 side_arg_s64(-55),
1496 side_arg_s64(-55),
1497 )
1498 );
1499}
1500
7a1cb105
MD
1501struct test {
1502 uint32_t a;
1503 uint64_t b;
1504 uint8_t c;
1505 int32_t d;
1506 uint16_t e;
bc0b21eb
MD
1507 int8_t f;
1508 int16_t g;
1509 int32_t h;
1510 int64_t i;
1511 int64_t j;
1512 int64_t k;
7a1cb105
MD
1513};
1514
1515static side_define_struct_sg(mystructsgdef,
1516 side_field_sg_list(
8e87e437
MD
1517 side_field_sg_unsigned_integer("a", offsetof(struct test, a),
1518 side_struct_field_sizeof_bit(struct test, a), 0,
1519 side_struct_field_sizeof_bit(struct test, a), side_attr_list()),
1520 side_field_sg_signed_integer("d", offsetof(struct test, d),
1521 side_struct_field_sizeof_bit(struct test, d), 0,
1522 side_struct_field_sizeof_bit(struct test, d), side_attr_list()),
1523 side_field_sg_unsigned_integer("e", offsetof(struct test, e),
1524 side_struct_field_sizeof_bit(struct test, e), 8, 4,
7a1cb105 1525 side_attr_list(side_attr("std.integer.base", side_attr_u8(16)))),
bc0b21eb
MD
1526 side_field_sg_signed_integer("f", offsetof(struct test, f),
1527 side_struct_field_sizeof_bit(struct test, f), 1, 4,
1528 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1529 side_field_sg_signed_integer("g", offsetof(struct test, g),
1530 side_struct_field_sizeof_bit(struct test, g), 11, 4,
1531 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1532 side_field_sg_signed_integer("h", offsetof(struct test, h),
1533 side_struct_field_sizeof_bit(struct test, h), 1, 31,
1534 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1535 side_field_sg_signed_integer("i", offsetof(struct test, i),
1536 side_struct_field_sizeof_bit(struct test, i), 33, 20,
1537 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1538 side_field_sg_signed_integer("j", offsetof(struct test, j),
1539 side_struct_field_sizeof_bit(struct test, j), 63, 1,
1540 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
1541 side_field_sg_signed_integer("k", offsetof(struct test, k),
1542 side_struct_field_sizeof_bit(struct test, k), 1, 63,
1543 side_attr_list(side_attr("std.integer.base", side_attr_u8(10)))),
9b641221 1544 side_field_sg_null("null", side_attr_list()),
7a1cb105
MD
1545 ),
1546 side_attr_list()
1547);
1548
1549side_static_event(my_provider_event_structsg, "myprovider", "myeventstructsg", SIDE_LOGLEVEL_DEBUG,
1550 side_field_list(
1551 side_field_struct_sg("structsg", &mystructsgdef),
1552 ),
1553 side_attr_list()
1554);
1555
1556static
1557void test_struct_sg(void)
1558{
1559 side_event_cond(my_provider_event_structsg) {
1560 struct test mystruct = {
1561 .a = 55,
1562 .b = 123,
1563 .c = 2,
1564 .d = -55,
1565 .e = 0xABCD,
bc0b21eb
MD
1566 .f = -1,
1567 .g = -1,
1568 .h = -1,
1569 .i = -1,
1570 .j = -1,
1571 .k = -1,
7a1cb105
MD
1572 };
1573 side_event_call(my_provider_event_structsg, side_arg_list(side_arg_struct_sg(&mystruct)));
1574 }
1575}
1576
f611d0c3
MD
1577int main()
1578{
1579 test_fields();
89747802
MD
1580 test_event_hidden();
1581 test_event_export();
c7a14585 1582 test_struct_literal();
f611d0c3
MD
1583 test_struct();
1584 test_array();
1585 test_vla();
1586 test_vla_visitor();
cdd6e858 1587 test_vla_visitor_2d();
ba845af5 1588 test_array_fixint();
1533629f 1589 test_vla_fixint();
a2e2357e
MD
1590 test_dynamic_basic_type();
1591 test_dynamic_vla();
465e5e7e 1592 test_dynamic_null();
c208889e
MD
1593 test_dynamic_struct();
1594 test_dynamic_nested_struct();
1595 test_dynamic_vla_struct();
1596 test_dynamic_struct_vla();
948e3e72 1597 test_dynamic_nested_vla();
19fa6aa2 1598 test_variadic();
41c4d119 1599 test_static_variadic();
4f40d951
MD
1600 test_bool();
1601 test_dynamic_bool();
8ceca0cd 1602 test_dynamic_vla_with_visitor();
2b359235 1603 test_dynamic_struct_with_visitor();
65010f43 1604 test_event_user_attribute();
a848763d 1605 test_field_user_attribute();
808bd9bf
MD
1606 test_variadic_attr();
1607 test_variadic_vla_attr();
1608 test_variadic_struct_attr();
fb25b355
MD
1609 test_float();
1610 test_variadic_float();
79f677ba 1611 test_enum();
ea32e5fc 1612 test_enum_bitmap();
7aec0d09 1613 test_blob();
71aa8975 1614 test_fmt_string();
8bdd5c12 1615 test_endian();
1d9c515c 1616 test_base();
7a1cb105 1617 test_struct_sg();
f611d0c3
MD
1618 return 0;
1619}
This page took 0.105385 seconds and 4 git commands to generate.