aboutsummaryrefslogtreecommitdiffstats
path: root/src/libutil/expression.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libutil/expression.h')
-rw-r--r--src/libutil/expression.h22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/libutil/expression.h b/src/libutil/expression.h
index fefde2974..7f7cb2dda 100644
--- a/src/libutil/expression.h
+++ b/src/libutil/expression.h
@@ -56,12 +56,24 @@ typedef struct rspamd_expression_atom_s {
gint priority;
} rspamd_expression_atom_t;
+struct rspamd_expr_process_data {
+ /* Current Lua state to run atom processing */
+ struct lua_State *L;
+ /* Parameter of lua-function processing atom*/
+ gint stack_item;
+ gint flags;
+ /* != NULL if trace is collected */
+ GPtrArray *trace;
+ struct composites_data *cd;
+ struct rspamd_task *task;
+};
+
struct rspamd_atom_subr {
/* Parses atom from string and returns atom structure */
rspamd_expression_atom_t * (*parse)(const gchar *line, gsize len,
rspamd_mempool_t *pool, gpointer ud, GError **err);
/* Process atom via the opaque pointer (e.g. struct rspamd_task *) */
- gdouble (*process) (gpointer input, rspamd_expression_atom_t *atom);
+ gdouble (*process) (struct rspamd_expr_process_data *process_data, rspamd_expression_atom_t *atom);
/* Calculates the relative priority of the expression */
gint (*priority) (rspamd_expression_atom_t *atom);
void (*destroy) (rspamd_expression_atom_t *atom);
@@ -92,8 +104,8 @@ gboolean rspamd_parse_expression (const gchar *line, gsize len,
* @param data opaque data pointer for all the atoms
* @return the value of expression
*/
-gdouble rspamd_process_expression (struct rspamd_expression *expr, gint flags,
- gpointer data);
+gdouble rspamd_process_expression (struct rspamd_expression *expr,
+ struct rspamd_expr_process_data *process_data);
/**
* Process the expression and return its value using atom 'process' functions with the specified data pointer.
@@ -103,8 +115,8 @@ gdouble rspamd_process_expression (struct rspamd_expression *expr, gint flags,
* @param track pointer array to atoms tracking
* @return the value of expression
*/
-gdouble rspamd_process_expression_track (struct rspamd_expression *expr, gint flags,
- gpointer data, GPtrArray *track);
+gdouble rspamd_process_expression_track (struct rspamd_expression *expr,
+ struct rspamd_expr_process_data *process_data);
/**
* Shows string representation of an expression