#include <stdint.h>
+/* For bt_field_path, bt_field_path_item */
+#include <babeltrace/types.h>
+
#ifdef __cplusplus
extern "C" {
#endif
-struct bt_field_path;
+typedef enum bt_field_path_item_type {
+ BT_FIELD_PATH_ITEM_TYPE_INDEX,
+ BT_FIELD_PATH_ITEM_TYPE_CURRENT_ARRAY_ELEMENT,
+} bt_field_path_item_type;
-enum bt_scope {
- BT_SCOPE_PACKET_HEADER,
+typedef enum bt_scope {
BT_SCOPE_PACKET_CONTEXT,
- BT_SCOPE_EVENT_HEADER,
BT_SCOPE_EVENT_COMMON_CONTEXT,
BT_SCOPE_EVENT_SPECIFIC_CONTEXT,
BT_SCOPE_EVENT_PAYLOAD,
-};
+} bt_scope;
+
+extern bt_scope bt_field_path_get_root_scope(
+ const bt_field_path *field_path);
+
+extern uint64_t bt_field_path_get_item_count(
+ const bt_field_path *field_path);
-extern enum bt_scope bt_field_path_get_root_scope(
- const struct bt_field_path *field_path);
+extern const bt_field_path_item *bt_field_path_borrow_item_by_index_const(
+ const bt_field_path *field_path, uint64_t index);
-extern uint64_t bt_field_path_get_index_count(
- const struct bt_field_path *field_path);
+extern bt_field_path_item_type bt_field_path_item_get_type(
+ const bt_field_path_item *field_path_item);
-extern uint64_t bt_field_path_get_index_by_index(
- const struct bt_field_path *field_path, uint64_t index);
+extern uint64_t bt_field_path_item_index_get_index(
+ const bt_field_path_item *field_path_item);
-extern void bt_field_path_get_ref(const struct bt_field_path *field_path);
+extern void bt_field_path_get_ref(const bt_field_path *field_path);
-extern void bt_field_path_put_ref(const struct bt_field_path *field_path);
+extern void bt_field_path_put_ref(const bt_field_path *field_path);
#define BT_FIELD_PATH_PUT_REF_AND_RESET(_var) \
do { \