Commit | Line | Data |
---|---|---|
5d7e8359 PP |
1 | /* |
2 | * SPDX-License-Identifier: GPL-2.0-only | |
3 | * | |
4 | * Copyright (C) 2020 Philippe Proulx <pproulx@efficios.com> | |
5 | */ | |
6 | ||
7 | #ifndef TESTS_LIB_CONDS_UTILS_H | |
8 | #define TESTS_LIB_CONDS_UTILS_H | |
9 | ||
fb10c90e SM |
10 | #include <babeltrace2/babeltrace.h> |
11 | ||
486428e8 SM |
12 | enum cond_trigger_func_type |
13 | { | |
14 | COND_TRIGGER_FUNC_TYPE_BASIC, | |
15 | COND_TRIGGER_FUNC_TYPE_RUN_IN_COMP_CLS_INIT, | |
5d7e8359 PP |
16 | }; |
17 | ||
486428e8 SM |
18 | enum cond_trigger_type |
19 | { | |
20 | COND_TRIGGER_TYPE_PRE, | |
21 | COND_TRIGGER_TYPE_POST, | |
5d7e8359 PP |
22 | }; |
23 | ||
486428e8 SM |
24 | typedef void (*cond_trigger_basic_func)(void); |
25 | typedef void (*cond_trigger_run_in_comp_cls_init_func)(bt_self_component *); | |
5d7e8359 | 26 | |
486428e8 SM |
27 | struct cond_trigger |
28 | { | |
29 | enum cond_trigger_type type; | |
30 | enum cond_trigger_func_type func_type; | |
31 | const char *cond_id; | |
32 | const char *suffix; | |
33 | union | |
34 | { | |
35 | cond_trigger_basic_func basic; | |
36 | cond_trigger_run_in_comp_cls_init_func run_in_comp_cls_init; | |
37 | } func; | |
5d7e8359 PP |
38 | }; |
39 | ||
486428e8 SM |
40 | #define COND_TRIGGER_PRE_BASIC(_cond_id, _suffix, _func) \ |
41 | { \ | |
42 | .type = COND_TRIGGER_TYPE_PRE, .func_type = COND_TRIGGER_FUNC_TYPE_BASIC, \ | |
43 | .cond_id = _cond_id, .suffix = _suffix, .func = { \ | |
44 | .basic = _func, \ | |
45 | } \ | |
46 | } | |
5d7e8359 | 47 | |
486428e8 SM |
48 | #define COND_TRIGGER_POST_BASIC(_cond_id, _suffix, _func) \ |
49 | { \ | |
50 | .type = COND_TRIGGER_TYPE_POST, .func_type = COND_TRIGGER_FUNC_TYPE_BASIC, \ | |
51 | .cond_id = _cond_id, .suffix = _suffix, .func = { \ | |
52 | .basic = _func, \ | |
53 | } \ | |
54 | } | |
5d7e8359 | 55 | |
486428e8 SM |
56 | #define COND_TRIGGER_PRE_RUN_IN_COMP_CLS_INIT(_cond_id, _suffix, _func) \ |
57 | { \ | |
58 | .type = COND_TRIGGER_TYPE_PRE, .func_type = COND_TRIGGER_FUNC_TYPE_RUN_IN_COMP_CLS_INIT, \ | |
59 | .cond_id = _cond_id, .suffix = _suffix, .func = { \ | |
60 | .run_in_comp_cls_init = _func, \ | |
61 | } \ | |
62 | } | |
5d7e8359 | 63 | |
486428e8 SM |
64 | #define COND_TRIGGER_POST_RUN_IN_COMP_CLS_INIT(_cond_id, _suffix, _func) \ |
65 | { \ | |
66 | .type = COND_TRIGGER_TYPE_POST, .func_type = COND_TRIGGER_FUNC_TYPE_RUN_IN_COMP_CLS_INIT, \ | |
67 | .cond_id = _cond_id, .suffix = _suffix, .func = { \ | |
68 | .run_in_comp_cls_init = _func, \ | |
69 | } \ | |
70 | } | |
5d7e8359 | 71 | |
486428e8 SM |
72 | void cond_main(int argc, const char *argv[], const struct cond_trigger triggers[], |
73 | size_t trigger_count); | |
5d7e8359 PP |
74 | |
75 | #endif /* TESTS_LIB_CONDS_UTILS_H */ |