ultimatepp/tutorial/CoreTutorial/Serialize.cpp
cxl 08d5d416e0 .tutorial
git-svn-id: svn://ultimatepp.org/upp/trunk@11482 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2017-11-19 16:44:22 +00:00

77 lines
No EOL
1.1 KiB
C++

#include "Tutorial.h"
void Serialize()
{
/// .Binary serialization
StringStream ss;
int x = 123;
Color h = White();
ss % x % h;
StringStream ss2(ss.GetResult());
int x2;
Color h2;
ss2 % x2 % h2;
DUMP(x2);
DUMP(h2);
///
ss2.Seek(0);
ss2.LoadThrowing();
try {
ss2 % x2 % h2 % x2;
}
catch(LoadingError) {
LOG("Deserialization has failed");
}
///
struct MyFoo {
int number;
Color color;
void Serialize(Stream& s) {
int version = 0;
s / version; // allow backward compatibility in the future
s % number % color;
}
};
MyFoo foo;
foo.number = 321;
foo.color = Blue();
String data = StoreAsString(foo);
MyFoo foo2;
LoadFromString(foo2, data);
DUMP(foo2.number);
DUMP(foo2.color);
///
struct MyFoo2 {
int number;
Color color;
String text;
void Serialize(Stream& s) {
int version = 1;
s / version;
s % number % color;
if(version >= 1)
s % text;
}
};
MyFoo2 foo3;
LoadFromString(foo3, h);
DUMP(foo3.number);
DUMP(foo3.color);
}