00001 #ifndef QPID_MESSAGING_MAPCONTENT_H
00002 #define QPID_MESSAGING_MAPCONTENT_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "qpid/client/ClientImportExport.h"
00026 #include "Variant.h"
00027 #include <map>
00028 #include <string>
00029
00030 namespace qpid {
00031 namespace messaging {
00032
00033 class MapContentImpl;
00034 class Message;
00035
00039 class MapContent
00040 {
00041 public:
00042 typedef std::string key_type;
00043 typedef std::pair<std::string, Variant> value_type;
00044 typedef std::map<key_type, Variant>::const_iterator const_iterator;
00045 typedef std::map<key_type, Variant>::iterator iterator;
00046 typedef std::map<key_type, Variant>::const_reverse_iterator const_reverse_iterator;
00047 typedef std::map<key_type, Variant>::reverse_iterator reverse_iterator;
00048
00049 QPID_CLIENT_EXTERN MapContent(Message&);
00050 QPID_CLIENT_EXTERN ~MapContent();
00051
00052 QPID_CLIENT_EXTERN const_iterator begin() const;
00053 QPID_CLIENT_EXTERN const_iterator end() const;
00054 QPID_CLIENT_EXTERN const_reverse_iterator rbegin() const;
00055 QPID_CLIENT_EXTERN const_reverse_iterator rend() const;
00056 QPID_CLIENT_EXTERN iterator begin();
00057 QPID_CLIENT_EXTERN iterator end();
00058 QPID_CLIENT_EXTERN reverse_iterator rbegin();
00059 QPID_CLIENT_EXTERN reverse_iterator rend();
00060
00061 QPID_CLIENT_EXTERN bool empty() const;
00062 QPID_CLIENT_EXTERN size_t size() const;
00063
00064 QPID_CLIENT_EXTERN const_iterator find(const key_type&) const;
00065 QPID_CLIENT_EXTERN iterator find(const key_type&);
00066 QPID_CLIENT_EXTERN const Variant& operator[](const key_type&) const;
00067 QPID_CLIENT_EXTERN Variant& operator[](const key_type&);
00068
00069 QPID_CLIENT_EXTERN std::pair<iterator,bool> insert(const value_type&);
00070 QPID_CLIENT_EXTERN iterator insert(iterator position, const value_type&);
00071 QPID_CLIENT_EXTERN void erase(iterator position);
00072 QPID_CLIENT_EXTERN void erase(iterator first, iterator last);
00073 QPID_CLIENT_EXTERN size_t erase(const key_type&);
00074 QPID_CLIENT_EXTERN void clear();
00075
00076 QPID_CLIENT_EXTERN void encode();
00077
00078 QPID_CLIENT_EXTERN const std::map<key_type, Variant>& asMap() const;
00079 QPID_CLIENT_EXTERN std::map<key_type, Variant>& asMap();
00080 private:
00081 MapContentImpl* impl;
00082
00083 QPID_CLIENT_EXTERN MapContent& operator=(const MapContent&);
00084 };
00085
00086 QPID_CLIENT_EXTERN std::ostream& operator<<(std::ostream& out, const MapContent& m);
00087
00088 }}
00089
00090 #endif