本文整理汇总了C++中XmlSerializer::registerFactory方法的典型用法代码示例。如果您正苦于以下问题:C++ XmlSerializer::registerFactory方法的具体用法?C++ XmlSerializer::registerFactory怎么用?C++ XmlSerializer::registerFactory使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XmlSerializer
的用法示例。
在下文中一共展示了XmlSerializer::registerFactory方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: testIAbstractSerializable
/**
* Tests serialization and deserialization of pointers to abstract classes.
*/
void testIAbstractSerializable() {
Abstract* a = new Specific();
dynamic_cast<Specific*>(a)->i = 1;
std::stringstream stream;
AbstractFactory factory;
XmlSerializer s;
s.registerFactory(&factory);
s.serialize("Abstract", a);
s.write(stream);
// Reset all variables to default values...
delete a;
a = 0;
XmlDeserializer d;
d.registerFactory(&factory);
d.read(stream);
d.deserialize("Abstract", a);
test(a != 0, "a still null");
Specific* specific = dynamic_cast<Specific*>(a);
test(specific != 0, "cast to Specific* not possible");
test(specific->i, 1, "a incorrect deserialized");
delete a;
}
示例2: testBugAbstractSerializableNullPointerSerialization
/**
* Tests serialization and deserialization of @c AbstractSerializable null pointers.
*/
void testBugAbstractSerializableNullPointerSerialization() {
Abstract* a = 0;
std::stringstream stream;
AbstractFactory factory;
XmlSerializer s;
s.setUseAttributes(true);
s.registerFactory(&factory);
s.serialize("Abstract", a);
s.write(stream);
XmlDeserializer d;
d.setUseAttributes(true);
d.registerFactory(&factory);
d.read(stream);
try {
d.deserialize("Abstract", a);
}
catch (XmlSerializationMemoryAllocationException&) {
test(false, "bug occured, since memory allocation exception is thrown for 0 pointer");
}
}
示例3: testPolymorphism
/**
* Tests serialization and deserialization of polymorphic classes.
*/
void testPolymorphism() {
Parent p;
p.pdata = 1;
Child c;
c.pdata = 2;
c.cdata = 3;
Parent* pp = &p;
Parent* pc = &c;
Parent* child1 = new Child();
child1->pdata = 4;
dynamic_cast<Child*>(child1)->cdata = 5;
Child* child2 = new Child();
child2->pdata = 6;
child2->cdata = 7;
Factory factory;
std::stringstream stream;
try {
XmlSerializer s;
s.registerFactory(&factory);
s.serialize("p", p);
s.serialize("c", c);
s.serialize("pp", pp);
s.serialize("pc", pc);
s.serialize("child1", child1);
s.serialize("child2", child2);
s.write(stream);
delete child1;
delete child2;
}
catch (...) {
delete child1;
delete child2;
throw;
}
// Reset all variables to default values...
p.pdata = 0;
c.pdata = 0;
c.cdata = 0;
pp = 0;
pc = 0;
child1 = 0;
child2 = 0;
XmlDeserializer d;
d.registerFactory(&factory);
d.read(stream);
d.deserialize("p", p);
d.deserialize("c", c);
d.deserialize("pp", pp);
d.deserialize("pc", pc);
d.deserialize("child1", child1);
d.deserialize("child2", child2);
test(p.pdata, 1, "p.pdata incorrect deserialized");
test(c.pdata, 2, "c.pdata incorrect deserialized");
test(c.cdata, 3, "c.cdata incorrect deserialized");
test(pp != 0, "pp still null");
test(pp == &p, "pp does not point to p");
test(pc != 0, "pc still null");
test(pc == &c, "pc does not point to c");
test(child1 != 0, "child1 still null");
test(child1->pdata, 4, "child1.pdata incorrect deserialized");
test(dynamic_cast<Child*>(child1) != 0, "child1 deserialized without using correct polymorphic type");
test(dynamic_cast<Child*>(child1)->cdata, 5, "child2.cdata incorrect deserialized");
test(child2 != 0, "child2 still null");
test(child2->pdata, 6, "child2.pdata incorrect deserialized");
test(child2->cdata, 7, "child2.cdata incorrect deserialized");
delete child1;
delete child2;
}