本文整理汇总了C++中XmlDeserializer::read方法的典型用法代码示例。如果您正苦于以下问题:C++ XmlDeserializer::read方法的具体用法?C++ XmlDeserializer::read怎么用?C++ XmlDeserializer::read使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XmlDeserializer
的用法示例。
在下文中一共展示了XmlDeserializer::read方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: testComplexSTL
/**
* Tests serialization and deserialization of cascaded STL containers
* like @c std::vector or @c std::map.
*/
void testComplexSTL() {
std::map<int, std::string> m1, m2, m3;
m2[1] = "one";
m3[2] = "two";
m3[3] = "three";
std::vector<std::map<int, std::string> > v;
v.push_back(m1);
v.push_back(m2);
v.push_back(m3);
std::stringstream stream;
XmlSerializer s;
s.serialize("v", v);
s.write(stream);
// Reset all variables to default values...
v.clear();
test(v.size() == 0, "vector is not empty");
XmlDeserializer d;
d.read(stream);
d.deserialize("v", v);
test(v.size() == 3, "not all vector item deserialized");
test(v[0].size() == 0, "incorrect size of first vector item");
test(v[1].size() == 1, "incorrect size of second vector item");
test(v[2].size() == 2, "incorrect size of third vector item");
test(v[1][1] == "one", "first item of second vector item incorrect deserialized");
test(v[2][2] == "two", "first item of thrid vector item incorrect deserialized");
test(v[2][3] == "three", "second item of third vector item incorrect deserialized");
}
示例2: testMap
/**
* Tests serialization and deserialization of a @c std::map.
*/
void testMap() {
std::map<int, std::string> m;
m[1] = "one";
m[2] = "two";
m[3] = "three";
std::stringstream stream;
XmlSerializer s;
s.serialize("m", m);
s.write(stream);
// Reset all variables to default values...
m.clear();
test(m.size() == 0, "map is not empty");
XmlDeserializer d;
d.read(stream);
d.deserialize("m", m);
test(m.size() == 3, "not all map items deserialized");
test(m[1] == "one", "first pair incorrect deserialized");
test(m[2] == "two", "second pair incorrect deserialized");
test(m[3] == "three", "third pair incorrect deserialized");
}
示例3: deserializeSettings
bool deserializeSettings(PropertyOwner* po, const std::string& filename) {
std::ifstream stream;
stream.open(filename.c_str(), std::ios_base::in);
if(stream.fail()) {
stream.close();
return false;
}
else {
XmlDeserializer xmlDeserializer;
try {
xmlDeserializer.read(stream);
po->deserialize(xmlDeserializer);
stream.close();
}
catch (XmlSerializationNoSuchDataException) {
// no data present => ignore
xmlDeserializer.removeLastError();
return false;
}
catch (SerializationException &e) {
LWARNINGC("VoreenSettingsDialog", std::string("Deserialization failed: ") + e.what());
return false;
}
}
return true;
}
示例4: 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;
}
示例5: testTgtData
/**
* Tests serialization and deserialization of tgt types.
*/
void testTgtData() {
tgt::vec2 v2(1.0f, 2.0f);
tgt::vec3 v3(3.0f, 4.0f, 5.0f);
tgt::vec4 v4(6.0f, 7.0f, 8.0f, 9.0f);
tgt::ivec2 iv2(1, 2);
tgt::ivec3 iv3(3, 4, 5);
tgt::ivec4 iv4(6, 7, 8, 9);
std::stringstream stream;
XmlSerializer s;
s.serialize("v2", v2);
s.serialize("v3", v3);
s.serialize("v4", v4);
s.serialize("iv2", iv2);
s.serialize("iv3", iv3);
s.serialize("iv4", iv4);
s.write(stream);
// Reset all variables to default values...
v2 = tgt::vec2(0.0f, 0.0f);
v3 = tgt::vec3(0.0f, 0.0f, 0.0f);
v4 = tgt::vec4(0.0f, 0.0f, 0.0f, 0.0f);
iv2 = tgt::ivec2(0, 0);
iv3 = tgt::ivec3(0, 0, 0);
iv4 = tgt::ivec4(0, 0, 0, 0);
XmlDeserializer d;
d.read(stream);
d.deserialize("v2", v2);
d.deserialize("v3", v3);
d.deserialize("v4", v4);
d.deserialize("iv2", iv2);
d.deserialize("iv3", iv3);
d.deserialize("iv4", iv4);
test(v2.x, 1.0f, "v2.x incorrect deserialized");
test(v2.y, 2.0f, "v2.y incorrect deserialized");
test(v3.x, 3.0f, "v3.x incorrect deserialized");
test(v3.y, 4.0f, "v3.y incorrect deserialized");
test(v3.z, 5.0f, "v3.z incorrect deserialized");
test(v4.x, 6.0f, "v4.x incorrect deserialized");
test(v4.y, 7.0f, "v4.y incorrect deserialized");
test(v4.z, 8.0f, "v4.z incorrect deserialized");
test(v4.w, 9.0f, "v4.w incorrect deserialized");
test(iv2.x, 1, "iv2.x incorrect deserialized");
test(iv2.y, 2, "iv2.y incorrect deserialized");
test(iv3.x, 3, "iv3.x incorrect deserialized");
test(iv3.y, 4, "iv3.y incorrect deserialized");
test(iv3.z, 5, "iv3.z incorrect deserialized");
test(iv4.x, 6, "iv4.x incorrect deserialized");
test(iv4.y, 7, "iv4.y incorrect deserialized");
test(iv4.z, 8, "iv4.z incorrect deserialized");
test(iv4.w, 9, "iv4.w incorrect deserialized");
}
示例6: testUserDefinedData
/**
* Tests serialization and deserialization of user defined data classes which realizes
* the @c Serializable interface.
*/
void testUserDefinedData() {
UserDefinedData d;
d.data = 1;
UserDefinedData* dp = &d;
UserDefinedData* dp2 = new UserDefinedData();
dp2->data = 2;
UserDefinedDataContainer dc;
dc.data.data = 3;
dc.datap = &dc.data;
std::stringstream stream;
try {
XmlSerializer s;
s.serialize("d", d);
s.serialize("dp", dp);
s.serialize("dp2", dp2);
s.serialize("dc", dc);
s.write(stream);
delete dp2;
}
catch (...) {
delete dp2;
throw;
}
// Reset all variables to default values...
d.data = 0;
dp = 0;
dp2 = 0;
dc.data.data = 0;
dc.datap = 0;
XmlDeserializer de;
de.read(stream);
de.deserialize("d", d);
de.deserialize("dp", dp);
de.deserialize("dp2", dp2);
de.deserialize("dc", dc);
test(d.data, 1, "d incorrect deserialized");
test(dp != 0, "dp still null");
test(dp == &d, "dp does not point to d");
test(dp2 != 0, "dp2 still null");
test(dp2->data, 2, "dp2 incorrect deserialized");
delete dp2;
test(dc.data.data, 3, "dc incorrect deserialized");
test(dc.datap != 0, "dc.datap still null");
test(dc.datap == &dc.data, "dc.datap does not point to dc.data");
}
示例7: applyStateToProperty
void PropertyState::applyStateToProperty(Property* prop) const {
tgtAssert(prop->getOwner()->getName() == propertyOwner_, "Property owner's name is different");
tgtAssert(prop->getGuiName() == propertyName_, "Property's name is different");
tgtAssert(prop->getID() == propertyID_, "Property's ID is different");
XmlDeserializer d;
std::stringstream stream(propertyValue_);
d.read(stream);
prop->deserializeValue(d);
prop->invalidate();
}
示例8: testNoSuchDataException
/**
* Tests that deserialization of not serialized data attempt
* leads to an @c XmlSerializationNoSuchDataException.
*/
void testNoSuchDataException() {
std::stringstream stream;
XmlSerializer s;
s.write(stream);
XmlDeserializer d;
d.read(stream);
int i;
try {
d.deserialize("NotExistentKey", i);
test(false, "No exception on deserialization of not existent key");
}
catch (XmlSerializationNoSuchDataException&) {
}
}
示例9: testCycle
/**
* Tests serialization and deserialization of graph with a cycle.
*/
void testCycle() {
Node node1;
Node node2;
Node node3;
node1.successor = &node2;
node2.successor = &node3;
node3.successor = &node1;
node1.predecessor = &node3;
node2.predecessor = &node1;
node3.predecessor = &node2;
std::stringstream stream;
XmlSerializer s;
s.serialize("tree", node1);
s.write(stream);
// ATTENTION: Since every successor and predecessor is deserialized as a pointer reference,
// therefore new memory is allocated for node2 and node3. This means that you
// cannot check pointer addresses to these objects. But, you can check whether
// an equivalent data tree is deserialized.
// Reset all variables to default values...
node1.successor = 0;
node1.predecessor = 0;
XmlDeserializer d;
d.read(stream);
d.deserialize("tree", node1);
test(node1.successor != 0, "node1.successor still null");
test(node1.predecessor != 0, "node1.predecessor still null");
Node* pnode1 = &node1;
Node* pnode2 = node1.successor;
Node* pnode3 = node1.predecessor;
test(pnode2->predecessor == pnode1, "node1 is not the predecessor of node2");
test(pnode2->successor == pnode3, "node3 is not the successor of node2");
test(pnode3->predecessor == pnode2, "node2 is not the predecessor of node3");
test(pnode3->successor == pnode1, "node1 is not the successor of node3");
delete pnode2;
delete pnode3;
}
示例10: loadFromFile
DicomDict* DicomDict::loadFromFile(const std::string &fileName) throw (tgt::FileException) {
//Check the given file
if (!(tgt::FileSystem::fileExists(fileName)))
throw tgt::FileNotFoundException("Dictionary not found", fileName);
if (!(tgt::FileSystem::fileExtension(fileName) == "xml"))
throw tgt::FileAccessException("Dictionary is not an XML file", fileName);
//get Data from the file
std::string xmlData;
tgt::FileSystem sys;
tgt::File* file = sys.open(fileName);
if (!file->good())
throw tgt::FileAccessException("Dictionary file cannot be accessed", fileName);
xmlData = file->getAsString();
if (file->isOpen())
file->close();
delete file;
file = 0;
DicomDict* dict = new DicomDict();
//Put Data into a Stream to be read by XmlDeserializer and try to deserialize it
std::stringstream stream;
stream << xmlData;
XmlDeserializer d;
d.read(stream);
try {
dict->deserialize(d);
}
catch (tgt::Exception e) {
throw tgt::FileAccessException("Could not load Dictionary: " + std::string(e.what()),fileName);
}
return dict;
}
示例11: clone
Processor* Processor::clone() const {
try {
std::stringstream stream;
// first serialize
XmlSerializer s;
s.serialize("this", this);
s.write(stream);
// then deserialize again
XmlDeserializer d;
d.read(stream);
Processor* proc = 0;
d.deserialize("this", proc);
proc->setDescriptions();
return proc;
}
catch (std::exception& e) {
LERROR("Failed to clone processor '" << getID() << "': " << e.what());
return 0;
}
}
示例12: testMemoryAllocationException
/**
* Tests that direct deseralization of a pointer to an abstract class leads to
* a @c XMLSerializationMemoryAllocationException.
*/
void testMemoryAllocationException() {
Abstract* a = new Specific();
std::stringstream stream;
XmlSerializer s;
s.serialize("Abstract", a);
s.write(stream);
// Reset all variables to default values...
delete a;
a = 0;
XmlDeserializer d;
d.read(stream);
try {
d.deserialize("Abstract", a);
delete a;
test(false, "No exception raised on abstract class memory allocation try");
}
catch (XmlSerializationMemoryAllocationException&) {
}
}
示例13: testSet
/**
* Tests serialization and deserialization of a @c std::set.
*/
void testSet() {
const int SETELEMENTCOUNT = 5;
std::set<int> set;
for (int i = 0; i < SETELEMENTCOUNT; ++i)
set.insert(i);
std::stringstream stream;
XmlSerializer s;
s.serialize("set", set);
s.write(stream);
// Reset all variables to default values...
set.clear();
test(set.size() == 0, "set is not empty");
XmlDeserializer d;
d.read(stream);
d.deserialize("set", set);
test((int)set.size() == SETELEMENTCOUNT, "not all set items deserialized");
bool deserializedValues[SETELEMENTCOUNT];
for (int i = 0; i < SETELEMENTCOUNT; ++i)
deserializedValues[i] = false;
for (std::set<int>::iterator it = set.begin(); it != set.end(); ++it)
if (*it >= 0 && *it < SETELEMENTCOUNT)
deserializedValues[*it] = true;
for (int i = 0; i < SETELEMENTCOUNT; ++i) {
std::stringstream itemStream;
itemStream << i;
test(deserializedValues[i], "int item '" + itemStream.str() + "' not deserialized");
}
}
示例14: testPtrVarOrder
/**
* Helper function which test serialization and deserialization of a variable and pointer
* with different serialization and deserialization order.
*/
void testPtrVarOrder(const bool& varFirstAtSerialization, const bool& varFirstAtDeserialization) {
int i = 1;
int* ip = &i;
std::stringstream stream;
XmlSerializer s;
if (varFirstAtSerialization) {
s.serialize("i", i);
s.serialize("ip", ip);
}
else {
s.serialize("ip", ip);
s.serialize("i", i);
}
s.write(stream);
// Reset all variables to default values...
i = 0;
ip = 0;
XmlDeserializer d;
d.read(stream);
if (varFirstAtDeserialization) {
d.deserialize("i", i);
d.deserialize("ip", ip);
}
else {
d.deserialize("ip", ip);
d.deserialize("i", i);
}
test(i, 1, "i incorrect deserialized");
test(ip != 0, "ip still null");
test(ip == &i, "ip does not point to i");
}
示例15: 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");
}
}