Visibility hidden by default
[babeltrace.git] / src / ctf-writer / visitor.c
1 /*
2 * SPDX-License-Identifier: MIT
3 *
4 * Copyright 2016 Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 *
6 * Babeltrace CTF writer - Visitor
7 */
8
9 #include <babeltrace2-ctf-writer/object.h>
10
11 #include "common/macros.h"
12
13 #include "visitor.h"
14
15 int bt_ctf_visitor_helper(struct bt_ctf_visitor_object *root,
16 bt_ctf_child_count_accessor child_counter,
17 bt_ctf_child_accessor child_accessor,
18 bt_ctf_child_visitor child_visitor,
19 bt_ctf_visitor visitor,
20 void *data)
21 {
22 int ret, child_count, i;
23
24 ret = visitor(root, data);
25 if (ret) {
26 goto end;
27 }
28
29 child_count = child_counter(root->object);
30 if (child_count < 0) {
31 ret = child_count;
32 goto end;
33 }
34
35 for (i = 0; i < child_count; i++) {
36 void *child;
37
38 child = child_accessor(root->object, i);
39 if (!child) {
40 ret = -1;
41 goto end;
42 }
43 ret = child_visitor(child, visitor, data);
44 BT_CTF_OBJECT_PUT_REF_AND_RESET(child);
45 if (ret) {
46 goto end;
47 }
48 }
49 end:
50 return ret;
51 }
52
53 BT_EXPORT
54 enum bt_ctf_visitor_object_type bt_ctf_visitor_object_get_type(
55 struct bt_ctf_visitor_object *object)
56 {
57 enum bt_ctf_visitor_object_type ret = BT_CTF_VISITOR_OBJECT_TYPE_UNKNOWN;
58
59 if (!object) {
60 goto end;
61 }
62
63 ret = object->type;
64 end:
65 return ret;
66 }
67
68 BT_EXPORT
69 void *bt_ctf_visitor_object_get_object(struct bt_ctf_visitor_object *object)
70 {
71 void *ret = NULL;
72
73 if (!object) {
74 goto end;
75 }
76
77 ret = object->object;
78 end:
79 return ret;
80 }
This page took 0.031019 seconds and 4 git commands to generate.