Move to kernel style SPDX license identifiers
[babeltrace.git] / src / ctf-writer / resolve.c
index 6e9e2006c1d3ece72c76df6765b9afce31976463..c6316c0bfee0e40ebb1473e5065aa7dfc9bb2be3 100644 (file)
@@ -1,34 +1,13 @@
 /*
- * resolve.c
- *
- * Babeltrace - CTF writer: Type resolving internal
+ * SPDX-License-Identifier: MIT
  *
  * Copyright 2015 Jérémie Galarneau <jeremie.galarneau@efficios.com>
  * Copyright 2016 Philippe Proulx <pproulx@efficios.com>
  *
- * Authors: Jérémie Galarneau <jeremie.galarneau@efficios.com>
- *          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.
+ * Babeltrace - CTF writer: Type resolving internal
  */
 
-#define BT_LOG_TAG "CTF-WRITER-RESOLVE"
+#define BT_LOG_TAG "CTF-WRITER/RESOLVE"
 #include "logging.h"
 
 #include <glib.h>
 #include <limits.h>
 #include <stdlib.h>
 
-#include <babeltrace2/ctf-writer/field-types.h>
-#include <babeltrace2/ctf-writer/object.h>
-#include <babeltrace2/ctf-writer/stream-class.h>
+#include <babeltrace2-ctf-writer/field-types.h>
+#include <babeltrace2-ctf-writer/object.h>
+#include <babeltrace2-ctf-writer/stream-class.h>
 #include <babeltrace2/types.h>
 
-#include "common/babeltrace.h"
+#include "common/macros.h"
 #include "common/assert.h"
 
 #include "field-path.h"
@@ -166,7 +145,7 @@ int type_stack_push(type_stack *stack, struct bt_ctf_field_type_common *type)
                goto end;
        }
 
