aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/imap/MCIMAPSearchExpression.h
blob: 182f301385c5af87b635d385a93d30d3fd6fed70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#ifndef MAILCORE_MCIMAPSEARCHEXPRESSION_H

#define MAILCORE_MCIMAPSEARCHEXPRESSION_H

#include <MailCore/MCBaseTypes.h>
#include <MailCore/MCMessageConstants.h>

#ifdef __cplusplus

namespace mailcore {
    
    class MAILCORE_EXPORT IMAPSearchExpression : public Object {
    public:
        IMAPSearchExpression();
        virtual ~IMAPSearchExpression();
        
        virtual IMAPSearchKind kind();
        virtual String * header();
        virtual String * value();
        virtual uint64_t longNumber();
        virtual time_t date();
        virtual IndexSet * uids();
        virtual IndexSet * numbers();
        
        
        virtual IMAPSearchExpression * leftExpression();
        virtual IMAPSearchExpression * rightExpression();
        
        static IMAPSearchExpression * searchAll();
        static IMAPSearchExpression * searchFrom(String * value);
        static IMAPSearchExpression * searchTo(String *value);
        static IMAPSearchExpression * searchCc(String *value);
        static IMAPSearchExpression * searchBcc(String *value);
        static IMAPSearchExpression * searchRecipient(String * value);
        static IMAPSearchExpression * searchSubject(String * value);
        static IMAPSearchExpression * searchContent(String * value);
        static IMAPSearchExpression * searchBody(String * value);
        static IMAPSearchExpression * searchHeader(String * header, String * value);
        static IMAPSearchExpression * searchUIDs(IndexSet * uids);
        static IMAPSearchExpression * searchNumbers(IndexSet * numbers);
        static IMAPSearchExpression * searchRead();
        static IMAPSearchExpression * searchUnread();
        static IMAPSearchExpression * searchFlagged();
        static IMAPSearchExpression * searchUnflagged();
        static IMAPSearchExpression * searchAnswered();
        static IMAPSearchExpression * searchUnanswered();
        static IMAPSearchExpression * searchDraft();
        static IMAPSearchExpression * searchUndraft();
        static IMAPSearchExpression * searchDeleted();
        static IMAPSearchExpression * searchSpam();
        static IMAPSearchExpression * searchBeforeDate(time_t date);
        static IMAPSearchExpression * searchOnDate(time_t date);
        static IMAPSearchExpression * searchSinceDate(time_t date);
        static IMAPSearchExpression * searchBeforeReceivedDate(time_t date);
        static IMAPSearchExpression * searchOnReceivedDate(time_t date);
        static IMAPSearchExpression * searchSinceReceivedDate(time_t date);
        static IMAPSearchExpression * searchSizeLarger(uint32_t size);
        static IMAPSearchExpression * searchSizeSmaller(uint32_t size);
        static IMAPSearchExpression * searchGmailThreadID(uint64_t number);
        static IMAPSearchExpression * searchGmailMessageID(uint64_t number);
        static IMAPSearchExpression * searchGmailRaw(String * expr);
        static IMAPSearchExpression * searchAnd(IMAPSearchExpression * left, IMAPSearchExpression * right);
        static IMAPSearchExpression * searchOr(IMAPSearchExpression * left, IMAPSearchExpression * right);
        static IMAPSearchExpression * searchNot(IMAPSearchExpression * notExpr);
        
        
    public: // subclass behavior
        IMAPSearchExpression(IMAPSearchExpression * other);
        virtual String * description();
        virtual Object * copy();
        
    private:
        IMAPSearchKind mKind;
        String * mHeader;
        String * mValue;
        uint64_t mLongNumber;
        IndexSet * mUids;
        IndexSet * mNumbers;
        IMAPSearchExpression * mLeftExpression;
        IMAPSearchExpression * mRightExpression;
        void init();
    };
    
}

#endif

#endif