Move to kernel style SPDX license identifiers
[babeltrace.git] / src / lib / trace-ir / attributes.c
index c68531c692fe0de425d31e98748fe3c705e3f50d..924c71c43b3b1f92fd0794519f64af512434b7c1 100644 (file)
@@ -1,34 +1,18 @@
 /*
+ * SPDX-License-Identifier: MIT
+ *
  * Copyright (c) 2015 EfficiOS Inc. and Linux Foundation
  * Copyright (c) 2015 Philippe Proulx <pproulx@efficios.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
  */
 
 #define BT_LOG_TAG "LIB/ATTRS"
-#include "lib/lib-logging.h"
+#include "lib/logging.h"
 
 #include "common/macros.h"
 #include <babeltrace2/value.h>
 #include "lib/assert-pre.h"
 #include "lib/object.h"
-#include <babeltrace2/value-const.h>
+#include <babeltrace2/value.h>
 #include "lib/value.h"
 #include "attributes.h"
 #include <inttypes.h>
@@ -60,7 +44,7 @@ struct bt_value *bt_attributes_create(void)
        BT_LOGD_STR("Creating attributes object.");
        attr_obj = bt_value_array_create();
        if (!attr_obj) {
-               BT_LOGE_STR("Failed to create array value.");
+               BT_LIB_LOGE_APPEND_CAUSE("Failed to create array value.");
        } else {
                BT_LOGD("Created attributes object: addr=%p",
                        attr_obj);
@@ -77,134 +61,68 @@ void bt_attributes_destroy(struct bt_value *attr_obj)
 }
 
 BT_HIDDEN
-int64_t bt_attributes_get_count(const struct bt_value *attr_obj)
+uint64_t bt_attributes_get_count(const struct bt_value *attr_obj)
 {
-       return bt_value_array_get_size(attr_obj);
+       return bt_value_array_get_length(attr_obj);
 }
 
 BT_HIDDEN
 const char *bt_attributes_get_field_name(const struct bt_value *attr_obj,
                uint64_t index)
 {
-       const char *ret = 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;
-       }
-
-       if (index >= bt_value_array_get_size(attr_obj)) {
-               BT_LOGW("Invalid parameter: index is out of bounds: "
-                       "index=%" PRIu64 ", count=%" PRId64,
-                       index, bt_value_array_get_size(attr_obj));
-               goto end;
-       }
-
+       BT_ASSERT_DBG(attr_obj);
+       BT_ASSERT_DBG(index < bt_value_array_get_length(attr_obj));
        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_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,
-                       (uint64_t) BT_ATTR_NAME_INDEX);
-               goto end;
-       }
 
-       ret = bt_value_string_get(attr_field_name_obj);
-
-end:
-       return ret;
+       return bt_value_string_get(attr_field_name_obj);
 }
 
 BT_HIDDEN
 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;
 
-       if (!attr_obj) {
-               BT_LOGW_STR("Invalid parameter: attributes object is NULL.");
-               goto end;
-       }
-
-       if (index >= bt_value_array_get_size(attr_obj)) {
-               BT_LOGW("Invalid parameter: index is out of bounds: "
-                       "index=%" PRIu64 ", count=%" PRId64,
-                       index, bt_value_array_get_size(attr_obj));
-               goto end;
-       }
+       BT_ASSERT_DBG(attr_obj);
+       BT_ASSERT_DBG(index < bt_value_array_get_length(attr_obj));
 
        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);
