aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/imap/IMAPMessage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/imap/IMAPMessage.cpp')
-rw-r--r--src/net/imap/IMAPMessage.cpp72
1 files changed, 35 insertions, 37 deletions
diff --git a/src/net/imap/IMAPMessage.cpp b/src/net/imap/IMAPMessage.cpp
index 3dd6c021..05c37bf7 100644
--- a/src/net/imap/IMAPMessage.cpp
+++ b/src/net/imap/IMAPMessage.cpp
@@ -50,8 +50,8 @@ private:
public:
- const structure& getStructure() const;
- structure& getStructure();
+ ref <const structure> getStructure() const;
+ ref <structure> getStructure();
weak_ref <const IMAPpart> getParent() const { return (m_parent); }
@@ -59,12 +59,12 @@ public:
const int getSize() const { return (m_size); }
const int getNumber() const { return (m_number); }
- const header& getHeader() const
+ ref <const header> getHeader() const
{
if (m_header == NULL)
throw exceptions::unfetched_object();
else
- return (*m_header);
+ return m_header;
}
@@ -112,22 +112,20 @@ private:
class IMAPstructure : public structure
{
-private:
+public:
IMAPstructure()
{
}
-public:
-
IMAPstructure(const IMAPParser::body* body)
{
- m_parts.push_back(IMAPpart::create(NULL, 1, body));
+ m_parts.push_back(IMAPpart::create(NULL, 0, body));
}
IMAPstructure(ref <IMAPpart> parent, const std::vector <IMAPParser::body*>& list)
{
- int number = 1;
+ int number = 0;
for (std::vector <IMAPParser::body*>::const_iterator
it = list.begin() ; it != list.end() ; ++it, ++number)
@@ -137,36 +135,36 @@ public:
}
- const part& operator[](const int x) const
+ ref <const part> getPartAt(const int x) const
{
- return (*m_parts[x - 1]);
+ return m_parts[x];
}
- part& operator[](const int x)
+ ref <part> getPartAt(const int x)
{
- return (*m_parts[x - 1]);
+ return m_parts[x];
}
- const int getCount() const
+ const int getPartCount() const
{
- return (m_parts.size());
+ return m_parts.size();
}
- static IMAPstructure* emptyStructure()
+ static ref <IMAPstructure> emptyStructure()
{
- return (&m_emptyStructure);
+ return (m_emptyStructure);
}
private:
- static IMAPstructure m_emptyStructure;
+ static ref <IMAPstructure> m_emptyStructure;
std::vector <ref <IMAPpart> > m_parts;
};
-IMAPstructure IMAPstructure::m_emptyStructure;
+ref <IMAPstructure> IMAPstructure::m_emptyStructure = vmime::create <IMAPstructure>();
@@ -208,21 +206,21 @@ IMAPpart::IMAPpart(ref <IMAPpart> parent, const int number, const IMAPParser::bo
}
-const class structure& IMAPpart::getStructure() const
+ref <const structure> IMAPpart::getStructure() const
{
if (m_structure != NULL)
- return (*m_structure);
+ return (m_structure);
else
- return (*IMAPstructure::emptyStructure());
+ return (IMAPstructure::emptyStructure());
}
-class structure& IMAPpart::getStructure()
+ref <structure> IMAPpart::getStructure()
{
if (m_structure != NULL)
- return (*m_structure);
+ return (m_structure);
else
- return (*IMAPstructure::emptyStructure());
+ return (IMAPstructure::emptyStructure());
}
@@ -331,21 +329,21 @@ const int IMAPMessage::getFlags() const
}
-const structure& IMAPMessage::getStructure() const
+ref <const structure> IMAPMessage::getStructure() const
{
if (m_structure == NULL)
throw exceptions::unfetched_object();
- return (*m_structure);
+ return m_structure;
}
-structure& IMAPMessage::getStructure()
+ref <structure> IMAPMessage::getStructure()
{
if (m_structure == NULL)
throw exceptions::unfetched_object();
- return (*m_structure);
+ return m_structure;
}
@@ -369,17 +367,17 @@ void IMAPMessage::extract(utility::outputStream& os, utility::progressionListene
void IMAPMessage::extractPart
- (const part& p, utility::outputStream& os, utility::progressionListener* progress,
+ (ref <const part> p, utility::outputStream& os, utility::progressionListener* progress,
const int start, const int length, const bool peek) const
{
if (!m_folder)
throw exceptions::folder_not_found();
- extract(&p, os, progress, start, length, false, peek);
+ extract(p, os, progress, start, length, false, peek);
}
-void IMAPMessage::fetchPartHeader(part& p)
+void IMAPMessage::fetchPartHeader(ref <part> p)
{
if (!m_folder)
throw exceptions::folder_not_found();
@@ -387,13 +385,13 @@ void IMAPMessage::fetchPartHeader(part& p)
std::ostringstream oss;
utility::outputStreamAdapter ossAdapter(oss);
- extract(&p, ossAdapter, NULL, 0, -1, true, true);
+ extract(p, ossAdapter, NULL, 0, -1, true, true);
- static_cast <IMAPpart&>(p).getOrCreateHeader().parse(oss.str());
+ p.dynamicCast <IMAPpart>()->getOrCreateHeader().parse(oss.str());
}
-void IMAPMessage::extract(const part* p, utility::outputStream& os,
+void IMAPMessage::extract(ref <const part> p, utility::outputStream& os,
utility::progressionListener* progress, const int start,
const int length, const bool headerOnly, const bool peek) const
{
@@ -404,7 +402,7 @@ void IMAPMessage::extract(const part* p, utility::outputStream& os,
if (p != NULL)
{
- weak_ref <const IMAPpart> currentPart = static_cast <const IMAPpart*>(p);
+ weak_ref <const IMAPpart> currentPart = p.dynamicCast <const IMAPpart>();
std::vector <int> numbers;
numbers.push_back(currentPart->getNumber());
@@ -421,7 +419,7 @@ void IMAPMessage::extract(const part* p, utility::outputStream& os,
for (std::vector <int>::reverse_iterator it = numbers.rbegin() ; it != numbers.rend() ; ++it)
{
if (it != numbers.rbegin()) section << ".";
- section << *it;
+ section << (*it + 1);
}
}