#ifndef __SIEVE_COMMON_H
#define __SIEVE_COMMON_H
#include "lib.h"
#include "sieve-config.h"
#include "sieve-types.h"
#include <sys/types.h>
#include <stdlib.h>
typedef size_t sieve_size_t;
typedef uint32_t sieve_offset_t;
typedef uint32_t sieve_number_t;
#define SIEVE_MAX_NUMBER ((sieve_number_t) -1)
struct sieve_error_handler;
enum sieve_ast_argument_type;
struct sieve_ast;
struct sieve_ast_node;
struct sieve_ast_argument;
struct sieve_argument;
struct sieve_argument_def;
struct sieve_command;
struct sieve_command_def;
struct sieve_command_context;
struct sieve_command_registration;
struct sieve_stringlist;
struct sieve_operation_extension;
struct sieve_lexer;
struct sieve_parser;
struct sieve_validator;
struct sieve_jumplist;
struct sieve_generator;
struct sieve_codegen_env;
struct sieve_runtime_env;
struct sieve_interpreter;
struct sieve_dumptime_env;
struct sieve_binary_dumper;
struct sieve_code_dumper;
struct sieve_extension;
struct sieve_extension_def;
struct sieve_extension_objects;
struct sieve_operand;
struct sieve_operand_def;
struct sieve_operand_class;
struct sieve_operation;
struct sieve_coded_stringlist;
struct sieve_binary;
struct sieve_binary_block;
struct sieve_binary_debug_writer;
struct sieve_binary_debug_reader;
struct sieve_object_def;
struct sieve_object;
struct sieve_comparator;
struct sieve_match_type;
struct sieve_match_context;
struct sieve_address;
struct sieve_address_list;
struct sieve_address_part_def;
struct sieve_address_part;
struct sieve_result;
struct sieve_side_effects_list;
struct sieve_result_print_env;
struct sieve_action_exec_env;
struct sieve_action;
struct sieve_action_def;
struct sieve_side_effect;
struct sieve_side_effect_def;
struct sieve_script;
struct sieve_message_context;
struct sieve_plugin;
struct sieve_ast *sieve_parse
(struct sieve_script *script, struct sieve_error_handler *ehandler,
enum sieve_error *error_r);
bool sieve_validate
(struct sieve_ast *ast, struct sieve_error_handler *ehandler,
enum sieve_error *error_r);
struct sieve_instance {
pool_t pool;
const struct sieve_environment *env;
void *context;
bool debug;
struct sieve_extension_registry *ext_reg;
struct sieve_error_handler *system_ehandler;
struct sieve_plugin *plugins;
size_t max_script_size;
unsigned int max_actions;
unsigned int max_redirects;
};
#endif