aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/imap/MCIMAPSearchExpression.cc
diff options
context:
space:
mode:
authorGravatar DINH Viet Hoa <hoa@sprw.me>2013-01-11 01:08:18 -0800
committerGravatar DINH Viet Hoa <hoa@sprw.me>2013-01-11 01:08:18 -0800
commit739b68a69682d80d8247d4465eae7b182acc9da0 (patch)
tree34c33738bc0761d30c13f7f9b88fdf0d5c8cb4a9 /src/core/imap/MCIMAPSearchExpression.cc
parentf83e0e9ba3da2b8887f849483506d5de8f1d2c54 (diff)
first commit
Diffstat (limited to 'src/core/imap/MCIMAPSearchExpression.cc')
-rw-r--r--src/core/imap/MCIMAPSearchExpression.cc163
1 files changed, 163 insertions, 0 deletions
diff --git a/src/core/imap/MCIMAPSearchExpression.cc b/src/core/imap/MCIMAPSearchExpression.cc
new file mode 100644
index 00000000..14875c43
--- /dev/null
+++ b/src/core/imap/MCIMAPSearchExpression.cc
@@ -0,0 +1,163 @@
+#include "MCIMAPSearchExpression.h"
+
+using namespace mailcore;
+
+void IMAPSearchExpression::init()
+{
+ mKind = IMAPSearchKindNone;
+ mHeader = NULL;
+ mValue = NULL;
+ mLeftExpression = NULL;
+ mRightExpression = NULL;
+}
+
+IMAPSearchExpression::IMAPSearchExpression()
+{
+ init();
+}
+
+IMAPSearchExpression::IMAPSearchExpression(IMAPSearchExpression * other)
+{
+ init();
+ mKind = IMAPSearchKindNone;
+ MC_SAFE_REPLACE_COPY(String, mHeader, other->mHeader);
+ MC_SAFE_REPLACE_COPY(String, mValue, other->mValue);
+ MC_SAFE_REPLACE_COPY(IMAPSearchExpression, mLeftExpression, other->mLeftExpression);
+ MC_SAFE_REPLACE_COPY(IMAPSearchExpression, mRightExpression, other->mRightExpression);
+}
+
+IMAPSearchExpression::~IMAPSearchExpression()
+{
+ MC_SAFE_RELEASE(mHeader);
+ MC_SAFE_RELEASE(mValue);
+ MC_SAFE_RELEASE(mLeftExpression);
+ MC_SAFE_RELEASE(mRightExpression);
+}
+
+String * IMAPSearchExpression::description()
+{
+ switch (mKind) {
+ default:
+ case IMAPSearchKindNone:
+ return String::stringWithUTF8Format("<%s:%p None>", MCUTF8(className()), this);
+ case IMAPSearchKindFrom:
+ return String::stringWithUTF8Format("<%s:%p From %s>", MCUTF8(className()), this,
+ MCUTF8(mValue->description()));
+ case IMAPSearchKindRecipient:
+ return String::stringWithUTF8Format("<%s:%p Recipient %s>", MCUTF8(className()), this,
+ MCUTF8(mValue->description()));
+ case IMAPSearchKindSubject:
+ return String::stringWithUTF8Format("<%s:%p Subject %s>", MCUTF8(className()), this,
+ MCUTF8(mValue->description()));
+ case IMAPSearchKindContent:
+ return String::stringWithUTF8Format("<%s:%p Content %s>", MCUTF8(className()), this,
+ MCUTF8(mValue->description()));
+ case IMAPSearchKindHeader:
+ return String::stringWithUTF8Format("<%s:%p Header %s %s>", MCUTF8(className()), this,
+ MCUTF8(mHeader->description()), MCUTF8(mValue->description()));
+ case IMAPSearchKindOr:
+ return String::stringWithUTF8Format("<%s:%p Or %s %s>", MCUTF8(className()), this,
+ MCUTF8(mLeftExpression->description()), MCUTF8(mRightExpression->description()));
+ case IMAPSearchKindAnd:
+ return String::stringWithUTF8Format("<%s:%p And %s %s>", MCUTF8(className()), this,
+ MCUTF8(mLeftExpression->description()), MCUTF8(mRightExpression->description()));
+ }
+}
+
+#if 0
+String * IMAPSearchExpression::className()
+{
+ return MCSTR("IMAPSearchExpression");
+}
+#endif
+
+Object * IMAPSearchExpression::copy()
+{
+ return new IMAPSearchExpression(this);
+}
+
+IMAPSearchExpression * IMAPSearchExpression::searchFrom(String * value)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindFrom;
+ MC_SAFE_REPLACE_COPY(String, expr->mValue, value);
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
+IMAPSearchExpression * IMAPSearchExpression::searchRecipient(String * value)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindRecipient;
+ MC_SAFE_REPLACE_COPY(String, expr->mValue, value);
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
+IMAPSearchExpression * IMAPSearchExpression::searchSubject(String * value)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindSubject;
+ MC_SAFE_REPLACE_COPY(String, expr->mValue, value);
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
+IMAPSearchExpression * IMAPSearchExpression::searchContent(String * value)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindContent;
+ MC_SAFE_REPLACE_COPY(String, expr->mValue, value);
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
+IMAPSearchExpression * IMAPSearchExpression::searchHeader(String * header, String * value)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindHeader;
+ MC_SAFE_REPLACE_COPY(String, expr->mHeader, header);
+ MC_SAFE_REPLACE_COPY(String, expr->mValue, value);
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
+IMAPSearchExpression * IMAPSearchExpression::searchAnd(IMAPSearchExpression * left, IMAPSearchExpression * right)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindAnd;
+ MC_SAFE_REPLACE_RETAIN(IMAPSearchExpression, expr->mLeftExpression, left);
+ MC_SAFE_REPLACE_RETAIN(IMAPSearchExpression, expr->mRightExpression, right);
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
+IMAPSearchExpression * IMAPSearchExpression::searchOr(IMAPSearchExpression * left, IMAPSearchExpression * right)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindOr;
+ MC_SAFE_REPLACE_RETAIN(IMAPSearchExpression, expr->mLeftExpression, left);
+ MC_SAFE_REPLACE_RETAIN(IMAPSearchExpression, expr->mRightExpression, right);
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
+IMAPSearchKind IMAPSearchExpression::kind()
+{
+ return mKind;
+}
+
+String * IMAPSearchExpression::header()
+{
+ return mHeader;
+}
+
+String * IMAPSearchExpression::value()
+{
+ return mValue;
+}
+
+IMAPSearchExpression * IMAPSearchExpression::leftExpression()
+{
+ return mLeftExpression;
+}
+
+IMAPSearchExpression * IMAPSearchExpression::rightExpression()
+{
+ return mRightExpression;
+}
+
+