fix serialization for properties unintrusive
This commit is contained in:
@@ -40,7 +40,7 @@ struct A : Object {
|
||||
};
|
||||
|
||||
ULIB_SERIALIZABLE_OBJECT(A)
|
||||
ULIB_SERIALIZE_OBJECT(A, Object) { ar &AR(numa); }
|
||||
ULIB_SERIALIZE_OBJECT(A, Object) { ar & AR(numa); }
|
||||
|
||||
struct B : virtual Object {
|
||||
uLibTypeMacro(B, Object) B() : numb(5552369) {}
|
||||
@@ -48,7 +48,7 @@ struct B : virtual Object {
|
||||
};
|
||||
|
||||
ULIB_SERIALIZABLE_OBJECT(B)
|
||||
ULIB_SERIALIZE_OBJECT(B, Object) { ar &AR(numb); }
|
||||
ULIB_SERIALIZE_OBJECT(B, Object) { ar & AR(numb); }
|
||||
|
||||
struct C : B {
|
||||
uLibTypeMacro(C, B) C() : numc(5552370) {}
|
||||
@@ -56,7 +56,7 @@ struct C : B {
|
||||
};
|
||||
|
||||
ULIB_SERIALIZABLE_OBJECT(C)
|
||||
ULIB_SERIALIZE_OBJECT(C, B) { ar &AR(numc); }
|
||||
ULIB_SERIALIZE_OBJECT(C, B) { ar & AR(numc); }
|
||||
|
||||
struct D : A, B {
|
||||
uLibTypeMacro(D, A, B)
|
||||
@@ -67,10 +67,33 @@ struct D : A, B {
|
||||
};
|
||||
|
||||
ULIB_SERIALIZABLE_OBJECT(D)
|
||||
ULIB_SERIALIZE_OBJECT(D, A, B) { ar &AR(numd); }
|
||||
ULIB_SERIALIZE_OBJECT(D, A, B) { ar & AR(numd); }
|
||||
|
||||
int main() {
|
||||
A o;
|
||||
|
||||
Archive::xml_oarchive(std::cout) << NVP(o);
|
||||
BEGIN_TESTING(DreadDiamond Serialization)
|
||||
|
||||
D o;
|
||||
C c;
|
||||
c.numb = 123;
|
||||
{
|
||||
std::ofstream file("test.xml");
|
||||
Archive::xml_oarchive(file) << NVP("dd_test", o) << NVP("c", c);
|
||||
}
|
||||
{
|
||||
D o2;
|
||||
C c2;
|
||||
std::ifstream file("test.xml");
|
||||
Archive::xml_iarchive(file) >> NVP("dd_test", o2) >> NVP("c", c2);
|
||||
|
||||
// D //
|
||||
ASSERT_EQUAL(o.numa, o2.numa);
|
||||
ASSERT_EQUAL(o.numb, o2.numb);
|
||||
ASSERT_EQUAL(o.numd, o2.numd);
|
||||
|
||||
// C //
|
||||
ASSERT_EQUAL(c.numb, c2.numb);
|
||||
ASSERT_EQUAL(c.numc, c2.numc);
|
||||
}
|
||||
|
||||
END_TESTING
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user