* SOFTWARE.
*/
-#define BT_LOG_TAG "FIELDS"
-#include "lib/lib-logging.h"
+#define BT_LOG_TAG "LIB/FIELD"
+#include "lib/logging.h"
#include "lib/assert-pre.h"
#include <babeltrace2/trace-ir/field.h>
#include "field.h"
#include "field-class.h"
+#include "lib/func-status.h"
static
void reset_single_field(struct bt_field *field);
BT_ASSERT(bt_field_class_has_known_type(fc));
field = field_create_funcs[fc->type](fc);
if (!field) {
- BT_LIB_LOGE("Cannot create field object from field class: "
+ BT_LIB_LOGE_APPEND_CAUSE("Cannot create field object from field class: "
"%![fc-]+F", fc);
goto end;
}
BT_LIB_LOGD("Creating integer field object: %![fc-]+F", fc);
int_field = g_new0(struct bt_field_integer, 1);
if (!int_field) {
- BT_LOGE_STR("Failed to allocate one integer field.");
+ BT_LIB_LOGE_APPEND_CAUSE(
+ "Failed to allocate one integer field.");
goto end;
}
BT_LIB_LOGD("Creating real field object: %![fc-]+F", fc);
real_field = g_new0(struct bt_field_real, 1);
if (!real_field) {
- BT_LOGE_STR("Failed to allocate one real field.");
+ BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate one real field.");
goto end;
}
BT_LIB_LOGD("Creating string field object: %![fc-]+F", fc);
string_field = g_new0(struct bt_field_string, 1);
if (!string_field) {
- BT_LOGE_STR("Failed to allocate one string field.");
+ BT_LIB_LOGE_APPEND_CAUSE(
+ "Failed to allocate one string field.");
goto end;
}
string_field->buf = g_array_sized_new(FALSE, FALSE,
sizeof(char), 1);
if (!string_field->buf) {
- BT_LOGE_STR("Failed to allocate a GArray.");
+ BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate a GArray.");
BT_OBJECT_PUT_REF_AND_RESET(string_field);
goto end;
}
*fields = g_ptr_array_new_with_free_func(
(GDestroyNotify) bt_field_destroy);
if (!*fields) {
- BT_LOGE_STR("Failed to allocate a GPtrArray.");
+ BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate a GPtrArray.");
ret = -1;
goto end;
}
field = bt_field_create(named_fc->fc);
if (!field) {
- BT_LIB_LOGE("Failed to create structure member or variant option field: "
+ BT_LIB_LOGE_APPEND_CAUSE(
+ "Failed to create structure member or variant option field: "
"name=\"%s\", %![fc-]+F",
named_fc->name->str, named_fc->fc);
ret = -1;
BT_LIB_LOGD("Creating structure field object: %![fc-]+F", fc);
struct_field = g_new0(struct bt_field_structure, 1);
if (!struct_field) {
- BT_LOGE_STR("Failed to allocate one structure field.");
+ BT_LIB_LOGE_APPEND_CAUSE(
+ "Failed to allocate one structure field.");
goto end;
}
if (create_fields_from_named_field_classes((void *) fc,
&struct_field->fields)) {
- BT_LIB_LOGE("Cannot create structure member fields: "
- "%![fc-]+F", fc);
+ BT_LIB_LOGE_APPEND_CAUSE(
+ "Cannot create structure member fields: %![fc-]+F", fc);
BT_OBJECT_PUT_REF_AND_RESET(struct_field);
goto end;
}
BT_LIB_LOGD("Creating variant field object: %![fc-]+F", fc);
var_field = g_new0(struct bt_field_variant, 1);
if (!var_field) {
- BT_LOGE_STR("Failed to allocate one variant field.");
+ BT_LIB_LOGE_APPEND_CAUSE(
+ "Failed to allocate one variant field.");
goto end;
}
if (create_fields_from_named_field_classes((void *) fc,
&var_field->fields)) {
- BT_LIB_LOGE("Cannot create variant member fields: "
+ BT_LIB_LOGE_APPEND_CAUSE("Cannot create variant member fields: "
"%![fc-]+F", fc);
BT_OBJECT_PUT_REF_AND_RESET(var_field);
goto end;
array_fc = (void *) array_field->common.class;
array_field->fields = g_ptr_array_sized_new(array_field->length);
if (!array_field->fields) {
- BT_LOGE_STR("Failed to allocate a GPtrArray.");
+ BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate a GPtrArray.");
ret = -1;
goto end;
}
array_field->fields->pdata[i] = bt_field_create(
array_fc->element_fc);
if (!array_field->fields->pdata[i]) {
- BT_LIB_LOGE("Cannot create array field's element field: "
+ BT_LIB_LOGE_APPEND_CAUSE(
+ "Cannot create array field's element field: "
"index=%" PRIu64 ", %![fc-]+F", i, array_fc);
ret = -1;
goto end;
BT_LIB_LOGD("Creating static array field object: %![fc-]+F", fc);
array_field = g_new0(struct bt_field_array, 1);
if (!array_field) {
- BT_LOGE_STR("Failed to allocate one static array field.");
+ BT_LIB_LOGE_APPEND_CAUSE(
+ "Failed to allocate one static array field.");
goto end;
}
array_field->length = array_fc->length;
if (init_array_field_fields(array_field)) {
- BT_LIB_LOGE("Cannot create static array fields: "
+ BT_LIB_LOGE_APPEND_CAUSE("Cannot create static array fields: "
"%![fc-]+F", fc);
BT_OBJECT_PUT_REF_AND_RESET(array_field);
goto end;
BT_LIB_LOGD("Creating dynamic array field object: %![fc-]+F", fc);
array_field = g_new0(struct bt_field_array, 1);
if (!array_field) {
- BT_LOGE_STR("Failed to allocate one dynamic array field.");
+ BT_LIB_LOGE_APPEND_CAUSE(
+ "Failed to allocate one dynamic array field.");
goto end;
}
init_field((void *) array_field, fc, &array_field_methods);
if (init_array_field_fields(array_field)) {
- BT_LIB_LOGE("Cannot create dynamic array fields: "
+ BT_LIB_LOGE_APPEND_CAUSE("Cannot create dynamic array fields: "
"%![fc-]+F", fc);
BT_OBJECT_PUT_REF_AND_RESET(array_field);
goto end;
bt_field_set_single(field, true);
}
-enum bt_field_status bt_field_unsigned_enumeration_get_mapping_labels(
+enum bt_field_enumeration_get_mapping_labels_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)
field->class, int_field->value.u, label_array, count);
}
-enum bt_field_status bt_field_signed_enumeration_get_mapping_labels(
+enum bt_field_enumeration_get_mapping_labels_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)
bt_field_set_single(field, true);
}
-enum bt_field_status bt_field_string_set_value(struct bt_field *field,
- const char *value)
+enum bt_field_string_set_value_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_HAS_CLASS_TYPE(field, BT_FIELD_CLASS_TYPE_STRING,
"Field");
clear_string_field(field);
- return bt_field_string_append_with_length(field, value,
+ return (int) bt_field_string_append_with_length(field, value,
(uint64_t) strlen(value));
}
-enum bt_field_status bt_field_string_append(struct bt_field *field, const char *value)
+enum bt_field_string_append_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));
}
-enum bt_field_status bt_field_string_append_with_length(struct bt_field *field,
- const char *value, uint64_t length)
+enum bt_field_string_append_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;
char *data;
new_length = length + string_field->length;
- if (unlikely(new_length + 1 > string_field->buf->len)) {
+ if (G_UNLIKELY(new_length + 1 > string_field->buf->len)) {
g_array_set_size(string_field->buf, new_length + 1);
}
((char *) string_field->buf->data)[new_length] = '\0';
string_field->length = new_length;
bt_field_set_single(field, true);
- return BT_FIELD_STATUS_OK;
+ return BT_FUNC_STATUS_OK;
}
-enum bt_field_status bt_field_string_clear(struct bt_field *field)
+void bt_field_string_clear(struct bt_field *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");
clear_string_field(field);
- return BT_FIELD_STATUS_OK;
}
uint64_t bt_field_array_get_length(const struct bt_field *field)
return array_field->length;
}
-enum bt_field_status bt_field_dynamic_array_set_length(struct bt_field *field,
- uint64_t length)
+enum bt_field_dynamic_array_set_length_status bt_field_dynamic_array_set_length(
+ struct bt_field *field, uint64_t length)
{
- int ret = BT_FIELD_STATUS_OK;
+ int ret = BT_FUNC_STATUS_OK;
struct bt_field_array *array_field = (void *) field;
BT_ASSERT_PRE_NON_NULL(field, "Field");
BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY, "Field");
BT_ASSERT_PRE_FIELD_HOT(field, "Field");
- if (unlikely(length > array_field->fields->len)) {
+ if (G_UNLIKELY(length > array_field->fields->len)) {
/* Make more room */
struct bt_field_class_array *array_fc;
uint64_t cur_len = array_field->fields->len;
array_fc->element_fc);
if (!elem_field) {
- BT_LIB_LOGE("Cannot create element field for "
+ BT_LIB_LOGE_APPEND_CAUSE(
+ "Cannot create element field for "
"dynamic array field: "
"index=%" PRIu64 ", "
"%![array-field-]+f", i, field);
- ret = BT_FIELD_STATUS_NOMEM;
+ ret = BT_FUNC_STATUS_MEMORY_ERROR;
goto end;
}
return borrow_variant_field_selected_option_field((void *) field);
}
-enum bt_field_status bt_field_variant_select_option_field(
+enum bt_field_variant_select_option_field_status
+bt_field_variant_select_option_field(
struct bt_field *field, uint64_t index)
{
struct bt_field_variant *var_field = (void *) 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 BT_FIELD_STATUS_OK;
+ return BT_FUNC_STATUS_OK;
}
uint64_t bt_field_variant_get_selected_option_field_index(