diff options
Diffstat (limited to 'src/expressions.h')
-rw-r--r-- | src/expressions.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/expressions.h b/src/expressions.h new file mode 100644 index 000000000..65b555566 --- /dev/null +++ b/src/expressions.h @@ -0,0 +1,69 @@ +/** + * @file expressions.h + * Rspamd expressions API + */ + +#ifndef RSPAMD_EXPRESSIONS_H +#define RSPAMD_EXPRESSIONS_H + +#include "config.h" + +struct worker_task; + +/** + * Rspamd expression function + */ +struct expression_function { + char *name; /**< name of function */ + GList *args; /**< its args */ +}; + +/** + * Function's argument + */ +struct expression_argument { + enum { + EXPRESSION_ARGUMENT_NORMAL, + EXPRESSION_ARGUMENT_FUNCTION + } type; /**< type of argument (text or other function) */ + void *data; /**< pointer to its data */ +}; + +/** + * Logic expression + */ +struct expression { + enum { EXPR_REGEXP, EXPR_OPERATION, EXPR_FUNCTION, EXPR_STR } type; /**< expression type */ + union { + void *operand; + char operation; + } content; /**< union for storing operand or operation code */ + struct expression *next; /**< chain link */ +}; + +/** + * Parse regexp line to regexp structure + * @param pool memory pool to use + * @param line incoming line + * @return regexp structure or NULL in case of error + */ +struct rspamd_regexp* parse_regexp (memory_pool_t *pool, char *line); + +/** + * Parse composites line to composites structure (eg. "SYMBOL1&SYMBOL2|!SYMBOL3") + * @param pool memory pool to use + * @param line incoming line + * @return expression structure or NULL in case of error + */ +struct expression* parse_expression (memory_pool_t *pool, char *line); + +/** + * Call specified fucntion and return boolean result + * @param func function to call + * @param task task object + * @return TRUE or FALSE depending on function result + */ +gboolean call_expression_function (struct expression_function *func, struct worker_task *task); + + +#endif |