+void bt_field_option_set_has_field(struct bt_field *field, bt_bool has_field)
+{
+ struct bt_field_option *opt_field = (void *) field;
+
+ BT_ASSERT_PRE_DEV_NON_NULL(field, "Field");
+ BT_ASSERT_PRE_DEV_FIELD_HAS_CLASS_TYPE(field,
+ BT_FIELD_CLASS_TYPE_OPTION, "Field");
+ BT_ASSERT_PRE_DEV_FIELD_HOT(field, "Field");
+
+ if (has_field) {
+ opt_field->selected_field = opt_field->content_field;
+ } else {
+ opt_field->selected_field = NULL;
+ }
+}
+
+struct bt_field *bt_field_option_borrow_field(struct bt_field *field)
+{
+ struct bt_field_option *opt_field = (void *) field;
+
+ BT_ASSERT_PRE_DEV_NON_NULL(field, "Field");
+ BT_ASSERT_PRE_DEV_FIELD_HAS_CLASS_TYPE(field,
+ BT_FIELD_CLASS_TYPE_OPTION, "Field");
+ return opt_field->selected_field;
+}
+
+const struct bt_field *bt_field_option_borrow_field_const(
+ const struct bt_field *field)
+{
+ return (const void *) bt_field_option_borrow_field((void *) field);
+}
+