diff options
Diffstat (limited to 'pigeonhole/src/lib-sieve/sieve-stringlist.h')
-rw-r--r-- | pigeonhole/src/lib-sieve/sieve-stringlist.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/pigeonhole/src/lib-sieve/sieve-stringlist.h b/pigeonhole/src/lib-sieve/sieve-stringlist.h new file mode 100644 index 0000000..1909b7a --- /dev/null +++ b/pigeonhole/src/lib-sieve/sieve-stringlist.h @@ -0,0 +1,74 @@ +#ifndef SIEVE_STRINGLIST_H +#define SIEVE_STRINGLIST_H + +/* + * Stringlist API + */ + +struct sieve_stringlist { + int (*next_item) + (struct sieve_stringlist *strlist, string_t **str_r); + void (*reset) + (struct sieve_stringlist *strlist); + int (*get_length) + (struct sieve_stringlist *strlist); + + int (*read_all) + (struct sieve_stringlist *strlist, pool_t pool, + const char * const **list_r); + + void (*set_trace) + (struct sieve_stringlist *strlist, bool trace); + + const struct sieve_runtime_env *runenv; + int exec_status; + + bool trace:1; +}; + +static inline void sieve_stringlist_set_trace +(struct sieve_stringlist *strlist, bool trace) +{ + strlist->trace = trace; + + if ( strlist->set_trace != NULL ) + strlist->set_trace(strlist, trace); +} + +static inline int sieve_stringlist_next_item +(struct sieve_stringlist *strlist, string_t **str_r) +{ + return strlist->next_item(strlist, str_r); +} + +static inline void sieve_stringlist_reset +(struct sieve_stringlist *strlist) +{ + strlist->reset(strlist); +} + +int sieve_stringlist_get_length + (struct sieve_stringlist *strlist); + +int sieve_stringlist_read_all + (struct sieve_stringlist *strlist, pool_t pool, + const char * const **list_r); + +/* + * Single Stringlist + */ + +struct sieve_stringlist *sieve_single_stringlist_create + (const struct sieve_runtime_env *renv, string_t *str, bool count_empty); +struct sieve_stringlist *sieve_single_stringlist_create_cstr +(const struct sieve_runtime_env *renv, const char *cstr, bool count_empty); + +/* + * Index Stringlist + */ + +struct sieve_stringlist *sieve_index_stringlist_create + (const struct sieve_runtime_env *renv, struct sieve_stringlist *source, + int index); + +#endif |