void tracer_print_type(const struct side_type_description *type_desc, const struct side_arg_vec *item);
static
-void tracer_print_attr_type(const struct side_attr *attr)
+void tracer_print_attr_type(const char *separator, const struct side_attr *attr)
{
- printf("{ key: \"%s\", value: ", attr->key);
+ printf("{ key%s \"%s\", value%s ", separator, attr->key, separator);
switch (attr->value.type) {
case SIDE_ATTR_TYPE_BOOL:
printf("%s", attr->value.u.side_bool ? "true" : "false");
}
static
-void print_attributes(const char *prefix_str, const struct side_attr *attr, uint32_t nr_attr)
+void print_attributes(const char *prefix_str, const char *separator,
+ const struct side_attr *attr, uint32_t nr_attr)
{
int i;
if (!nr_attr)
return;
- printf("%s[ ", prefix_str);
+ printf("%s%s [ ", prefix_str, separator);
for (i = 0; i < nr_attr; i++) {
printf("%s", i ? ", " : "");
- tracer_print_attr_type(&attr[i]);
+ tracer_print_attr_type(separator, &attr[i]);
}
printf(" ]");
}
fprintf(stderr, "ERROR: Unexpected enum element type\n");
abort();
}
- print_attributes("attr: ", mappings->attr, mappings->nr_attr);
+ print_attributes("attr", ":", mappings->attr, mappings->nr_attr);
printf("%s", mappings->nr_attr ? ", " : "");
tracer_print_type(type_desc->u.side_enum.elem_type, item);
printf(", labels: [ ");
abort();
}
- print_attributes("attr: ", side_enum_mappings->attr, side_enum_mappings->nr_attr);
+ print_attributes("attr", ":", side_enum_mappings->attr, side_enum_mappings->nr_attr);
printf("%s", side_enum_mappings->nr_attr ? ", " : "");
printf("labels: [ ");
for (i = 0; i < side_enum_mappings->nr_mappings; i++) {
static
void tracer_print_basic_type_header(const struct side_type_description *type_desc)
{
- print_attributes("attr: ", type_desc->u.side_basic.attr, type_desc->u.side_basic.nr_attr);
+ print_attributes("attr", ":", type_desc->u.side_basic.attr, type_desc->u.side_basic.nr_attr);
printf("%s", type_desc->u.side_basic.nr_attr ? ", " : "");
printf("value: ");
}
fprintf(stderr, "ERROR: number of fields mismatch between description and arguments of structure\n");
abort();
}
- print_attributes("attr: ", type_desc->u.side_struct->attr, type_desc->u.side_struct->nr_attr);
+ print_attributes("attr", ":", type_desc->u.side_struct->attr, type_desc->u.side_struct->nr_attr);
printf("%s", type_desc->u.side_struct->nr_attr ? ", " : "");
printf("fields: { ");
for (i = 0; i < side_sav_len; i++) {
fprintf(stderr, "ERROR: length mismatch between description and arguments of array\n");
abort();
}
- print_attributes("attr: ", type_desc->u.side_array.attr, type_desc->u.side_array.nr_attr);
+ print_attributes("attr", ":", type_desc->u.side_array.attr, type_desc->u.side_array.nr_attr);
printf("%s", type_desc->u.side_array.nr_attr ? ", " : "");
printf("elements: ");
printf("[ ");
uint32_t side_sav_len = sav_desc->len;
int i;
- print_attributes("attr: ", type_desc->u.side_vla.attr, type_desc->u.side_vla.nr_attr);
+ print_attributes("attr", ":", type_desc->u.side_vla.attr, type_desc->u.side_vla.nr_attr);
printf("%s", type_desc->u.side_vla.nr_attr ? ", " : "");
printf("elements: ");
printf("[ ");
.priv = &tracer_priv,
};
- print_attributes("attr: ", type_desc->u.side_vla_visitor.attr, type_desc->u.side_vla_visitor.nr_attr);
+ print_attributes("attr", ":", type_desc->u.side_vla_visitor.attr, type_desc->u.side_vla_visitor.nr_attr);
printf("%s", type_desc->u.side_vla_visitor.nr_attr ? ", " : "");
printf("elements: ");
printf("[ ");
enum side_type side_type;
int i;
- print_attributes("attr: ", type_desc->u.side_array.attr, type_desc->u.side_array.nr_attr);
+ print_attributes("attr", ":", type_desc->u.side_array.attr, type_desc->u.side_array.nr_attr);
printf("%s", type_desc->u.side_array.nr_attr ? ", " : "");
printf("elements: ");
switch (item->type) {
enum side_type side_type;
int i;
- print_attributes("attr: ", type_desc->u.side_vla.attr, type_desc->u.side_vla.nr_attr);
+ print_attributes("attr", ":", type_desc->u.side_vla.attr, type_desc->u.side_vla.nr_attr);
printf("%s", type_desc->u.side_vla.nr_attr ? ", " : "");
printf("elements: ");
switch (item->type) {
uint32_t len = dynamic_struct->len;
int i;
- print_attributes("attr:: ", dynamic_struct->attr, dynamic_struct->nr_attr);
+ print_attributes("attr", "::", dynamic_struct->attr, dynamic_struct->nr_attr);
printf("%s", dynamic_struct->nr_attr ? ", " : "");
printf("fields:: ");
printf("[ ");
};
void *app_ctx = item->u.side_dynamic_struct_visitor.app_ctx;
- print_attributes("attr:: ", item->u.side_dynamic_struct_visitor.attr, item->u.side_dynamic_struct_visitor.nr_attr);
+ print_attributes("attr", "::", item->u.side_dynamic_struct_visitor.attr, item->u.side_dynamic_struct_visitor.nr_attr);
printf("%s", item->u.side_dynamic_struct_visitor.nr_attr ? ", " : "");
printf("fields:: ");
printf("[ ");
uint32_t side_sav_len = vla->len;
int i;
- print_attributes("attr:: ", vla->attr, vla->nr_attr);
+ print_attributes("attr", "::", vla->attr, vla->nr_attr);
printf("%s", vla->nr_attr ? ", " : "");
printf("elements:: ");
printf("[ ");
};
void *app_ctx = item->u.side_dynamic_vla_visitor.app_ctx;
- print_attributes("attr:: ", item->u.side_dynamic_vla_visitor.attr, item->u.side_dynamic_vla_visitor.nr_attr);
+ print_attributes("attr", "::", item->u.side_dynamic_vla_visitor.attr, item->u.side_dynamic_vla_visitor.nr_attr);
printf("%s", item->u.side_dynamic_vla_visitor.nr_attr ? ", " : "");
printf("elements:: ");
printf("[ ");
static
void tracer_print_dynamic_basic_type_header(const struct side_arg_dynamic_vec *item)
{
- print_attributes("attr:: ", item->u.side_basic.attr, item->u.side_basic.nr_attr);
+ print_attributes("attr", "::", item->u.side_basic.attr, item->u.side_basic.nr_attr);
printf("%s", item->u.side_basic.nr_attr ? ", " : "");
printf("value:: ");
}
fprintf(stderr, "ERROR: number of fields mismatch between description and arguments\n");
abort();
}
- print_attributes(", attributes: ", desc->attr, desc->nr_attr);
+ print_attributes(", attr", ":", desc->attr, desc->nr_attr);
printf("%s", side_sav_len ? ", fields: [ " : "");
for (i = 0; i < side_sav_len; i++) {
printf("%s", i ? ", " : "");
fprintf(stderr, "ERROR: unexpected non-variadic event description\n");
abort();
}
- printf("%s", var_struct->nr_attr && nr_fields ? ", " : "");
- print_attributes("attributes:: ", var_struct->attr, var_struct->nr_attr);
- printf("%s", var_struct_len && (nr_fields || var_struct->nr_attr) ? ", fields:: [ " : "");
+ print_attributes(", attr ", "::", var_struct->attr, var_struct->nr_attr);
+ printf("%s", var_struct_len ? ", fields:: [ " : "");
for (i = 0; i < var_struct_len; i++, nr_fields++) {
printf("%s", i ? ", " : "");
printf("%s:: ", var_struct->fields[i].field_name);