void Teuchos::updateParametersFromXmlFileAndBroadcast( const std::string &xmlFileName, const Ptr<ParameterList> ¶mList, const Comm<int> &comm ) { if (comm.getSize()==1) updateParametersFromXmlFile(xmlFileName, paramList); else { if (comm.getRank()==0) { XMLParameterListReader xmlPLReader; xmlPLReader.setAllowsDuplicateSublists( false ); FileInputSource xmlFile(xmlFileName); XMLObject xmlParams = xmlFile.getObject(); std::string xmlString = toString(xmlParams); int strsize = xmlString.size(); broadcast<int, int>(comm, 0, &strsize); broadcast<int, char>(comm, 0, strsize, &xmlString[0]); updateParametersFromXmlString(xmlString, paramList); } else { int strsize; broadcast<int, int>(comm, 0, &strsize); std::string xmlString; xmlString.resize(strsize); broadcast<int, char>(comm, 0, strsize, &xmlString[0]); updateParametersFromXmlString(xmlString, paramList); } } }
Teuchos::RCP<Teuchos::ParameterList> Teuchos::getParametersFromXmlString(const std::string &xmlStr, RCP<DependencySheet> depSheet) { XMLParameterListReader xmlPLReader; xmlPLReader.setAllowsDuplicateSublists( false ); StringInputSource xmlStrSrc(xmlStr); XMLObject xmlParams = xmlStrSrc.getObject(); return xmlPLReader.toParameterList(xmlParams, depSheet); }
TEUCHOS_UNIT_TEST( XMLParameterListReader, XMLDuplicatedSublistsThrowsError ) { FileInputSource xmlFile(filename); XMLObject xmlParams = xmlFile.getObject(); XMLParameterListReader xmlPLReader; TEST_EQUALITY_CONST( xmlPLReader.getAllowsDuplicateSublists(), true ); out << "Changing policy to disallow duplicate sublists" << std::endl; xmlPLReader.setAllowsDuplicateSublists( false ); TEST_EQUALITY_CONST( xmlPLReader.getAllowsDuplicateSublists(), false ); TEST_THROW( xmlPLReader.toParameterList(xmlParams), DuplicateParameterSublist ); }
void Teuchos::updateParametersFromXmlFile( const std::string &xmlFileName, const Ptr<ParameterList> ¶mList ) { XMLParameterListReader xmlPLReader; xmlPLReader.setAllowsDuplicateSublists( false ); FileInputSource xmlFile(xmlFileName); XMLObject xmlParams = xmlFile.getObject(); paramList->setParameters(xmlPLReader.toParameterList(xmlParams)); }