From ba17b014386a4b4fdf12714d8230e1a6a7a40dd9 Mon Sep 17 00:00:00 2001 From: cxl Date: Mon, 20 Oct 2008 18:56:22 +0000 Subject: [PATCH] reference: Xmlize_std git-svn-id: svn://ultimatepp.org/upp/trunk@553 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- reference/Xmlize_std/Xmlize.cpp | 33 +++++++++++++++++++++++++++++ reference/Xmlize_std/Xmlize_std.upp | 11 ++++++++++ 2 files changed, 44 insertions(+) create mode 100644 reference/Xmlize_std/Xmlize.cpp create mode 100644 reference/Xmlize_std/Xmlize_std.upp 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 + "" = ""; +