summaryrefslogtreecommitdiffstats
path: root/libmail/expungelist.H
diff options
context:
space:
mode:
Diffstat (limited to 'libmail/expungelist.H')
-rw-r--r--libmail/expungelist.H42
1 files changed, 42 insertions, 0 deletions
diff --git a/libmail/expungelist.H b/libmail/expungelist.H
new file mode 100644
index 0000000..5c629d3
--- /dev/null
+++ b/libmail/expungelist.H
@@ -0,0 +1,42 @@
+/*
+** Copyright 2003, Double Precision Inc.
+**
+** See COPYING for distribution information.
+*/
+#ifndef libmail_expungelist_H
+#define libmail_expungelist_H
+
+#include "mail.H"
+#include "namespace.H"
+
+#include <list>
+#include <vector>
+
+LIBMAIL_START
+
+//
+// Helper class: prepare a list of removed message ranges for
+// mail::callback::folder::messagesRemoved. Iterating over a list of
+// removed messages, IN REVERSE ORDER, this class builds a list of start-end
+// ranges, which are then converted to an array.
+
+class expungeList {
+ std::list< std::pair<size_t, size_t> > list;
+
+public:
+ typedef std::list< std::pair<size_t, size_t> >::iterator iterator;
+
+ expungeList();
+ ~expungeList();
+
+ void operator<<(size_t); // Iterate in REVERSE ORDER
+
+ void operator>>(mail::callback::folder *cb);
+
+ iterator begin() { return list.begin(); }
+ iterator end() { return list.end(); }
+};
+
+LIBMAIL_END
+
+#endif