summaryrefslogtreecommitdiffstats
path: root/pigeonhole/src/lib-sieve/sieve-stringlist.h
diff options
context:
space:
mode:
Diffstat (limited to 'pigeonhole/src/lib-sieve/sieve-stringlist.h')
-rw-r--r--pigeonhole/src/lib-sieve/sieve-stringlist.h74
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