trace.h: Use side_ptr_t for stack-copy compound type args
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 21 Sep 2023 09:29:28 +0000 (10:29 +0100)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 21 Sep 2023 09:29:28 +0000 (10:29 +0100)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
include/side/trace.h
src/tracer.c

index 42aba087ebd03048024918ed8f511bb128e93c10..76c82b84dcaa328329542f616e1305696498c6ee 100644 (file)
@@ -530,10 +530,10 @@ union side_arg_static {
        union side_float_value float_value;
 
        /* Stack-copy compound types */
-       const struct side_arg_vec *side_struct;
-       const struct side_arg_variant *side_variant;
-       const struct side_arg_vec *side_array;
-       const struct side_arg_vec *side_vla;
+       side_ptr_t(const struct side_arg_vec) side_struct;
+       side_ptr_t(const struct side_arg_variant) side_variant;
+       side_ptr_t(const struct side_arg_vec) side_array;
+       side_ptr_t(const struct side_arg_vec) side_vla;
        void *side_vla_app_visitor_ctx;
 
        /* Gather basic types */
@@ -1445,7 +1445,7 @@ struct side_event_description {
 #define side_arg_float_binary64(_val)  { .type = SIDE_TYPE_FLOAT_BINARY64, .u = { .side_static = { .float_value = { .side_float_binary64 = (_val) } } } }
 #define side_arg_float_binary128(_val) { .type = SIDE_TYPE_FLOAT_BINARY128, .u = { .side_static = { .float_value = { .side_float_binary128 = (_val) } } } }
 
-#define side_arg_struct(_side_type)    { .type = SIDE_TYPE_STRUCT, .u = { .side_static = { .side_struct = (_side_type) } } }
+#define side_arg_struct(_side_type)    { .type = SIDE_TYPE_STRUCT, .u = { .side_static = { .side_struct = SIDE_PTR_INIT(_side_type) } } }
 
 #define side_arg_define_variant(_identifier, _selector_val, _option) \
        const struct side_arg_variant _identifier = { \
@@ -1457,13 +1457,13 @@ struct side_event_description {
                .type = SIDE_TYPE_VARIANT, \
                .u = { \
                        .side_static = { \
-                               .side_variant = (_side_variant), \
+                               .side_variant = SIDE_PTR_INIT(_side_variant), \
                        }, \
                }, \
        }
 
-#define side_arg_array(_side_type)     { .type = SIDE_TYPE_ARRAY, .u = { .side_static = { .side_array = (_side_type) } } }
-#define side_arg_vla(_side_type)       { .type = SIDE_TYPE_VLA, .u = { .side_static = { .side_vla = (_side_type) } } }
+#define side_arg_array(_side_type)     { .type = SIDE_TYPE_ARRAY, .u = { .side_static = { .side_array = SIDE_PTR_INIT(_side_type) } } }
+#define side_arg_vla(_side_type)       { .type = SIDE_TYPE_VLA, .u = { .side_static = { .side_vla = SIDE_PTR_INIT(_side_type) } } }
 #define side_arg_vla_visitor(_ctx)     { .type = SIDE_TYPE_VLA_VISITOR, .u = { .side_static = { .side_vla_app_visitor_ctx = (_ctx) } } }
 
 /* Gather field arguments */
index fe09d7bb7dc5b3aff8c5ca86ca51f92eee09e505..c7c1cc845db6561765e81be4385f4003d688ef74 100644 (file)
@@ -538,13 +538,13 @@ void tracer_print_enum_bitmap(const struct side_type *type_desc,
                break;
        case SIDE_TYPE_ARRAY:
                elem_type = side_ptr_get(enum_elem_type->u.side_array.elem_type);
-               array_item = item->u.side_static.side_array->sav;
+               array_item = side_ptr_get(item->u.side_static.side_array)->sav;
                nr_items = type_desc->u.side_array.length;
                break;
        case SIDE_TYPE_VLA:
                elem_type = side_ptr_get(enum_elem_type->u.side_vla.elem_type);
-               array_item = item->u.side_static.side_vla->sav;
-               nr_items = item->u.side_static.side_vla->len;
+               array_item = side_ptr_get(item->u.side_static.side_vla)->sav;
+               nr_items = side_ptr_get(item->u.side_static.side_vla)->len;
                break;
        default:
                fprintf(stderr, "ERROR: Unexpected enum element type\n");
@@ -952,16 +952,16 @@ void tracer_print_type(const struct side_type *type_desc, const struct side_arg
 
                /* Stack-copy compound types */
        case SIDE_TYPE_STRUCT:
-               tracer_print_struct(type_desc, item->u.side_static.side_struct);
+               tracer_print_struct(type_desc, side_ptr_get(item->u.side_static.side_struct));
                break;
        case SIDE_TYPE_VARIANT:
-               tracer_print_variant(type_desc, item->u.side_static.side_variant);
+               tracer_print_variant(type_desc, side_ptr_get(item->u.side_static.side_variant));
                break;
        case SIDE_TYPE_ARRAY:
-               tracer_print_array(type_desc, item->u.side_static.side_array);
+               tracer_print_array(type_desc, side_ptr_get(item->u.side_static.side_array));
                break;
        case SIDE_TYPE_VLA:
-               tracer_print_vla(type_desc, item->u.side_static.side_vla);
+               tracer_print_vla(type_desc, side_ptr_get(item->u.side_static.side_vla));
                break;
        case SIDE_TYPE_VLA_VISITOR:
                tracer_print_vla_visitor(type_desc, item->u.side_static.side_vla_app_visitor_ctx);
This page took 0.043668 seconds and 4 git commands to generate.