void ASTBase::loadASTPlugins(const SBMLNamespaces * sbmlns) { if (sbmlns == NULL) { const std::vector<std::string>& names = SBMLExtensionRegistry::getAllRegisteredPackageNames(); unsigned int numPkgs = (unsigned int)names.size(); for (unsigned int i=0; i < numPkgs; i++) { const std::string& uri = names[i]; const SBMLExtension* sbmlext = SBMLExtensionRegistry::getInstance().getExtensionInternal(uri); if (sbmlext && sbmlext->isEnabled()) { //const std::string &prefix = xmlns->getPrefix(i); const ASTBasePlugin* astPlugin = sbmlext->getASTBasePlugin(); if (astPlugin != NULL) { ASTBasePlugin* myastPlugin = astPlugin->clone(); myastPlugin->setSBMLExtension(sbmlext); // myastPlugin->setPrefix(xmlns->getPrefix(i)); myastPlugin->connectToParent(this); mPlugins.push_back(myastPlugin); } } } } else { const XMLNamespaces *xmlns = sbmlns->getNamespaces(); if (xmlns) { int numxmlns= xmlns->getLength(); for (int i=0; i < numxmlns; i++) { const std::string &uri = xmlns->getURI(i); const SBMLExtension* sbmlext = SBMLExtensionRegistry::getInstance().getExtensionInternal(uri); if (sbmlext && sbmlext->isEnabled()) { const ASTBasePlugin* astPlugin = sbmlext->getASTBasePlugin(); if (astPlugin != NULL) { ASTBasePlugin* myastPlugin = astPlugin->clone(); myastPlugin->setSBMLExtension(sbmlext); myastPlugin->setPrefix(xmlns->getPrefix(i)); myastPlugin->connectToParent(this); mPlugins.push_back(myastPlugin); } } } } } }
void ASTBase::loadASTPlugins(SBMLNamespaces * sbmlns) { if (sbmlns == NULL) { unsigned int numPkgs = SBMLExtensionRegistry::getNumRegisteredPackages(); for (unsigned int i=0; i < numPkgs; i++) { const std::string &uri = SBMLExtensionRegistry::getRegisteredPackageName(i); const SBMLExtension* sbmlext = SBMLExtensionRegistry::getInstance().getExtensionInternal(uri); if (sbmlext && sbmlext->isEnabled()) { //const std::string &prefix = xmlns->getPrefix(i); ASTBasePlugin* astPlugin = const_cast<ASTBasePlugin*>(sbmlext->getASTBasePlugin()); if (astPlugin != NULL) { //// need to give the plugin infomrtaion about itself //astPlugin->setSBMLExtension(sbmlext); //astPlugin->connectToParent(this); mPlugins.push_back(astPlugin->clone()); } } } } else { XMLNamespaces *xmlns = sbmlns->getNamespaces(); if (xmlns) { int numxmlns= xmlns->getLength(); for (int i=0; i < numxmlns; i++) { const std::string &uri = xmlns->getURI(i); const SBMLExtension* sbmlext = SBMLExtensionRegistry::getInstance().getExtensionInternal(uri); if (sbmlext && sbmlext->isEnabled()) { ASTBasePlugin* astPlugin = const_cast<ASTBasePlugin*>(sbmlext->getASTBasePlugin()); if (astPlugin != NULL) { astPlugin->setSBMLExtension(sbmlext); astPlugin->setPrefix(xmlns->getPrefix(i)); astPlugin->connectToParent(this); mPlugins.push_back(astPlugin->clone()); } } } } } }
ASTBasePlugin* operator() (ASTBasePlugin* ast) { if (!ast) return 0; ASTBasePlugin * cl = ast->clone(); cl->connectToParent(NULL); return cl; }