#include <string.h>
#include <stdlib.h>
#include <assert.h>
-#include <helpers/list.h>
#include <glib.h>
+#include <inttypes.h>
#include <errno.h>
+#include <babeltrace/list.h>
#include "ctf-scanner.h"
#include "ctf-parser.h"
#include "ctf-ast.h"
-#define printf_dbg(fmt, args...) fprintf(stderr, "%s: " fmt, __func__, ## args)
+#define fprintf_dbg(fd, fmt, args...) fprintf(fd, "%s: " fmt, __func__, ## args)
-static void print_tabs(FILE *fd, int depth)
+static
+void print_tabs(FILE *fd, int depth)
{
int i;
fprintf(fd, "\t");
}
+static
int ctf_visitor_print_unary_expression(FILE *fd, int depth, struct ctf_node *node)
{
int ret = 0;
case UNARY_SIGNED_CONSTANT:
print_tabs(fd, depth);
fprintf(fd, "<unary_expression value=");
- fprintf(fd, "%lld", node->u.unary_expression.u.signed_constant);
+ fprintf(fd, "%" PRId64, node->u.unary_expression.u.signed_constant);
fprintf(fd, " />\n");
break;
case UNARY_UNSIGNED_CONSTANT:
print_tabs(fd, depth);
fprintf(fd, "<unary_expression value=");
- fprintf(fd, "%llu", node->u.unary_expression.u.signed_constant);
+ fprintf(fd, "%" PRIu64, node->u.unary_expression.u.signed_constant);
fprintf(fd, " />\n");
break;
case UNARY_SBRAC:
print_tabs(fd, depth);
- fprintf(fd, "<unary_expression_sbrac>");
+ fprintf(fd, "<unary_expression_sbrac>\n");
ret = ctf_visitor_print_unary_expression(fd, depth + 1,
node->u.unary_expression.u.sbrac_exp);
if (ret)
return ret;
print_tabs(fd, depth);
- fprintf(fd, "</unary_expression_sbrac>");
+ fprintf(fd, "</unary_expression_sbrac>\n");
break;
case UNARY_NESTED:
print_tabs(fd, depth);
- fprintf(fd, "<unary_expression_nested>");
+ fprintf(fd, "<unary_expression_nested>\n");
ret = ctf_visitor_print_unary_expression(fd, depth + 1,
node->u.unary_expression.u.nested_exp);
if (ret)
return ret;
print_tabs(fd, depth);
- fprintf(fd, "</unary_expression_nested>");
+ fprintf(fd, "</unary_expression_nested>\n");
break;
case UNARY_UNKNOWN:
return 0;
}
+static
int ctf_visitor_print_type_specifier(FILE *fd, int depth, struct ctf_node *node)
{
print_tabs(fd, depth);
fprintf(fd, "bool");
break;
case TYPESPEC_COMPLEX:
- fprintf(fd, "complex");
+ fprintf(fd, "_Complex");
+ break;
+ case TYPESPEC_IMAGINARY:
+ fprintf(fd, "_Imaginary");
break;
case TYPESPEC_CONST:
fprintf(fd, "const");
return 0;
}
+static
int ctf_visitor_print_type_declarator(FILE *fd, int depth, struct ctf_node *node)
{
int ret = 0;
switch (node->u.type_declarator.type) {
case TYPEDEC_ID:
- print_tabs(fd, depth);
- fprintf(fd, "<id \"");
- fprintf(fd, "%s", node->u.type_declarator.u.id);
- fprintf(fd, "\" />\n");
+ if (node->u.type_declarator.u.id) {
+ print_tabs(fd, depth);
+ fprintf(fd, "<id \"");
+ fprintf(fd, "%s", node->u.type_declarator.u.id);
+ fprintf(fd, "\" />\n");
+ }
break;
case TYPEDEC_NESTED:
if (node->u.type_declarator.u.nested.type_declarator) {