diff options
author | Wojciech Polak <polak@gnu.org> | 2009-08-09 20:02:10 +0200 |
---|---|---|
committer | Wojciech Polak <polak@gnu.org> | 2009-08-09 20:02:10 +0200 |
commit | 29b6ab7a115af00e066803ab6fac400bccbcad5f (patch) | |
tree | 24911a24f90a71c315430307434e39a4a83b83f1 | |
parent | 5d748cfcbe28500b6ddb5c3d198f46252cb4d118 (diff) | |
download | mailutils-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.h | 1 | ||||
-rw-r--r-- | include/mailutils/cpp/mailbox.h | 1 | ||||
-rw-r--r-- | libmu_cpp/header.cc | 14 | ||||
-rw-r--r-- | libmu_cpp/mailbox.cc | 7 | ||||
-rw-r--r-- | python/mailutils/header.py | 11 |
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: |