summaryrefslogtreecommitdiffstats
path: root/src/Common/XmlPacket.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Common/XmlPacket.h')
-rw-r--r--src/Common/XmlPacket.h38
1 files changed, 35 insertions, 3 deletions
diff --git a/src/Common/XmlPacket.h b/src/Common/XmlPacket.h
index 007404a..e80a266 100644
--- a/src/Common/XmlPacket.h
+++ b/src/Common/XmlPacket.h
@@ -122,6 +122,10 @@ class XmlPacket {
return 0;
}
+ bool isEmpty() const {
+ return (getSize() == 0);
+ }
+
virtual Entry& operator[](size_t) {
return nilEntry;
}
@@ -130,12 +134,26 @@ class XmlPacket {
return nilEntry;
}
+ Entry& back() {
+ if(isEmpty())
+ return nilEntry;
+
+ return operator[](getSize()-1);
+ }
+
+ const Entry& back() const {
+ if(isEmpty())
+ return nilEntry;
+
+ return operator[](getSize()-1);
+ }
+
virtual bool insertEntry(size_t) {return false;}
virtual bool addEntry() {return false;}
virtual bool removeEntry(size_t) {return false;}
template<typename T>
- operator T() {
+ operator T() const {
switch(type) {
case INT:
return static_cast<T>(value.var_int);
@@ -156,7 +174,7 @@ class XmlPacket {
}
}
- operator std::string() {
+ operator std::string() const {
return str;
}
@@ -258,6 +276,20 @@ class XmlPacket {
return add(name, buf.str(), "uint");
}
+ bool add(const std::string &name, long val) {
+ std::ostringstream buf;
+ buf << val;
+
+ return add(name, buf.str(), "int");
+ }
+
+ bool add(const std::string &name, unsigned long val) {
+ std::ostringstream buf;
+ buf << val;
+
+ return add(name, buf.str(), "uint");
+ }
+
bool add(const std::string &name, long long val) {
std::ostringstream buf;
buf << val;
@@ -428,7 +460,7 @@ class XmlPacket {
return entry->remove(name);
}
- Net::Packet encode(uint16_t requestId);
+ Net::Packet encode(uint16_t requestId) const;
};
}