/** @cond doxygenLibsbmlInternal */ void CompFlatteningConverter::analyseDocument() { XMLNamespaces * ns = mDocument->getSBMLNamespaces()->getNamespaces(); bool required = true; bool known = true; bool flattenable = true; for (int i = 0; i < ns->getNumNamespaces(); i++) { std::string package = ns->getPrefix(i); std::string uri = ns->getURI(i); // exclude the code namespace if (uri == SBMLNamespaces::getSBMLNamespaceURI(mDocument->getLevel(), mDocument->getVersion())) { continue; } // required flag if (mDocument->getPackageRequired(uri) == true) { required= true; } else { required = false; } // known status if (mDocument->isPkgURIEnabled(uri) == true) { known = true; // flattenable status if (static_cast<SBMLDocumentPlugin*> (mDocument->getPlugin(uri))->isCompFlatteningImplemented() == true) { flattenable = true; } else { flattenable = false; } } else { // if we dont know it we ceratinly cannot flatten it ! known = false; flattenable = false; } // add the values into the map ValueSet values; values.push_back(required); values.push_back(known); values.push_back(flattenable); mPackageValues.insert(pair<const std::string, ValueSet>(package, values)); } }