X-Git-Url: https://git.efficios.com/?a=blobdiff_plain;f=src%2Flib%2Ftrace-ir%2Ffield.c;h=e074966290254b3ccc2fea8874b0ae8ee8f9028d;hb=b8ddb4f036272e30030202637201d11baf5f20a5;hp=7c0c2d32e8325ef5c06e5d3f298470c64a91ed7b;hpb=467673c1a8e30cc146cddffa1970bbb430052680;p=babeltrace.git diff --git a/src/lib/trace-ir/field.c b/src/lib/trace-ir/field.c index 7c0c2d32..e0749662 100644 --- a/src/lib/trace-ir/field.c +++ b/src/lib/trace-ir/field.c @@ -188,14 +188,15 @@ struct bt_field *(* const field_create_funcs[])(struct bt_field_class *) = { [BT_FIELD_CLASS_TYPE_STRING] = create_string_field, [BT_FIELD_CLASS_TYPE_STRUCTURE] = create_structure_field, [BT_FIELD_CLASS_TYPE_STATIC_ARRAY] = create_static_array_field, - [BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY] = create_dynamic_array_field, + [BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITHOUT_LENGTH_FIELD] = create_dynamic_array_field, + [BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITH_LENGTH_FIELD] = create_dynamic_array_field, [BT_FIELD_CLASS_TYPE_OPTION_WITHOUT_SELECTOR] = create_option_field, [BT_FIELD_CLASS_TYPE_OPTION_WITH_BOOL_SELECTOR] = create_option_field, [BT_FIELD_CLASS_TYPE_OPTION_WITH_UNSIGNED_INTEGER_SELECTOR] = create_option_field, [BT_FIELD_CLASS_TYPE_OPTION_WITH_SIGNED_INTEGER_SELECTOR] = create_option_field, [BT_FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR] = create_variant_field, - [BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_SELECTOR] = create_variant_field, - [BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_SELECTOR] = create_variant_field, + [BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR] = create_variant_field, + [BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR] = create_variant_field, }; static @@ -238,14 +239,15 @@ void (* const field_destroy_funcs[])(struct bt_field *) = { [BT_FIELD_CLASS_TYPE_STRING] = destroy_string_field, [BT_FIELD_CLASS_TYPE_STRUCTURE] = destroy_structure_field, [BT_FIELD_CLASS_TYPE_STATIC_ARRAY] = destroy_array_field, - [BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY] = destroy_array_field, + [BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITHOUT_LENGTH_FIELD] = destroy_array_field, + [BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITH_LENGTH_FIELD] = destroy_array_field, [BT_FIELD_CLASS_TYPE_OPTION_WITHOUT_SELECTOR] = destroy_option_field, [BT_FIELD_CLASS_TYPE_OPTION_WITH_BOOL_SELECTOR] = destroy_option_field, [BT_FIELD_CLASS_TYPE_OPTION_WITH_UNSIGNED_INTEGER_SELECTOR] = destroy_option_field, [BT_FIELD_CLASS_TYPE_OPTION_WITH_SIGNED_INTEGER_SELECTOR] = destroy_option_field, [BT_FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR] = destroy_variant_field, - [BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_SELECTOR] = destroy_variant_field, - [BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_SELECTOR] = destroy_variant_field, + [BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR] = destroy_variant_field, + [BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR] = destroy_variant_field, }; struct bt_field_class *bt_field_borrow_class(struct bt_field *field) @@ -293,7 +295,7 @@ void init_field(struct bt_field *field, struct bt_field_class *fc, bt_object_init_unique(&field->base); field->methods = methods; field->class = fc; - bt_object_get_no_null_check(fc); + bt_object_get_ref_no_null_check(fc); } static @@ -393,7 +395,8 @@ struct bt_field *create_string_field(struct bt_field_class *fc) sizeof(char), 1); if (!string_field->buf) { BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate a GArray."); - BT_OBJECT_PUT_REF_AND_RESET(string_field); + bt_field_destroy((void *) string_field); + string_field = NULL; goto end; } @@ -462,7 +465,8 @@ struct bt_field *create_structure_field(struct bt_field_class *fc) &struct_field->fields)) { BT_LIB_LOGE_APPEND_CAUSE( "Cannot create structure member fields: %![fc-]+F", fc); - BT_OBJECT_PUT_REF_AND_RESET(struct_field); + bt_field_destroy((void *) struct_field); + struct_field = NULL; goto end; } @@ -493,7 +497,8 @@ struct bt_field *create_option_field(struct bt_field_class *fc) "Failed to create option field's content field: " "%![opt-fc-]+F, %![content-fc-]+F", opt_fc, opt_fc->content_fc); - BT_OBJECT_PUT_REF_AND_RESET(opt_field); + bt_field_destroy((void *) opt_field); + opt_field = NULL; goto end; } @@ -522,7 +527,8 @@ struct bt_field *create_variant_field(struct bt_field_class *fc) &var_field->fields)) { BT_LIB_LOGE_APPEND_CAUSE("Cannot create variant member fields: " "%![fc-]+F", fc); - BT_OBJECT_PUT_REF_AND_RESET(var_field); + bt_field_destroy((void *) var_field); + var_field = NULL; goto end; } @@ -588,7 +594,8 @@ struct bt_field *create_static_array_field(struct bt_field_class *fc) if (init_array_field_fields(array_field)) { BT_LIB_LOGE_APPEND_CAUSE("Cannot create static array fields: " "%![fc-]+F", fc); - BT_OBJECT_PUT_REF_AND_RESET(array_field); + bt_field_destroy((void *) array_field); + array_field = NULL; goto end; } @@ -616,7 +623,8 @@ struct bt_field *create_dynamic_array_field(struct bt_field_class *fc) if (init_array_field_fields(array_field)) { BT_LIB_LOGE_APPEND_CAUSE("Cannot create dynamic array fields: " "%![fc-]+F", fc); - BT_OBJECT_PUT_REF_AND_RESET(array_field); + bt_field_destroy((void *) array_field); + array_field = NULL; goto end; } @@ -929,8 +937,7 @@ enum bt_field_array_dynamic_set_length_status bt_field_array_dynamic_set_length( struct bt_field_array *array_field = (void *) field; BT_ASSERT_PRE_DEV_NON_NULL(field, "Field"); - BT_ASSERT_PRE_DEV_FIELD_HAS_CLASS_TYPE(field, - BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY, "Field"); + BT_ASSERT_PRE_DEV_FIELD_IS_DYNAMIC_ARRAY(field, "Field"); BT_ASSERT_PRE_DEV_FIELD_HOT(field, "Field"); if (G_UNLIKELY(length > array_field->fields->len)) { @@ -1139,23 +1146,23 @@ bt_field_variant_borrow_selected_class_option_const( return borrow_variant_field_selected_class_option(field); } -const struct bt_field_class_variant_with_selector_unsigned_option * -bt_field_variant_with_unsigned_selector_borrow_selected_class_option_const( +const struct bt_field_class_variant_with_selector_integer_unsigned_option * +bt_field_variant_with_unsigned_integer_selector_borrow_selected_class_option_const( const struct bt_field *field) { BT_ASSERT_PRE_DEV_NON_NULL(field, "Field"); BT_ASSERT_PRE_DEV_FIELD_HAS_CLASS_TYPE(field, - BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_SELECTOR, "Field"); + BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR, "Field"); return (const void *) borrow_variant_field_selected_class_option(field); } -const struct bt_field_class_variant_with_selector_signed_option * -bt_field_variant_with_signed_selector_borrow_selected_class_option_const( +const struct bt_field_class_variant_with_selector_integer_signed_option * +bt_field_variant_with_signed_integer_selector_borrow_selected_class_option_const( const struct bt_field *field) { BT_ASSERT_PRE_DEV_NON_NULL(field, "Field"); BT_ASSERT_PRE_DEV_FIELD_HAS_CLASS_TYPE(field, - BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_SELECTOR, "Field"); + BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR, "Field"); return (const void *) borrow_variant_field_selected_class_option(field); }