return ret;
}
+
+void
+rspamd_symbols_cache_foreach (struct symbols_cache *cache,
+ void (*func)(gint , const gchar *, gint , gpointer ),
+ gpointer ud)
+{
+ guint i;
+ struct cache_item *item;
+
+ PTR_ARRAY_FOREACH (cache->items_by_id, i, item) {
+ func (item->id, item->symbol, item->type, ud);
+ }
+}
SYMBOL_TYPE_EMPTY = (1 << 8), /* Allow execution on empty tasks */
SYMBOL_TYPE_PREFILTER = (1 << 9),
SYMBOL_TYPE_POSTFILTER = (1 << 10),
+ SYMBOL_TYPE_NONSTAT = (1 << 11), /* Skip as statistical symbol */
};
/**
*/
gboolean rspamd_symbols_cache_is_symbol_enabled (struct rspamd_task *task,
struct symbols_cache *cache, const gchar *symbol);
+/**
+ * Process specific function for each cache element (in order they are added)
+ * @param cache
+ * @param func
+ * @param ud
+ */
+void rspamd_symbols_cache_foreach (struct symbols_cache *cache,
+ void (*func)(gint /* id */, const gchar * /* name */,
+ gint /* flags */, gpointer /* userdata */),
+ gpointer ud);
+
#endif