version 0.1.14
[fms.git] / include / freenet / messagelistxml.h
1 #ifndef _messagelistxml_\r
2 #define _messagelistxml_\r
3 \r
4 #include "../ifmsxmldocument.h"\r
5 \r
6 #include <vector>\r
7 \r
8 class MessageListXML:public IFMSXMLDocument\r
9 {\r
10 private:\r
11         struct message\r
12         {\r
13                 message(const std::string &date, const long index, const std::vector<std::string> &boards):m_date(date),m_index(index),m_boards(boards) {}\r
14                 std::string m_date;\r
15                 long m_index;\r
16                 std::vector<std::string> m_boards;\r
17         };\r
18         struct externalmessage\r
19         {\r
20                 externalmessage(const std::string &type, const std::string identity, const std::string &date, const long index, const std::vector<std::string> &boards):m_type(type),m_identity(identity),m_date(date),m_index(index),m_boards(boards)  {}\r
21                 externalmessage(const std::string &type, const std::string messagekey, const std::string &date, const std::vector<std::string> &boards):m_type(type),m_messagekey(messagekey),m_date(date),m_boards(boards)                                                             {}\r
22                 std::string m_type;\r
23                 std::string m_identity;\r
24                 std::string m_messagekey;\r
25                 long m_index;\r
26                 std::string m_date;\r
27                 std::vector<std::string> m_boards;\r
28         };\r
29 public:\r
30         MessageListXML();\r
31 \r
32         std::string GetXML();\r
33         const bool ParseXML(const std::string &xml);\r
34 \r
35         void ClearMessages()    { m_messages.clear(); }\r
36 \r
37         void AddMessage(const std::string &date, const long index, const std::vector<std::string> &boards);\r
38         void AddExternalMessage(const std::string &identity, const std::string &date, const long index, const std::vector<std::string> &boards);\r
39         void AddExternalMessage(const std::string &messagekey, const std::string &date, const std::vector<std::string> &boards);\r
40 \r
41         const std::vector<message>::size_type MessageCount()    { return m_messages.size(); }\r
42         std::string GetDate(const long index);\r
43         const long GetIndex(const long index);\r
44         std::vector<std::string> GetBoards(const long index);\r
45 \r
46         const std::vector<externalmessage>::size_type ExternalMessageCount()    { return m_externalmessages.size(); }\r
47         std::string GetExternalType(const long index);\r
48         std::string GetExternalIdentity(const long index);\r
49         std::string GetExternalMessageKey(const long index);\r
50         const long GetExternalIndex(const long index);\r
51         std::string GetExternalDate(const long index);\r
52         std::vector<std::string> GetExternalBoards(const long index);\r
53 \r
54 private:\r
55         void Initialize();\r
56 \r
57         std::vector<message> m_messages;\r
58         std::vector<externalmessage> m_externalmessages;\r
59 \r
60 };\r
61 \r
62 #endif  // _messagelistxml_\r