本文整理汇总了C++中XmlDeserializer::raise方法的典型用法代码示例。如果您正苦于以下问题:C++ XmlDeserializer::raise方法的具体用法?C++ XmlDeserializer::raise怎么用?C++ XmlDeserializer::raise使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XmlDeserializer
的用法示例。
在下文中一共展示了XmlDeserializer::raise方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: deserialize
void PropertyLink::deserialize(XmlDeserializer& s) {
// Deserialize source property reference...
s.deserialize("SourceProperty", src_);
// Deserialize destination property reference...
s.deserialize("DestinationProperty", dest_);
// Was either the source or the destination property not deserialized?
if (!src_ || !dest_) {
std::string addOn;
if (!src_ && !dest_) {
addOn = "No source and destination.";
}
else if (src_) {
addOn = "Link source: '";
if (src_->getOwner())
addOn += src_->getOwner()->getID() + "::";
addOn += src_->getGuiName() + "'";
}
else if (dest_) {
addOn = "Link dest: '";
if (dest_->getOwner())
addOn += dest_->getOwner()->getID() + "::";
addOn += dest_->getGuiName() + "'";
}
s.raise(XmlSerializationMemoryAllocationException("Property link could not be established. " + addOn));
}
src_->registerLink(this);
// Deserialize link evaluator...
s.deserialize("Evaluator", evaluator_);
if (dest_->getLink(src_) && dest_->getLink(src_)->getLinkEvaluator() == evaluator_) {
// this should never happen, but if it does, replace evaluator with fresh instance
LWARNING("deserialize(): link has been assigned the same evaluator as its reverse link: "
<< "src=" << src_->getFullyQualifiedID() << ", dest=" << dest_->getFullyQualifiedID());
evaluator_ = dynamic_cast<LinkEvaluatorBase*>(evaluator_->create());
if (evaluator_) {
LERROR(evaluator_->getClassName() << "::create() " << " did not return a LinkEvaluatorBase");
delete evaluator_;
evaluator_ = 0;
}
}
if (evaluator_) {
// auto-convert old LinkEvaluatorId:
if (evaluator_->getClassName() == "LinkEvaluatorId") {
std::vector<std::pair<std::string, std::string> > availableFunctions = LinkEvaluatorHelper::getCompatibleLinkEvaluators(src_, dest_);
std::string evalType = "";
for(std::vector<std::pair<std::string, std::string> >::iterator i=availableFunctions.begin(); i!=availableFunctions.end(); i++) {
if(i->second == "id")
evalType = i->first;
}
if(!evalType.empty()) {
//delete evaluator_;
evaluator_ = LinkEvaluatorHelper::createEvaluator(evalType);
LINFO("Replaced deprecated link evaluator with " << evaluator_->getClassName());
}
else {
LERROR("Could not find and alternative for old LinkEvaluatorId between " << src_->getTypeDescription() << " and " << dest_->getTypeDescription());
}
}
// --------------------------------
// auto-convert old LinkEvaluatorIdNormalized:
if (evaluator_->getClassName() == "LinkEvaluatorIdNormalized") {
std::vector<std::pair<std::string, std::string> > availableFunctions = LinkEvaluatorHelper::getCompatibleLinkEvaluators(src_, dest_);
std::string evalType = "";
for(std::vector<std::pair<std::string, std::string> >::iterator i=availableFunctions.begin(); i!=availableFunctions.end(); i++) {
if(i->second == "id normalized")
evalType = i->first;
}
if(!evalType.empty()) {
//delete evaluator_;
evaluator_ = LinkEvaluatorHelper::createEvaluator(evalType);
LINFO("Replaced deprecated link evaluator with " << evaluator_->getClassName());
}
else {
LERROR("Could not find and alternative for old LinkEvaluatorIdNormalized between " << src_->getTypeDescription() << " and " << dest_->getTypeDescription());
}
}
evaluator_->propertiesChanged(src_, dest_);
}
}