本文整理汇总了C++中XMLNamespaces::containsUri方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLNamespaces::containsUri方法的具体用法?C++ XMLNamespaces::containsUri怎么用?C++ XMLNamespaces::containsUri使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLNamespaces
的用法示例。
在下文中一共展示了XMLNamespaces::containsUri方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: EnablePackageOnParentDocument
// simple callback enabling packages on main doc
int EnablePackageOnParentDocument(Model* m, SBMLErrorLog *, void* userdata)
{
if (m == NULL) return LIBSBML_OPERATION_FAILED;
// pull information out of userdata
disable_info * info = static_cast<disable_info*>(userdata);
SBMLDocument *mainDoc = static_cast<SBMLDocument*>(info->doc);
std::set<std::pair<std::string, std::string> > disabled =
static_cast<std::set <std::pair <std::string, std::string> > >(info->disabledPkgs);
if (mainDoc == NULL) return LIBSBML_OPERATION_FAILED;
XMLNamespaces *mainNS = mainDoc->getSBMLNamespaces()->getNamespaces();
XMLNamespaces *ns = m->getSBMLNamespaces()->getNamespaces();
for (int i = 0; i < ns->getLength(); i++)
{
std::string nsURI = ns->getURI(i);
std::string prefix = ns->getPrefix(i);
if (prefix.empty() == true)
{
continue;
}
else if (mainNS->containsUri(nsURI) == false)
{
bool alreadyDisabled = false;
for (set<pair<string, string> >::iterator pkg = disabled.begin();
pkg != disabled.end(); pkg++)
{
if ((*pkg).first == nsURI)
{
alreadyDisabled = true;
break;
}
}
// just in case
if (m->getSBMLDocument() == NULL)
{
continue;
}
if (m->isPackageEnabled(prefix) == true)
{
mainNS->add(nsURI, prefix);
mainDoc->enablePackage(nsURI, prefix, true);
mainDoc->setPackageRequired(prefix,
m->getSBMLDocument()->getPackageRequired(prefix));
// we also need to make sure that if m was a modelDefinition
// that we enable the package on its parent model
Model * parent = dynamic_cast<Model*>(m->getAncestorOfType(SBML_MODEL));
if (parent != NULL)
{
parent->enablePackageInternal(nsURI, prefix, true);
}
}
else if (m->getSBMLDocument()->hasUnknownPackage(nsURI) == true)
{
// here we are dealing with an unknown package
// need to decide whether to add the ns or not
bool addNS = true;
// if it was listed to be stripped do not add
if (info->strippedPkgs.contains(prefix) == true)
{
addNS = false;
}
// if it has already been disabled do not add
else if (alreadyDisabled == true)
{
addNS = false;
}
// if it is an unflattenable package and flags dicatate do not add
else if (info->stripUnflattenable == true)
{
if (info->abortForRequiredOnly == false)
{
addNS = false;
}
else if (m->getSBMLDocument()->getPackageRequired(nsURI) == true)
{
addNS = false;
}
}
if (addNS == true)
{
// we have an unknown package so we cannot enable it
// but we do tell the parent doc about it
mainNS->add(nsURI, prefix);
mainDoc->addUnknownPackageRequired(nsURI, prefix,
m->getSBMLDocument()->getPackageRequired(nsURI));
}
}
}
}
return LIBSBML_OPERATION_SUCCESS;
//.........这里部分代码省略.........