-       BT_LOGV("Pushing field type on context's stack: "
+       BT_LOGT("Pushing field type on context's stack: "
                "ft-addr=%p, stack-size-before=%u", type, stack->len);
        frame->type = bt_ctf_object_get_ref(type);
        g_ptr_array_add(stack, frame);
@@ -179,7 +158,7 @@ end:
  * Checks whether or not `stack` is empty.
  */
 static
-bt_bool type_stack_empty(type_stack *stack)
+bt_ctf_bool type_stack_empty(type_stack *stack)
 {
        return stack->len == 0;
 }
@@ -201,15 +180,10 @@ size_t type_stack_size(type_stack *stack)
 static
 struct type_stack_frame *type_stack_peek(type_stack *stack)
 {
-       struct type_stack_frame *entry = NULL;
+       BT_ASSERT(stack);
+       BT_ASSERT(!type_stack_empty(stack));
 
-       if (!stack || type_stack_empty(stack)) {
-               goto end;
-       }
-
-       entry = g_ptr_array_index(stack, stack->len - 1);
-end:
-       return entry;
+       return g_ptr_array_index(stack, stack->len - 1);
 }
 
 /*
@@ -218,19 +192,12 @@ end:
  * Return value is owned by `stack`.
  */
 static
-struct type_stack_frame *type_stack_at(type_stack *stack,
-               size_t index)
+struct type_stack_frame *type_stack_at(type_stack *stack, size_t index)
 {
-       struct type_stack_frame *entry = NULL;
+       BT_ASSERT(stack);
+       BT_ASSERT(index < stack->len);
 
-       if (!stack || index >= stack->len) {
-               goto end;
-       }
-
-       entry = g_ptr_array_index(stack, index);
-
-end:
-       return entry;
+       return g_ptr_array_index(stack, index);
 }
 
 /*
@@ -244,7 +211,7 @@ void type_stack_pop(type_stack *stack)
                 * This will call the frame's destructor and free it, as
                 * well as put its contained field type.
                 */
-               BT_LOGV("Popping context's stack: stack-size-before=%u",
+               BT_LOGT("Popping context's stack: stack-size-before=%u",
                        stack->len);
                g_ptr_array_set_size(stack, stack->len - 1);
        }
@@ -259,7 +226,7 @@ static
 struct bt_ctf_field_type_common *get_type_from_ctx(struct resolve_context *ctx,
                enum bt_ctf_scope scope)
 {
-       BT_ASSERT(scope >= BT_CTF_SCOPE_TRACE_PACKET_HEADER &&
+       BT_ASSERT_DBG(scope >= BT_CTF_SCOPE_TRACE_PACKET_HEADER &&
                scope <= BT_CTF_SCOPE_EVENT_FIELDS);
 
        return ctx->scopes[scope - BT_CTF_SCOPE_TRACE_PACKET_HEADER];
@@ -288,7 +255,7 @@ enum bt_ctf_scope get_root_scope_from_absolute_pathstr(const char *pathstr)
                if (strncmp(pathstr, absolute_path_prefixes[scope],
                                strlen(absolute_path_prefixes[scope]))) {
                        /* Prefix does not match: try the next one */
-                       BT_LOGV("Prefix does not match: trying the next one: "
+                       BT_LOGT("Prefix does not match: trying the next one: "
                                "path=\"%s\", path-prefix=\"%s\", scope=%s",
                                pathstr, absolute_path_prefixes[scope],
                                bt_ctf_scope_string(scope));
@@ -297,7 +264,7 @@ enum bt_ctf_scope get_root_scope_from_absolute_pathstr(const char *pathstr)
 
                /* Found it! */
                ret = scope;
-               BT_LOGV("Found root scope from absolute path: "
+               BT_LOGT("Found root scope from absolute path: "
                        "path=\"%s\", scope=%s", pathstr,
                        bt_ctf_scope_string(scope));
                goto end;
@@ -402,7 +369,7 @@ int ptokens_to_field_path(GList *ptokens, struct bt_ctf_field_path *field_path,
 {
        int ret = 0;
        GList *cur_ptoken = ptokens;
-       bt_bool first_level_done = BT_FALSE;
+       bt_ctf_bool first_level_done = BT_CTF_FALSE;
 
        /* Get our own reference */
        bt_ctf_object_get_ref(type);
@@ -415,7 +382,7 @@ int ptokens_to_field_path(GList *ptokens, struct bt_ctf_field_path *field_path,
                enum bt_ctf_field_type_id type_id =
                        bt_ctf_field_type_common_get_type_id(type);
 
-               BT_LOGV("Current path token: token=\"%s\"", field_name);
+               BT_LOGT("Current path token: token=\"%s\"", field_name);
 
                /* Find to which index corresponds the current path token */
                if (type_id == BT_CTF_FIELD_TYPE_ID_ARRAY ||
@@ -445,7 +412,7 @@ int ptokens_to_field_path(GList *ptokens, struct bt_ctf_field_path *field_path,
 
                        /* Next path token */
                        cur_ptoken = g_list_next(cur_ptoken);
-                       first_level_done = BT_TRUE;
+                       first_level_done = BT_CTF_TRUE;
                }
 
                /* Create new field path entry */
@@ -541,7 +508,7 @@ int relative_ptokens_to_field_path(GList *ptokens,
                int cur_index = type_stack_at(ctx->type_stack,
                        parent_pos_in_stack)->index;
 
-               BT_LOGV("Locating target field type from current parent field type: "
+               BT_LOGT("Locating target field type from current parent field type: "
                        "parent-pos=%d, parent-ft-addr=%p, cur-index=%d",
                        parent_pos_in_stack, parent_type, cur_index);
 
@@ -550,7 +517,7 @@ int relative_ptokens_to_field_path(GList *ptokens,
                        parent_type, cur_index);
                if (ret) {
                        /* Not found... yet */
-                       BT_LOGV_STR("Not found at this point.");
+                       BT_LOGT_STR("Not found at this point.");
                        bt_ctf_field_path_clear(tail_field_path);
                } else {
                        /* Found: stitch tail field path to head field path */
@@ -558,7 +525,7 @@ int relative_ptokens_to_field_path(GList *ptokens,
                        int tail_field_path_len =
                                tail_field_path->indexes->len;
 
-                       while (BT_TRUE) {
+                       while (BT_CTF_TRUE) {
                                struct bt_ctf_field_type_common *cur_type =
                                        type_stack_at(ctx->type_stack, i)->type;
                                int index = type_stack_at(
@@ -595,7 +562,7 @@ int relative_ptokens_to_field_path(GList *ptokens,
                        struct bt_ctf_field_type_common *root_type;
                        bt_ctf_field_path_clear(field_path);
 
-                       BT_LOGV("Looking into potential root scope: scope=%s",
+                       BT_LOGT("Looking into potential root scope: scope=%s",
                                bt_ctf_scope_string(field_path->root));
                        root_type = get_type_from_ctx(ctx, field_path->root);
                        if (!root_type) {
@@ -608,13 +575,13 @@ int relative_ptokens_to_field_path(GList *ptokens,
                                root_type, INT_MAX);
                        if (ret) {
                                /* Not found yet */
-                               BT_LOGV_STR("Not found in this scope.");
+                               BT_LOGT_STR("Not found in this scope.");
                                field_path->root--;
                                continue;
                        }
 
                        /* Found */
-                       BT_LOGV_STR("Found in this scope.");
+                       BT_LOGT_STR("Found in this scope.");
                        break;
                }
        }
@@ -662,7 +629,7 @@ struct bt_ctf_field_path *pathstr_to_field_path(const char *pathstr,
        if (root_scope == BT_CTF_SCOPE_UNKNOWN) {
                /* Relative path: start with current root scope */
                field_path->root = ctx->root_scope;
-               BT_LOGV("Detected relative path: starting with current root scope: "
+               BT_LOGT("Detected relative path: starting with current root scope: "
                        "scope=%s", bt_ctf_scope_string(field_path->root));
                ret = relative_ptokens_to_field_path(ptokens, field_path, ctx);
                if (ret) {
@@ -680,7 +647,7 @@ struct bt_ctf_field_path *pathstr_to_field_path(const char *pathstr,
        } else {
                /* Absolute path: use found root scope */
                field_path->root = root_scope;
-               BT_LOGV("Detected absolute path: using root scope: "
+               BT_LOGT("Detected absolute path: using root scope: "
                        "scope=%s", bt_ctf_scope_string(field_path->root));
                ret = absolute_ptokens_to_field_path(ptokens, field_path, ctx);
                if (ret) {
@@ -697,7 +664,7 @@ struct bt_ctf_field_path *pathstr_to_field_path(const char *pathstr,
                const char *field_path_pretty_str =
                        field_path_pretty ? field_path_pretty->str : NULL;
 
-               BT_LOGV("Found field path: path=\"%s\", field-path=\"%s\"",
+               BT_LOGT("Found field path: path=\"%s\", field-path=\"%s\"",
                        pathstr, field_path_pretty_str);
 
                if (field_path_pretty) {
@@ -812,7 +779,7 @@ int get_field_paths_lca_index(struct bt_ctf_field_path *field_path1,
        int lca_index = 0;
        int field_path1_len, field_path2_len;
 
-       if (BT_LOG_ON_VERBOSE) {
+       if (BT_LOG_ON_TRACE) {
                GString *field_path1_pretty =
                        bt_ctf_field_path_string(field_path1);
                GString *field_path2_pretty =
@@ -822,7 +789,7 @@ int get_field_paths_lca_index(struct bt_ctf_field_path *field_path1,
                const char *field_path2_pretty_str =
                        field_path2_pretty ? field_path2_pretty->str : NULL;
 
-               BT_LOGV("Finding lowest common ancestor (LCA) between two field paths: "
+               BT_LOGT("Finding lowest common ancestor (LCA) between two field paths: "
                        "field-path-1=\"%s\", field-path-2=\"%s\"",
                        field_path1_pretty_str, field_path2_pretty_str);
 
@@ -838,11 +805,11 @@ int get_field_paths_lca_index(struct bt_ctf_field_path *field_path1,
        /*
         * Start from both roots and find the first mismatch.
         */
-       BT_ASSERT(field_path1->root == field_path2->root);
+       BT_ASSERT_DBG(field_path1->root == field_path2->root);
        field_path1_len = field_path1->indexes->len;
        field_path2_len = field_path2->indexes->len;
 
-       while (BT_TRUE) {
+       while (BT_CTF_TRUE) {
                int target_index, ctx_index;
 
                if (lca_index == field_path2_len ||
@@ -873,7 +840,7 @@ int get_field_paths_lca_index(struct bt_ctf_field_path *field_path1,
                lca_index++;
        }
 
-       BT_LOGV("Found LCA: lca-index=%d", lca_index);
+       BT_LOGT("Found LCA: lca-index=%d", lca_index);
        return lca_index;
 }
 
@@ -987,7 +954,7 @@ int validate_target_field_path(struct bt_ctf_field_path *target_field_path,
                }
                break;
        default:
-               abort();
+               bt_common_abort();
        }
 
 end:
@@ -1024,7 +991,7 @@ int resolve_sequence_or_variant_type(struct bt_ctf_field_type_common *type,
                        bt_ctf_field_type_common_variant_get_tag_name(type);
                break;
        default:
-               abort();
+               bt_common_abort();
        }
 
        if (!pathstr) {
@@ -1099,7 +1066,7 @@ int resolve_sequence_or_variant_type(struct bt_ctf_field_type_common *type,
                }
                break;
        default:
-               abort();
+               bt_common_abort();
        }
 
 end:
@@ -1193,7 +1160,7 @@ int resolve_type(struct bt_ctf_field_type_common *type, struct resolve_context *
                                        f_index;
                        }
 
-                       BT_LOGV("Resolving field type's child field type: "
+                       BT_LOGT("Resolving field type's child field type: "
                                "parent-ft-addr=%p, child-ft-addr=%p, "
                                "index=%" PRId64 ", count=%" PRId64,
                                type, child_type, f_index, field_count);
@@ -1222,7 +1189,7 @@ int resolve_root_type(enum bt_ctf_scope root_scope, struct resolve_context *ctx)
 {
        int ret;
 
-       BT_ASSERT(type_stack_size(ctx->type_stack) == 0);
+       BT_ASSERT_DBG(type_stack_size(ctx->type_stack) == 0);
        ctx->root_scope = root_scope;
        ret = resolve_type(get_type_from_ctx(ctx, root_scope), ctx);
        ctx->root_scope = BT_CTF_SCOPE_UNKNOWN;
@@ -1255,7 +1222,7 @@ int bt_ctf_resolve_types(
                .root_scope = BT_CTF_SCOPE_UNKNOWN,
        };
 
-       BT_LOGV("Resolving field types: "
+       BT_LOGT("Resolving field types: "
                "packet-header-ft-addr=%p, "
                "packet-context-ft-addr=%p, "
                "event-header-ft-addr=%p, "
@@ -1333,7 +1300,7 @@ int bt_ctf_resolve_types(
                }
        }
 
-       BT_LOGV_STR("Resolved field types.");
+       BT_LOGT_STR("Resolved field types.");
 
 end:
        type_stack_destroy(ctx.type_stack);
This page took 0.029896 seconds and 4 git commands to generate.