summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWojciech Polak <polak@gnu.org>2009-08-09 20:02:10 +0200
committerWojciech Polak <polak@gnu.org>2009-08-09 20:02:10 +0200
commit29b6ab7a115af00e066803ab6fac400bccbcad5f (patch)
tree24911a24f90a71c315430307434e39a4a83b83f1
parent5d748cfcbe28500b6ddb5c3d198f46252cb4d118 (diff)
downloadmailutils-29b6ab7a115af00e066803ab6fac400bccbcad5f.tar.gz
mailutils-29b6ab7a115af00e066803ab6fac400bccbcad5f.tar.bz2
Improve C++ and Python APIs.
* include/mailutils/cpp/header.h (Header.has_key): New method. * libmu_cpp/header.cc: Likewise. * include/mailutils/cpp/mailbox.h (MailboxDefault): Make name optional. * libmu_cpp/mailbox.cc: Likewise. * python/mailutils/header.py (__contains__, has_key): New method.
-rw-r--r--include/mailutils/cpp/header.h1
-rw-r--r--include/mailutils/cpp/mailbox.h1
-rw-r--r--libmu_cpp/header.cc14
-rw-r--r--libmu_cpp/mailbox.cc7
-rw-r--r--python/mailutils/header.py11
5 files changed, 34 insertions, 0 deletions
diff --git a/include/mailutils/cpp/header.h b/include/mailutils/cpp/header.h
index 16baf6845..130751a19 100644
--- a/include/mailutils/cpp/header.h
+++ b/include/mailutils/cpp/header.h
@@ -38,6 +38,7 @@ class Header
Header ();
Header (const mu_header_t);
+ bool has_key (const std::string& name);
std::string get_value (const std::string& name);
std::string get_value (const std::string& name, const std::string& def);
size_t size ();
diff --git a/include/mailutils/cpp/mailbox.h b/include/mailutils/cpp/mailbox.h
index e8d7c5cc1..2bc7fc11a 100644
--- a/include/mailutils/cpp/mailbox.h
+++ b/include/mailutils/cpp/mailbox.h
@@ -76,6 +76,7 @@ class Mailbox : public MailboxBase
class MailboxDefault : public MailboxBase
{
public:
+ MailboxDefault ();
MailboxDefault (const std::string&);
MailboxDefault (const mu_mailbox_t);
~MailboxDefault ();
diff --git a/libmu_cpp/header.cc b/libmu_cpp/header.cc
index f292b6482..e8793e1fa 100644
--- a/libmu_cpp/header.cc
+++ b/libmu_cpp/header.cc
@@ -39,6 +39,20 @@ Header :: Header (const mu_header_t hdr)
this->hdr = hdr;
}
+bool
+Header :: has_key (const std::string& name)
+{
+ const char* buf = NULL;
+
+ int status = mu_header_sget_value (hdr, name.c_str (), &buf);
+ if (status == MU_ERR_NOENT)
+ return false;
+ else if (status)
+ throw Exception ("Header::has_key", status);
+
+ return true;
+}
+
std::string
Header :: get_value (const std::string& name)
{
diff --git a/libmu_cpp/mailbox.cc b/libmu_cpp/mailbox.cc
index fe95a2332..dc0bbb522 100644
--- a/libmu_cpp/mailbox.cc
+++ b/libmu_cpp/mailbox.cc
@@ -226,6 +226,13 @@ Mailbox :: ~Mailbox ()
// MailboxDefault
//
+MailboxDefault :: MailboxDefault ()
+{
+ int status = mu_mailbox_create_default (&mbox, NULL);
+ if (status)
+ throw Exception ("MailboxDefault::MailboxDefault", status);
+}
+
MailboxDefault :: MailboxDefault (const std::string& name)
{
int status = mu_mailbox_create_default (&mbox, name.c_str ());
diff --git a/python/mailutils/header.py b/python/mailutils/header.py
index fb6644b14..86ba9043a 100644
--- a/python/mailutils/header.py
+++ b/python/mailutils/header.py
@@ -38,6 +38,14 @@ class Header:
def __setitem__ (self, name, value):
self.set_value (name, value)
+ def __contains__ (self, name):
+ status, value = header.get_value (self.hdr, name)
+ if status == MU_ERR_NOENT:
+ return False
+ elif status:
+ raise HeaderError (status)
+ return True
+
def __getattr__ (self, name):
if name == 'size':
return self.get_size ()
@@ -62,6 +70,9 @@ class Header:
self.__count += 1
return self.__getitem__ (self.__count)
+ def has_key (self, name):
+ return self.__contains__ (name)
+
def get_size (self):
status, size = header.size (self.hdr)
if status:

Return to:

Send suggestions and report system problems to the System administrator.