diff --git a/uppsrc/Core/Xmlize.h b/uppsrc/Core/Xmlize.h index 369d46894..ef92d6daf 100644 --- a/uppsrc/Core/Xmlize.h +++ b/uppsrc/Core/Xmlize.h @@ -30,6 +30,7 @@ public: void SetAttr(const char *id, const String& val) { node.SetAttr(id, val); } template XmlIO operator()(const char *tag, T& var); + template XmlIO operator()(const char *tag, const char *itemtag, T& var); template XmlIO Attr(const char *id, T& var) { if(IsLoading()) @@ -70,12 +71,24 @@ void Xmlize(XmlIO xml, T& var) var.Xmlize(xml); } +template +void Xmlize(XmlIO xml, const char* itemtag, T& var) +{ + var.Xmlize(xml); +} + template XmlIO XmlIO::operator()(const char *tag, T& var) { XmlIO n(*this, tag); Xmlize(n, var); return *this; } +template XmlIO XmlIO::operator()(const char *tag, const char *itemtag, T& var) { + XmlIO n(*this, tag); + Xmlize(n, itemtag, var); + return *this; +} + template<> inline void XmlAttrLoad(String& var, const String& text) { var = text; } template<> inline String XmlAttrStore(const String& var) { return var; } @@ -157,12 +170,24 @@ void Xmlize(XmlIO xml, Vector& data) XmlizeContainer(xml, "item", data); } +template +void Xmlize(XmlIO xml, const char* itemtag, Vector& data) +{ + XmlizeContainer(xml, itemtag, data); +} + template void Xmlize(XmlIO xml, Array& data) { XmlizeContainer(xml, "item", data); } +template +void Xmlize(XmlIO xml, const char* itemtag, Array& data) +{ + XmlizeContainer(xml, itemtag, data); +} + template void XmlizeStore(XmlIO xml, const T& data) {