- BT_ASSERT_PRE_VALID_INDEX(index, field_path->indexes->len);
- return bt_field_path_get_index_by_index_inline(field_path, index);
+ BT_ASSERT_PRE_VALID_INDEX(index, field_path->items->len);
+ return bt_field_path_borrow_item_by_index_inline(field_path, index);
+}
+
+enum bt_field_path_item_type bt_field_path_item_get_type(
+ const struct bt_field_path_item *field_path_item)
+{
+ BT_ASSERT_PRE_NON_NULL(field_path_item, "Field path item");
+ return field_path_item->type;
+}
+
+uint64_t bt_field_path_item_index_get_index(
+ const struct bt_field_path_item *field_path_item)
+{
+ BT_ASSERT_PRE_NON_NULL(field_path_item, "Field path item");
+ BT_ASSERT_PRE(field_path_item->type == BT_FIELD_PATH_ITEM_TYPE_INDEX,
+ "Field path item is not an index field path item: "
+ "addr=%p, type=%s", field_path_item,
+ bt_field_path_item_type_string(field_path_item->type));
+ return field_path_item->index;
+}
+
+void bt_field_path_get_ref(const struct bt_field_path *field_path)
+{
+ bt_object_get_ref(field_path);
+}
+
+void bt_field_path_put_ref(const struct bt_field_path *field_path)
+{
+ bt_object_put_ref(field_path);