cpp-common/bt2c/fmt.hpp: use `wise_enum::string_type` in `EnableIfIsWiseEnum` definition
[babeltrace.git] / src / ctf-writer / visitor.c
CommitLineData
16ca5ff0 1/*
0235b0db 2 * SPDX-License-Identifier: MIT
16ca5ff0
PP
3 *
4 * Copyright 2016 Jérémie Galarneau <jeremie.galarneau@efficios.com>
5 *
0235b0db 6 * Babeltrace CTF writer - Visitor
16ca5ff0
PP
7 */
8
217cf9d3 9#include <babeltrace2-ctf-writer/object.h>
16ca5ff0 10
91d81473 11#include "common/macros.h"
578e048b
MJ
12
13#include "visitor.h"
14
16ca5ff0
PP
15int 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);
e1e02a22 44 BT_CTF_OBJECT_PUT_REF_AND_RESET(child);
16ca5ff0
PP
45 if (ret) {
46 goto end;
47 }
48 }
49end:
50 return ret;
51}
52
1353b066 53BT_EXPORT
16ca5ff0
PP
54enum 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;
64end:
65 return ret;
66}
67
1353b066 68BT_EXPORT
16ca5ff0
PP
69void *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;
78end:
79 return ret;
80}
This page took 0.074537 seconds and 4 git commands to generate.