*/
#include <urcu/list.h>
+#include <stdio.h>
#include <stdint.h>
#define printf_debug(fmt, args...) \
AST_LINK_BRACKET,
};
+enum ast_expt_type {
+ AST_EXP_UNKNOWN = 0,
+ AST_EXP_STRING,
+ AST_EXP_CONSTANT,
+ AST_EXP_FLOAT_CONSTANT,
+ AST_EXP_IDENTIFIER,
+ AST_EXP_GLOBAL_IDENTIFIER,
+ AST_EXP_NESTED,
+};
+
struct filter_node {
/*
* Parent node is only set on demand by specific visitor.
enum node_type type;
union {
struct {
+ /* Avoid -Wextern-c-compat warning with clang++. */
+ char unused;
} unknown;
struct {
struct filter_node *child;
} root;
struct {
- enum {
- AST_EXP_UNKNOWN = 0,
- AST_EXP_STRING,
- AST_EXP_CONSTANT,
- AST_EXP_FLOAT_CONSTANT,
- AST_EXP_IDENTIFIER,
- AST_EXP_GLOBAL_IDENTIFIER,
- AST_EXP_NESTED,
- } type;
+ enum ast_expt_type type;
enum ast_link_type post_op; /* reverse */
enum ast_link_type pre_op; /* forward */
union {
struct filter_ast *ast;
struct cds_list_head allocated_strings;
struct ir_op *ir_root;
- struct lttng_filter_bytecode_alloc *bytecode;
- struct lttng_filter_bytecode_alloc *bytecode_reloc;
+ struct lttng_bytecode_alloc *bytecode;
+ struct lttng_bytecode_alloc *bytecode_reloc;
};
struct filter_parser_ctx *filter_parser_ctx_alloc(FILE *input);