lib: have dedicated "dynamic array FC with/without length field" types
[babeltrace.git] / src / lib / trace-ir / field-class.c
index 293687509e17b419ebd37b5eceb9d34b25195c8a..25d5b7e718e964daa73134d00a5ad0a7f8c13bd0 100644 (file)
@@ -898,7 +898,7 @@ int init_named_field_class(struct bt_named_field_class *named_fc,
        }
 
        named_fc->fc = fc;
-       bt_object_get_no_null_check(named_fc->fc);
+       bt_object_get_ref_no_null_check(named_fc->fc);
 
 end:
        return status;
@@ -954,7 +954,7 @@ create_variant_with_selector_option(
        }
 
        opt->range_set = range_set;
-       bt_object_get_no_null_check(opt->range_set);
+       bt_object_get_ref_no_null_check(opt->range_set);
        bt_integer_range_set_freeze(range_set);
        goto end;
 
@@ -1216,7 +1216,7 @@ struct bt_field_class *create_option_field_class(
                }
 
                opt_with_sel_fc->selector_fc = selector_fc;
-               bt_object_get_no_null_check(opt_with_sel_fc->selector_fc);
+               bt_object_get_ref_no_null_check(opt_with_sel_fc->selector_fc);
                opt_fc = (void *) opt_with_sel_fc;
        } else {
                opt_fc = g_new0(struct bt_field_class_option, 1);
@@ -1235,7 +1235,7 @@ struct bt_field_class *create_option_field_class(
        }
 
        opt_fc->content_fc = content_fc;
-       bt_object_get_no_null_check(opt_fc->content_fc);
+       bt_object_get_ref_no_null_check(opt_fc->content_fc);
        bt_field_class_freeze(opt_fc->content_fc);
 
        if (selector_fc) {
@@ -1303,7 +1303,7 @@ bt_field_class_option_with_selector_integer_unsigned_create(
        }
 
        fc->range_set = range_set;
-       bt_object_get_no_null_check(fc->range_set);
+       bt_object_get_ref_no_null_check(fc->range_set);
        bt_integer_range_set_freeze(range_set);
 
 end:
@@ -1333,7 +1333,7 @@ bt_field_class_option_with_selector_integer_signed_create(
        }
 
        fc->range_set = range_set;
-       bt_object_get_no_null_check(fc->range_set);
+       bt_object_get_ref_no_null_check(fc->range_set);
        bt_integer_range_set_freeze(range_set);
 
 end:
@@ -1495,9 +1495,11 @@ struct bt_field_class *bt_field_class_variant_create(
                }
 
                var_with_sel_fc->selector_fc = selector_fc;
-               bt_object_get_no_null_check(var_with_sel_fc->selector_fc);
+               bt_object_get_ref_no_null_check(var_with_sel_fc->selector_fc);
                bt_field_class_freeze(selector_fc);
                var_fc = (void *) var_with_sel_fc;
+               BT_LIB_LOGD("Created default variant field class with selector object: "
+                       "%![var-fc-]+F, %![sel-fc-]+F", var_fc, selector_fc);
        } else {
                var_fc = g_new0(struct bt_field_class_variant, 1);
                if (!var_fc) {
@@ -1513,15 +1515,16 @@ struct bt_field_class *bt_field_class_variant_create(
                        /* init_named_field_classes_container() logs errors */
                        goto error;
                }
+               BT_LIB_LOGD("Created default variant field class without selector object: "
+                       "%![var-fc-]+F", var_fc);
        }
 
        BT_ASSERT(var_fc);
-       BT_LIB_LOGD("Created default variant field class with selector object: "
-               "%![var-fc-]+F, %![sel-fc-]+F", var_fc, selector_fc);
        goto end;
 
 error:
        BT_OBJECT_PUT_REF_AND_RESET(var_fc);
+       BT_OBJECT_PUT_REF_AND_RESET(var_with_sel_fc);
 
 end:
        return (void *) var_fc;
@@ -1902,7 +1905,7 @@ int init_array_field_class(struct bt_field_class_array *fc,
        }
 
        fc->element_fc = element_fc;
-       bt_object_get_no_null_check(fc->element_fc);
+       bt_object_get_ref_no_null_check(fc->element_fc);
        bt_field_class_freeze(element_fc);
 
 end:
@@ -2024,7 +2027,9 @@ struct bt_field_class *bt_field_class_array_dynamic_create(
        }
 
        if (init_array_field_class((void *) array_fc,
-                       BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY,
+                       length_fc ?
+                               BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITH_LENGTH_FIELD :
+                               BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITHOUT_LENGTH_FIELD,
                        destroy_dynamic_array_field_class, element_fc)) {
                goto error;
        }
@@ -2033,7 +2038,7 @@ struct bt_field_class *bt_field_class_array_dynamic_create(
                BT_ASSERT_PRE_FC_IS_UNSIGNED_INT(length_fc,
                        "Length field class");
                array_fc->length_fc = length_fc;
-               bt_object_get_no_null_check(array_fc->length_fc);
+               bt_object_get_ref_no_null_check(array_fc->length_fc);
                bt_field_class_freeze(length_fc);
        }
 
@@ -2048,13 +2053,14 @@ end:
 }
 
 const struct bt_field_path *
-bt_field_class_array_dynamic_borrow_length_field_path_const(
+bt_field_class_array_dynamic_with_length_field_borrow_length_field_path_const(
                const struct bt_field_class *fc)
 {
        const struct bt_field_class_array_dynamic *seq_fc = (const void *) fc;
 
        BT_ASSERT_PRE_DEV_NON_NULL(fc, "Field class");
-       BT_ASSERT_PRE_DEV_FC_HAS_ID(fc, BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY,
+       BT_ASSERT_PRE_DEV_FC_HAS_ID(fc,
+               BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITH_LENGTH_FIELD,
                "Field class");
        return seq_fc->length_field_path;
 }
@@ -2172,7 +2178,8 @@ void bt_field_class_make_part_of_trace_class(const struct bt_field_class *c_fc)
                break;
        }
        case BT_FIELD_CLASS_TYPE_STATIC_ARRAY:
-       case BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY:
+       case BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITHOUT_LENGTH_FIELD:
+       case BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITH_LENGTH_FIELD:
        {
                struct bt_field_class_array *array_fc = (void *) fc;
 
@@ -2208,9 +2215,9 @@ void bt_field_class_set_user_attributes(
        BT_ASSERT_PRE(user_attributes->type == BT_VALUE_TYPE_MAP,
                "User attributes object is not a map value object.");
        BT_ASSERT_PRE_DEV_FC_HOT(fc, "Field class");
-       bt_object_put_no_null_check(fc->user_attributes);
+       bt_object_put_ref_no_null_check(fc->user_attributes);
        fc->user_attributes = (void *) user_attributes;
-       bt_object_get_no_null_check(fc->user_attributes);
+       bt_object_get_ref_no_null_check(fc->user_attributes);
 }
 
 static
@@ -2231,9 +2238,9 @@ void bt_named_field_class_set_user_attributes(
        BT_ASSERT_PRE_DEV_HOT(named_fc,
                "Structure field class member or variant field class option",
                ".");
-       bt_object_put_no_null_check(named_fc->user_attributes);
+       bt_object_put_ref_no_null_check(named_fc->user_attributes);
        named_fc->user_attributes = (void *) user_attributes;
-       bt_object_get_no_null_check(named_fc->user_attributes);
+       bt_object_get_ref_no_null_check(named_fc->user_attributes);
 }
 
 const struct bt_value *
This page took 0.025525 seconds and 4 git commands to generate.