Field API: use status
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Sat, 8 Dec 2018 20:11:23 +0000 (15:11 -0500)
committerFrancis Deslauriers <francis.deslauriers@efficios.com>
Thu, 2 May 2019 20:50:15 +0000 (20:50 +0000)
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
include/babeltrace/trace-ir/field-const.h
include/babeltrace/trace-ir/field.h
lib/trace-ir/field.c

index e8784dd77c99eb53a51c56ce6e32b8fd6a684249..e44e8328933b447def38804dd472cf8285ef1131 100644 (file)
 extern "C" {
 #endif
 
+enum bt_field_status {
+       BT_FIELD_STATUS_OK = 0,
+       BT_FIELD_STATUS_NOMEM = -12,
+};
+
 extern const bt_field_class *bt_field_borrow_class_const(
                const bt_field *field);
 
@@ -52,12 +57,12 @@ extern uint64_t bt_field_unsigned_integer_get_value(
 
 extern double bt_field_real_get_value(const bt_field *field);
 
-extern int bt_field_unsigned_enumeration_get_mapping_labels(
+extern enum bt_field_status bt_field_unsigned_enumeration_get_mapping_labels(
                const bt_field *field,
                bt_field_class_enumeration_mapping_label_array *label_array,
                uint64_t *count);
 
-extern int bt_field_signed_enumeration_get_mapping_labels(
+extern enum bt_field_status bt_field_signed_enumeration_get_mapping_labels(
                const bt_field *field,
                bt_field_class_enumeration_mapping_label_array *label_array,
                uint64_t *count);
index 3b53cc4b7916bfb45fafa3e09669ef392da22025..9c2d6e1812b805389f31c0a94c0f967ed0f7ea0e 100644 (file)
@@ -32,6 +32,9 @@
 /* For bt_field, bt_field_class */
 #include <babeltrace/types.h>
 
+/* For enum bt_field_status */
+#include <babeltrace/trace-ir/field-const.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -44,14 +47,16 @@ extern void bt_field_unsigned_integer_set_value(bt_field *field,
 
 extern void bt_field_real_set_value(bt_field *field, double value);
 
-extern int bt_field_string_set_value(bt_field *field, const char *value);
+extern enum bt_field_status bt_field_string_set_value(bt_field *field,
+               const char *value);
 
-extern int bt_field_string_append(bt_field *field, const char *value);
+extern enum bt_field_status bt_field_string_append(bt_field *field,
+               const char *value);
 
-extern int bt_field_string_append_with_length(bt_field *field,
+extern enum bt_field_status bt_field_string_append_with_length(bt_field *field,
                const char *value, uint64_t length);
 
-extern int bt_field_string_clear(bt_field *field);
+extern enum bt_field_status bt_field_string_clear(bt_field *field);
 
 extern bt_field *bt_field_structure_borrow_member_field_by_index(
                bt_field *field, uint64_t index);
@@ -62,11 +67,11 @@ extern bt_field *bt_field_structure_borrow_member_field_by_name(
 extern bt_field *bt_field_array_borrow_element_field_by_index(
                bt_field *field, uint64_t index);
 
-extern int bt_field_dynamic_array_set_length(bt_field *field,
+extern enum bt_field_status bt_field_dynamic_array_set_length(bt_field *field,
                uint64_t length);
 
-extern int bt_field_variant_select_option_field(bt_field *field,
-               uint64_t index);
+extern enum bt_field_status bt_field_variant_select_option_field(
+               bt_field *field, uint64_t index);
 
 extern bt_field *bt_field_variant_borrow_selected_option_field(
                bt_field *field);
index ef0319630855bd1c950b4c9ee1f6353acfe8f5e7..d8ccc8a1008e43d1c5a711e39ac8b3b59fa18915 100644 (file)
@@ -558,7 +558,7 @@ void bt_field_real_set_value(struct bt_field *field, double value)
        bt_field_set_single(field, true);
 }
 
-int bt_field_unsigned_enumeration_get_mapping_labels(
+enum bt_field_status bt_field_unsigned_enumeration_get_mapping_labels(
                const struct bt_field *field,
                bt_field_class_enumeration_mapping_label_array *label_array,
                uint64_t *count)
@@ -571,11 +571,12 @@ int bt_field_unsigned_enumeration_get_mapping_labels(
        BT_ASSERT_PRE_FIELD_IS_SET(field, "Field");
        BT_ASSERT_PRE_FIELD_HAS_CLASS_TYPE(field,
                BT_FIELD_CLASS_TYPE_UNSIGNED_ENUMERATION, "Field");
-       return bt_field_class_unsigned_enumeration_get_mapping_labels_by_value(
-               field->class, int_field->value.u, label_array, count);
+       return (int)
+               bt_field_class_unsigned_enumeration_get_mapping_labels_by_value(
+                       field->class, int_field->value.u, label_array, count);
 }
 
-int bt_field_signed_enumeration_get_mapping_labels(
+enum bt_field_status bt_field_signed_enumeration_get_mapping_labels(
                const struct bt_field *field,
                bt_field_class_enumeration_mapping_label_array *label_array,
                uint64_t *count)
@@ -588,8 +589,9 @@ int bt_field_signed_enumeration_get_mapping_labels(
        BT_ASSERT_PRE_FIELD_IS_SET(field, "Field");
        BT_ASSERT_PRE_FIELD_HAS_CLASS_TYPE(field,
                BT_FIELD_CLASS_TYPE_SIGNED_ENUMERATION, "Field");
-       return bt_field_class_signed_enumeration_get_mapping_labels_by_value(
-               field->class, int_field->value.i, label_array, count);
+       return (int)
+               bt_field_class_signed_enumeration_get_mapping_labels_by_value(
+                       field->class, int_field->value.i, label_array, count);
 }
 
 const char *bt_field_string_get_value(const struct bt_field *field)
@@ -614,25 +616,36 @@ uint64_t bt_field_string_get_length(const struct bt_field *field)
        return string_field->length;
 }
 
-int bt_field_string_set_value(struct bt_field *field, const char *value)
+static inline
+void clear_string_field(struct bt_field *field)
+{
+       struct bt_field_string *string_field = (void *) field;
+
+       BT_ASSERT(field);
+       string_field->length = 0;
+       bt_field_set_single(field, true);
+}
+
+enum bt_field_status bt_field_string_set_value(struct bt_field *field,
+               const char *value)
 {
        BT_ASSERT_PRE_NON_NULL(field, "Field");
        BT_ASSERT_PRE_NON_NULL(value, "Value");
        BT_ASSERT_PRE_FIELD_HOT(field, "Field");
        BT_ASSERT_PRE_FIELD_HAS_CLASS_TYPE(field, BT_FIELD_CLASS_TYPE_STRING,
                "Field");
-       bt_field_string_clear(field);
+       clear_string_field(field);
        return bt_field_string_append_with_length(field, value,
                (uint64_t) strlen(value));
 }
 
-int bt_field_string_append(struct bt_field *field, const char *value)
+enum bt_field_status bt_field_string_append(struct bt_field *field, const char *value)
 {
        return bt_field_string_append_with_length(field,
                value, (uint64_t) strlen(value));
 }
 
-int bt_field_string_append_with_length(struct bt_field *field,
+enum bt_field_status bt_field_string_append_with_length(struct bt_field *field,
                const char *value, uint64_t length)
 {
        struct bt_field_string *string_field = (void *) field;
@@ -661,20 +674,17 @@ int bt_field_string_append_with_length(struct bt_field *field,
        ((char *) string_field->buf->data)[new_length] = '\0';
        string_field->length = new_length;
        bt_field_set_single(field, true);
-       return 0;
+       return BT_FIELD_STATUS_OK;
 }
 
-int bt_field_string_clear(struct bt_field *field)
+enum bt_field_status bt_field_string_clear(struct bt_field *field)
 {
-       struct bt_field_string *string_field = (void *) field;
-
        BT_ASSERT_PRE_NON_NULL(field, "Field");
        BT_ASSERT_PRE_FIELD_HOT(field, "Field");
        BT_ASSERT_PRE_FIELD_HAS_CLASS_TYPE(field,
                BT_FIELD_CLASS_TYPE_STRING, "Field");
-       string_field->length = 0;
-       bt_field_set_single(field, true);
-       return 0;
+       clear_string_field(field);
+       return BT_FIELD_STATUS_OK;
 }
 
 uint64_t bt_field_array_get_length(const struct bt_field *field)
@@ -686,9 +696,10 @@ uint64_t bt_field_array_get_length(const struct bt_field *field)
        return array_field->length;
 }
 
-int bt_field_dynamic_array_set_length(struct bt_field *field, uint64_t length)
+enum bt_field_status bt_field_dynamic_array_set_length(struct bt_field *field,
+               uint64_t length)
 {
-       int ret = 0;
+       int ret = BT_FIELD_STATUS_OK;
        struct bt_field_array *array_field = (void *) field;
 
        BT_ASSERT_PRE_NON_NULL(field, "Field");
@@ -714,7 +725,7 @@ int bt_field_dynamic_array_set_length(struct bt_field *field, uint64_t length)
                                        "dynamic array field: "
                                        "index=%" PRIu64 ", "
                                        "%![array-field-]+f", i, field);
-                               ret = -1;
+                               ret = BT_FIELD_STATUS_NOMEM;
                                goto end;
                        }
 
@@ -849,7 +860,7 @@ const struct bt_field *bt_field_variant_borrow_selected_option_field_const(
        return borrow_variant_field_selected_option_field((void *) field);
 }
 
-int bt_field_variant_select_option_field(
+enum bt_field_status bt_field_variant_select_option_field(
                struct bt_field *field, uint64_t index)
 {
        struct bt_field_variant *var_field = (void *) field;
@@ -861,7 +872,7 @@ int bt_field_variant_select_option_field(
        BT_ASSERT_PRE_VALID_INDEX(index, var_field->fields->len);
        var_field->selected_field = var_field->fields->pdata[index];
        var_field->selected_index = index;
-       return 0;
+       return BT_FIELD_STATUS_OK;
 }
 
 uint64_t bt_field_variant_get_selected_option_field_index(
This page took 0.028832 seconds and 4 git commands to generate.