*/
#include <babeltrace/object-internal.h>
-#include <assert.h>
+#include <babeltrace/ctf-ir/field-path.h>
+#include <babeltrace/assert-internal.h>
#include <glib.h>
-struct bt_ctf_field_path {
+struct bt_field_path {
struct bt_object base;
- enum bt_ctf_scope root;
+ enum bt_scope root;
- /*
- * Array of integers (int) indicating the index in either
- * structures, variants, arrays, or sequences that make up
- * the path to a field type. -1 means the "current element
- * of an array or sequence type".
- */
+ /* Array of `uint64_t` (indexes) */
GArray *indexes;
};
BT_HIDDEN
-struct bt_ctf_field_path *bt_ctf_field_path_create(void);
-
-BT_HIDDEN
-void bt_ctf_field_path_clear(struct bt_ctf_field_path *field_path);
-
-BT_HIDDEN
-struct bt_ctf_field_path *bt_ctf_field_path_copy(
- struct bt_ctf_field_path *path);
+struct bt_field_path *bt_field_path_create(void);
static inline
-GString *bt_ctf_field_path_string(struct bt_ctf_field_path *path)
+uint64_t bt_field_path_get_index_by_index_inline(
+ struct bt_field_path *field_path, uint64_t index)
{
- GString *str = g_string_new(NULL);
- size_t i;
-
- assert(path);
-
- if (!str) {
- goto end;
- }
-
- g_string_append_printf(str, "[%s", bt_ctf_scope_string(path->root));
-
- for (i = 0; i < path->indexes->len; i++) {
- int index = g_array_index(path->indexes, int, i);
-
- g_string_append_printf(str, ", %d", index);
- }
-
- g_string_append(str, "]");
-
-end:
- return str;
+ BT_ASSERT(field_path);
+ BT_ASSERT(index < field_path->indexes->len);
+ return g_array_index(field_path->indexes, uint64_t, index);
}
#endif /* BABELTRACE_CTF_IR_FIELD_PATH_INTERNAL */