ff54bfbbab0b4750dbf3a0bdc05636a0c4b5e0a9
[claws.git] / src / matcher.h
1 #ifndef MATCHER_H
2
3 #define MATCHER_H
4
5 #include <sys/types.h>
6 #include <regex.h>
7 #include <glib.h>
8 #include "procmsg.h"
9
10 enum {
11         SCORING_ALL,
12         SCORING_SUBJECT,
13         SCORING_NOT_SUBJECT,
14         SCORING_FROM,
15         SCORING_NOT_FROM,
16         SCORING_TO,
17         SCORING_NOT_TO,
18         SCORING_CC,
19         SCORING_NOT_CC,
20         SCORING_TO_OR_CC,
21         SCORING_NOT_TO_AND_NOT_CC,
22         SCORING_AGE_SUP,
23         SCORING_AGE_INF,
24         SCORING_NEWSGROUPS,
25         SCORING_NOT_NEWSGROUPS,
26         SCORING_HEADER,
27         SCORING_NOT_HEADER,
28         SCORING_MESSAGE,
29         SCORING_NOT_MESSAGE,
30         SCORING_MESSAGEHEADERS,
31         SCORING_NOT_MESSAGEHEADERS,
32         SCORING_BODY,
33         SCORING_NOT_BODY,
34         SCORING_SCORE,
35         SCORING_MATCH,
36         SCORING_REGEXP,
37         SCORING_MATCHCASE,
38         SCORING_REGEXPCASE
39 };
40
41 struct _MatcherProp {
42         int matchtype;
43         int criteria;
44         gchar * header;
45         gchar * expr;
46         int age;
47         regex_t * preg;
48         int error;
49 };
50
51 typedef struct _MatcherProp MatcherProp;
52
53 struct _MatcherList {
54         GSList * matchers;
55         gboolean bool_and;
56 };
57
58 typedef struct _MatcherList MatcherList;
59
60 MatcherProp * matcherprop_new(gint criteria, gchar * header,
61                               gint matchtype, gchar * expr,
62                               int age);
63 void matcherprop_free(MatcherProp * prop);
64 MatcherProp * matcherprop_parse(gchar ** str);
65
66 gboolean matcherprop_match(MatcherProp * prop, MsgInfo * info);
67
68 MatcherList * matcherlist_new(GSList * matchers, gboolean bool_and);
69 void matcherlist_free(MatcherList * cond);
70 MatcherList * matcherlist_parse(gchar ** str);
71
72 gboolean matcherlist_match(MatcherList * cond, MsgInfo * info);
73
74 gint matcher_parse_keyword(gchar ** str);
75 gint matcher_parse_number(gchar ** str);
76 gboolean matcher_parse_boolean_op(gchar ** str);
77 gchar * matcher_parse_regexp(gchar ** str);
78 gchar * matcher_parse_str(gchar ** str);
79
80 #endif