#ifndef EXT_FOREVERYPART_COMMON_H #define EXT_FOREVERYPART_COMMON_H #include "sieve-message.h" /* * Extension */ struct ext_extracttext_context { const struct sieve_extension *var_ext; const struct sieve_extension *fep_ext; }; extern const struct sieve_extension_def foreverypart_extension; extern const struct sieve_extension_def mime_extension; extern const struct sieve_extension_def extracttext_extension; /* * Tagged arguments */ extern const struct sieve_argument_def mime_tag; extern const struct sieve_argument_def mime_anychild_tag; extern const struct sieve_argument_def mime_type_tag; extern const struct sieve_argument_def mime_subtype_tag; extern const struct sieve_argument_def mime_contenttype_tag; extern const struct sieve_argument_def mime_param_tag; /* * Commands */ struct ext_foreverypart_loop { const char *name; struct sieve_jumplist *exit_jumps; }; extern const struct sieve_command_def cmd_foreverypart; extern const struct sieve_command_def cmd_break; extern const struct sieve_command_def cmd_extracttext; /* * Operations */ extern const struct sieve_operation_def foreverypart_begin_operation; extern const struct sieve_operation_def foreverypart_end_operation; extern const struct sieve_operation_def break_operation; extern const struct sieve_operation_def extracttext_operation; enum ext_foreverypart_opcode { EXT_FOREVERYPART_OPERATION_FOREVERYPART_BEGIN, EXT_FOREVERYPART_OPERATION_FOREVERYPART_END, EXT_FOREVERYPART_OPERATION_BREAK, }; /* * Operands */ enum ext_mime_option { EXT_MIME_OPTION_NONE = 0, EXT_MIME_OPTION_TYPE, EXT_MIME_OPTION_SUBTYPE, EXT_MIME_OPTION_CONTENTTYPE, EXT_MIME_OPTION_PARAM }; extern const struct sieve_operand_def mime_operand; /* * Foreverypart loop */ struct ext_foreverypart_runtime_loop { struct sieve_message_part_iter part_iter; struct sieve_message_part *part; }; struct ext_foreverypart_runtime_loop * ext_foreverypart_runtime_loop_get_current (const struct sieve_runtime_env *renv); #endif