#include <stdint.h>
#include <stdio.h>
#include <glib.h>
-#include <babeltrace/list.h>
-#include <babeltrace/ctf-ir/trace.h>
+#include <babeltrace/list-internal.h>
+#include <babeltrace/babeltrace.h>
+#include <babeltrace/babeltrace-internal.h>
+
+#include "decoder.h"
+#include "ctf-meta.h"
// the parameter name (of the reentrant 'yyparse' function)
// data is a pointer to a 'SParserParam' structure
struct ctf_node;
struct ctf_parser;
+struct ctf_visitor_generate_ir;
+
+#define EINCOMPLETE 1000
#define FOREACH_CTF_NODES(F) \
F(NODE_UNKNOWN) \
const char *node_type(struct ctf_node *node);
-struct ctf_trace;
+BT_HIDDEN
+struct ctf_visitor_generate_ir *ctf_visitor_generate_ir_create(
+ const struct ctf_metadata_decoder_config *config,
+ const char *name);
+
+void ctf_visitor_generate_ir_destroy(struct ctf_visitor_generate_ir *visitor);
+
+BT_HIDDEN
+struct bt_trace *ctf_visitor_generate_ir_get_ir_trace(
+ struct ctf_visitor_generate_ir *visitor);
BT_HIDDEN
-int ctf_visitor_generate_ir(FILE *efd, struct ctf_node *node,
- struct bt_ctf_trace **trace);
+struct ctf_trace_class *ctf_visitor_generate_ir_borrow_ctf_trace_class(
+ struct ctf_visitor_generate_ir *visitor);
BT_HIDDEN
-int ctf_visitor_semantic_check(FILE *fd, int depth, struct ctf_node *node);
+int ctf_visitor_generate_ir_visit_node(struct ctf_visitor_generate_ir *visitor,
+ struct ctf_node *node);
BT_HIDDEN
-int ctf_visitor_parent_links(FILE *fd, int depth, struct ctf_node *node);
+int ctf_visitor_semantic_check(int depth, struct ctf_node *node);
BT_HIDDEN
-int ctf_destroy_metadata(struct ctf_trace *trace);
+int ctf_visitor_parent_links(int depth, struct ctf_node *node);
#endif /* _CTF_AST_H */