-       if (!value_obj) {
-               BT_LOGE("Cannot get attribute array value's element by index: "
-                       "value-addr=%p, index=%" PRIu64, attr_field_obj,
-                       (uint64_t) BT_ATTR_VALUE_INDEX);
-       }
-
-end:
-       return value_obj;
+       return bt_value_array_borrow_element_by_index( attr_field_obj,
+               BT_ATTR_VALUE_INDEX);
 }
 
 static
 struct bt_value *bt_attributes_borrow_field_by_name(
                struct bt_value *attr_obj, const char *name)
 {
-       uint64_t i;
-       int64_t attr_size;
+       uint64_t i, attr_size;
        struct bt_value *value_obj = NULL;
        struct bt_value *attr_field_name_obj = NULL;
 
-       attr_size = bt_value_array_get_size(attr_obj);
-       if (attr_size < 0) {
-               BT_LOGE("Cannot get array value's size: value-addr=%p",
-                       attr_obj);
-               goto error;
-       }
-
+       attr_size = bt_value_array_get_length(attr_obj);
        for (i = 0; i < attr_size; ++i) {
                const char *field_name;
 
                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);
-               if (!attr_field_name_obj) {
-                       BT_LOGE("Cannot get attribute array value's element by index: "
-                               "value-addr=%p, index=%" PRIu64,
-                               value_obj, (int64_t) BT_ATTR_NAME_INDEX);
-                       goto error;
-               }
 
                field_name = bt_value_string_get(attr_field_name_obj);
 
-               if (!strcmp(field_name, name)) {
+               if (strcmp(field_name, name) == 0) {
                        break;
                }
 
@@ -212,10 +130,6 @@ struct bt_value *bt_attributes_borrow_field_by_name(
        }
 
        return value_obj;
-
-error:
-       value_obj = NULL;
-       return value_obj;
 }
 
 BT_HIDDEN
@@ -225,14 +139,9 @@ int bt_attributes_set_field_value(struct bt_value *attr_obj,
        int ret = 0;
        struct bt_value *attr_field_obj = NULL;
 
-       if (!attr_obj || !name || !value_obj) {
-               BT_LOGW("Invalid parameter: attributes object, name, or value object is NULL: "
-                       "attr-value-addr=%p, name-addr=%p, value-addr=%p",
-                       attr_obj, name, value_obj);
-               ret = -1;
-               goto end;
-       }
-
+       BT_ASSERT(attr_obj);
+       BT_ASSERT(name);
+       BT_ASSERT(value_obj);
        attr_field_obj = bt_attributes_borrow_field_by_name(attr_obj, name);
        if (attr_field_obj) {
                ret = bt_value_array_set_element_by_index(
@@ -244,7 +153,7 @@ int bt_attributes_set_field_value(struct bt_value *attr_obj,
 
        attr_field_obj = bt_value_array_create();
        if (!attr_field_obj) {
-               BT_LOGE_STR("Failed to create empty array value.");
+               BT_LIB_LOGE_APPEND_CAUSE("Failed to create empty array value.");
                ret = -1;
                goto end;
        }
@@ -254,7 +163,8 @@ int bt_attributes_set_field_value(struct bt_value *attr_obj,
        ret |= bt_value_array_append_element(attr_field_obj,
                value_obj);
        if (ret) {
-               BT_LOGE("Cannot append elements to array value: addr=%p",
+               BT_LIB_LOGE_APPEND_CAUSE(
+                       "Cannot append elements to array value: %!+v",
                        attr_field_obj);
                goto end;
        }
@@ -262,8 +172,9 @@ int bt_attributes_set_field_value(struct bt_value *attr_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",
+               BT_LIB_LOGE_APPEND_CAUSE(
+                       "Cannot append element to array value: "
+                       "%![array-value-]+v, %![element-value-]+v",
                        attr_obj, attr_field_obj);
        }
 
@@ -279,12 +190,8 @@ struct bt_value *bt_attributes_borrow_field_value_by_name(
        struct bt_value *value_obj = NULL;
        struct bt_value *attr_field_obj = NULL;
 
-       if (!attr_obj || !name) {
-               BT_LOGW("Invalid parameter: attributes object or name is NULL: "
-                       "value-addr=%p, name-addr=%p", attr_obj, name);
-               goto end;
-       }
-
+       BT_ASSERT_DBG(attr_obj);
+       BT_ASSERT_DBG(name);
        attr_field_obj = bt_attributes_borrow_field_by_name(attr_obj, name);
        if (!attr_field_obj) {
                BT_LOGD("Cannot find attributes object's field by name: "
@@ -294,11 +201,6 @@ struct bt_value *bt_attributes_borrow_field_value_by_name(
 
        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,
-                       (uint64_t) BT_ATTR_VALUE_INDEX);
-       }
 
 end:
        return value_obj;
@@ -307,19 +209,13 @@ end:
 BT_HIDDEN
 int bt_attributes_freeze(const struct bt_value *attr_obj)
 {
-       uint64_t i;
-       int64_t count;
+       uint64_t i, count;
        int ret = 0;
 
-       if (!attr_obj) {
-               BT_LOGW_STR("Invalid parameter: attributes object is NULL.");
-               ret = -1;
-               goto end;
-       }
-
+       BT_ASSERT(attr_obj);
        BT_LOGD("Freezing attributes object: value-addr=%p", attr_obj);
-       count = bt_value_array_get_size(attr_obj);
-       BT_ASSERT(count >= 0);
+
+       count = bt_value_array_get_length(attr_obj);
 
        /*
         * We do not freeze the array value object itself here, since
@@ -332,8 +228,9 @@ int bt_attributes_freeze(const struct bt_value *attr_obj)
                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,
+                       BT_LIB_LOGE_APPEND_CAUSE(
+                               "Cannot get attributes object's field value by index: "
+                               "%![value-]+v, index=%" PRIu64,
                                attr_obj, i);
                        ret = -1;
                        goto end;
This page took 0.027435 seconds and 4 git commands to generate.