diff --git a/reference/Xmlize_std/Xmlize.cpp b/reference/Xmlize_std/Xmlize.cpp new file mode 100644 index 000000000..14ee11987 --- /dev/null +++ b/reference/Xmlize_std/Xmlize.cpp @@ -0,0 +1,33 @@ +#include +#include + +using namespace Upp; +using namespace std; + +template<> void Upp::Xmlize(XmlIO xml, vector& data) { + if(xml.IsStoring()) + for(int i = 0; i < (int)data.size(); i++) + Xmlize(xml.Add("item"), data[i]); + else { + data.clear(); + for(int i = 0; i < xml->GetCount(); i++) + if(xml->Node(i).IsTag("item")) { + data.push_back(0); + Xmlize(xml.At(i), data.back()); + } + } +} + +CONSOLE_APP_MAIN +{ + vector x; + x.push_back(1); + x.push_back(2); + x.push_back(3); + String s = StoreAsXML(x, "std-test"); + DUMP(s); + vector y; + LoadFromXML(y, s); + for(int i = 0; i < (int)y.size(); i++) + DUMP(y[i]); +} diff --git a/reference/Xmlize_std/Xmlize_std.upp b/reference/Xmlize_std/Xmlize_std.upp new file mode 100644 index 000000000..14822d236 --- /dev/null +++ b/reference/Xmlize_std/Xmlize_std.upp @@ -0,0 +1,11 @@ +description "Xmlize with existing type, in this case std::vector"; + +uses + Core; + +file + Xmlize.cpp; + +mainconfig + "" = ""; +