RCP<const DependencyXMLConverter> DependencyXMLConverterDB::getConverter(const XMLObject& xmlObject) { std::string dependencyType = xmlObject.getRequired( DependencyXMLConverter::getTypeAttributeName()); ConverterMap::const_iterator it = getConverterMap().find(dependencyType); #ifdef HAVE_TEUCHOS_DEBUG std::ostringstream sout; printKnownConverters(sout); #endif std::string extraError = #ifdef HAVE_TEUCHOS_DEBUG sout.str(); #else ""; #endif TEUCHOS_TEST_FOR_EXCEPTION(it == getConverterMap().end(), CantFindDependencyConverterException, "Could not find a DependencyXMLConverter for a dependency of type " << dependencyType << "!" << std::endl << "Try adding an appropriate converter to the DependencyXMLConverterDB " << "in order to solve this problem." << std::endl << std::endl << extraError ); return it->second; }
RCP<const ParameterEntryXMLConverter> ParameterEntryXMLConverterDB::getConverter(const XMLObject& xmlObject) { TEUCHOS_TEST_FOR_EXCEPTION( !xmlObject.hasAttribute(ParameterEntryXMLConverter::getTypeAttributeName()), NoTypeAttributeExecption, ParameterEntry::getTagName() <<" tags must " "have a " << ParameterEntryXMLConverter::getTypeAttributeName() << " attribute." << std::endl << "Bad Parameter: " << xmlObject.getAttribute(XMLParameterListWriter::getNameAttributeName()) << std::endl << std::endl); std::string parameterType = xmlObject.getRequired( ParameterEntryXMLConverter::getTypeAttributeName()); ConverterMap::const_iterator it = getConverterMap().find(parameterType); TEUCHOS_TEST_FOR_EXCEPTION(it == getConverterMap().end(), CantFindParameterEntryConverterException, "Can't find converter for parameter entry of type: " << xmlObject.getRequired(ParameterEntryXMLConverter::getTypeAttributeName()) << std::endl << std::endl); return it->second; }
void ParameterEntryXMLConverterDB::printKnownConverters(std::ostream& out){ out << "Known ParameterEntryXMLConverters: " << std::endl; for( ConverterMap::const_iterator it = getConverterMap().begin(); it != getConverterMap().end(); ++it) { out << "\t" << it->first <<std::endl; } }
RCP<const ParameterEntryXMLConverter> ParameterEntryXMLConverterDB::getConverter(RCP<const ParameterEntry> entry) { ConverterMap::const_iterator it = getConverterMap().find(entry->getAny().typeName()); if(it == getConverterMap().end()){ return getDefaultConverter(); } else{ return it->second; } }
RCP<const DependencyXMLConverter> DependencyXMLConverterDB::getConverter(const Dependency& dependency) { ConverterMap::const_iterator it = getConverterMap().find(dependency.getTypeAttributeValue()); TEUCHOS_TEST_FOR_EXCEPTION(it == getConverterMap().end(), CantFindDependencyConverterException, "Could not find a DependencyXMLConverter for a dependency with " "attribute tag " << dependency.getTypeAttributeValue() << "!" << std::endl << "Try adding an appropriate converter to the DependencyXMLConverterDB " << "in order to solve this problem." << std::endl << std::endl); return it->second; }
void DependencyXMLConverterDB::addConverter( RCP<const Dependency> dependency, RCP<DependencyXMLConverter> converterToAdd) { getConverterMap().insert( ConverterPair(dependency->getTypeAttributeValue(), converterToAdd)); }