/*
- * attributes.c
- *
- * Babeltrace trace IR - Attributes
- *
* Copyright (c) 2015 EfficiOS Inc. and Linux Foundation
* Copyright (c) 2015 Philippe Proulx <pproulx@efficios.com>
*
*/
#define BT_LOG_TAG "ATTRS"
-#include <babeltrace/lib-logging-internal.h>
-
-#include <babeltrace/object.h>
-#include <babeltrace/babeltrace-internal.h>
-#include <babeltrace/values.h>
-#include <babeltrace/values-internal.h>
+#include <babeltrace2/lib-logging-internal.h>
+
+#include <babeltrace2/babeltrace-internal.h>
+#include <babeltrace2/value.h>
+#include <babeltrace2/assert-pre-internal.h>
+#include <babeltrace2/object-internal.h>
+#include <babeltrace2/value-const.h>
+#include <babeltrace2/value-internal.h>
+#include <babeltrace2/trace-ir/attributes-internal.h>
#include <inttypes.h>
-#include <babeltrace/compat/string-internal.h>
-#include <babeltrace/assert-internal.h>
+#include <babeltrace2/compat/string-internal.h>
+#include <babeltrace2/assert-internal.h>
#define BT_ATTR_NAME_INDEX 0
#define BT_ATTR_VALUE_INDEX 1
void bt_attributes_destroy(struct bt_value *attr_obj)
{
BT_LOGD("Destroying attributes object: addr=%p", attr_obj);
- bt_object_put_ref(attr_obj);
+ BT_OBJECT_PUT_REF_AND_RESET(attr_obj);
}
BT_HIDDEN
-int64_t bt_attributes_get_count(struct bt_value *attr_obj)
+int64_t bt_attributes_get_count(const struct bt_value *attr_obj)
{
return bt_value_array_get_size(attr_obj);
}
BT_HIDDEN
-const char *bt_attributes_get_field_name(struct bt_value *attr_obj,
+const char *bt_attributes_get_field_name(const struct bt_value *attr_obj,
uint64_t index)
{
- int rc;
const char *ret = NULL;
- struct bt_value *attr_field_obj = NULL;
- struct bt_value *attr_field_name_obj = NULL;
+ const struct bt_value *attr_field_obj = NULL;
+ const struct bt_value *attr_field_name_obj = NULL;
if (!attr_obj) {
BT_LOGW_STR("Invalid parameter: attributes object is NULL.");
goto end;
}
- attr_field_obj = bt_value_array_borrow_element_by_index(attr_obj, index);
+ attr_field_obj = bt_value_array_borrow_element_by_index_const(
+ attr_obj, index);
if (!attr_field_obj) {
BT_LOGE("Cannot get attributes object's array value's element by index: "
"value-addr=%p, index=%" PRIu64, attr_obj, index);
goto end;
}
- attr_field_name_obj = bt_value_array_borrow_element_by_index(attr_field_obj,
- BT_ATTR_NAME_INDEX);
+ attr_field_name_obj =
+ bt_value_array_borrow_element_by_index_const(attr_field_obj,
+ BT_ATTR_NAME_INDEX);
if (!attr_field_name_obj) {
BT_LOGE("Cannot get attribute array value's element by index: "
"value-addr=%p, index=%" PRIu64, attr_field_obj,
goto end;
}
- rc = bt_value_string_get(attr_field_name_obj, &ret);
- if (rc) {
- BT_LOGE("Cannot get raw value from string value: value-addr=%p",
- attr_field_name_obj);
- ret = NULL;
- }
+ ret = bt_value_string_get(attr_field_name_obj);
end:
return ret;
}
BT_HIDDEN
-struct bt_value *bt_attributes_borrow_field_value(struct bt_value *attr_obj,
- uint64_t index)
+struct bt_value *bt_attributes_borrow_field_value(
+ struct bt_value *attr_obj, uint64_t index)
{
struct bt_value *value_obj = NULL;
struct bt_value *attr_field_obj = NULL;
goto end;
}
- attr_field_obj = bt_value_array_borrow_element_by_index(attr_obj, index);
+ attr_field_obj =
+ bt_value_array_borrow_element_by_index(attr_obj, index);
if (!attr_field_obj) {
BT_LOGE("Cannot get attributes object's array value's element by index: "
"value-addr=%p, index=%" PRIu64, attr_obj, index);
goto end;
}
- value_obj = bt_value_array_borrow_element_by_index(attr_field_obj,
- BT_ATTR_VALUE_INDEX);
+ value_obj = bt_value_array_borrow_element_by_index(
+ attr_field_obj, BT_ATTR_VALUE_INDEX);
if (!value_obj) {
BT_LOGE("Cannot get attribute array value's element by index: "
"value-addr=%p, index=%" PRIu64, attr_field_obj,
}
for (i = 0; i < attr_size; ++i) {
- int ret;
const char *field_name;
- value_obj = bt_value_array_borrow_element_by_index(attr_obj, i);
+ value_obj = bt_value_array_borrow_element_by_index(
+ attr_obj, i);
if (!value_obj) {
BT_LOGE("Cannot get attributes object's array value's element by index: "
"value-addr=%p, index=%" PRIu64, attr_obj, i);
goto error;
}
- attr_field_name_obj = bt_value_array_borrow_element_by_index(value_obj,
- BT_ATTR_NAME_INDEX);
+ attr_field_name_obj =
+ bt_value_array_borrow_element_by_index(
+ value_obj, BT_ATTR_NAME_INDEX);
if (!attr_field_name_obj) {
BT_LOGE("Cannot get attribute array value's element by index: "
"value-addr=%p, index=%" PRIu64,
goto error;
}
- ret = bt_value_string_get(attr_field_name_obj, &field_name);
- if (ret) {
- BT_LOGE("Cannot get raw value from string value: value-addr=%p",
- attr_field_name_obj);
- goto error;
- }
+ field_name = bt_value_string_get(attr_field_name_obj);
if (!strcmp(field_name, name)) {
break;
attr_field_obj = bt_attributes_borrow_field_by_name(attr_obj, name);
if (attr_field_obj) {
- ret = bt_value_array_set_element_by_index(attr_field_obj,
- BT_ATTR_VALUE_INDEX, value_obj);
+ ret = bt_value_array_set_element_by_index(
+ attr_field_obj, BT_ATTR_VALUE_INDEX,
+ value_obj);
attr_field_obj = NULL;
goto end;
}
goto end;
}
- ret = bt_value_array_append_string_element(attr_field_obj, name);
- ret |= bt_value_array_append_element(attr_field_obj, value_obj);
+ ret = bt_value_array_append_string_element(attr_field_obj,
+ name);
+ ret |= bt_value_array_append_element(attr_field_obj,
+ value_obj);
if (ret) {
BT_LOGE("Cannot append elements to array value: addr=%p",
attr_field_obj);
goto end;
}
- ret = bt_value_array_append_element(attr_obj, attr_field_obj);
+ ret = bt_value_array_append_element(attr_obj,
+ attr_field_obj);
if (ret) {
BT_LOGE("Cannot append element to array value: "
"array-value-addr=%p, element-value-addr=%p",
goto end;
}
- value_obj = bt_value_array_borrow_element_by_index(attr_field_obj,
- BT_ATTR_VALUE_INDEX);
+ value_obj = bt_value_array_borrow_element_by_index(
+ attr_field_obj, BT_ATTR_VALUE_INDEX);
if (!value_obj) {
BT_LOGE("Cannot get attribute array value's element by index: "
"value-addr=%p, index=%" PRIu64, attr_field_obj,
}
BT_HIDDEN
-int bt_attributes_freeze(struct bt_value *attr_obj)
+int bt_attributes_freeze(const struct bt_value *attr_obj)
{
uint64_t i;
int64_t count;
for (i = 0; i < count; ++i) {
struct bt_value *obj = NULL;
- obj = bt_attributes_borrow_field_value(attr_obj, i);
+ obj = bt_attributes_borrow_field_value(
+ (void *) attr_obj, i);
if (!obj) {
BT_LOGE("Cannot get attributes object's field value by index: "
"value-addr=%p, index=%" PRIu64,