#ifndef LTTNG_EVENT_EXPR_INTERNAL_H
#define LTTNG_EVENT_EXPR_INTERNAL_H
-#include <assert.h>
+#include <common/macros.h>
#include <lttng/event-expr.h>
+struct lttng_bytecode;
+struct mi_writer;
+
struct lttng_event_expr {
enum lttng_event_expr_type type;
};
static inline
bool lttng_event_expr_is_lvalue(const struct lttng_event_expr *expr)
{
- assert(expr);
+ LTTNG_ASSERT(expr);
return expr->type == LTTNG_EVENT_EXPR_TYPE_EVENT_PAYLOAD_FIELD ||
expr->type == LTTNG_EVENT_EXPR_TYPE_CHANNEL_CONTEXT_FIELD ||
expr->type == LTTNG_EVENT_EXPR_TYPE_APP_SPECIFIC_CONTEXT_FIELD ||
expr->type == LTTNG_EVENT_EXPR_TYPE_ARRAY_FIELD_ELEMENT;
}
+LTTNG_HIDDEN
+int lttng_event_expr_to_bytecode(const struct lttng_event_expr *expr,
+ struct lttng_bytecode **bytecode_out);
+
+LTTNG_HIDDEN
+enum lttng_error_code lttng_event_expr_mi_serialize(
+ const struct lttng_event_expr *expression,
+ struct mi_writer *writer);
+
#endif /* LTTNG_EVENT_EXPR_INTERNAL_H */