void CommaSeperatedEntryValidator::validate(const Teuchos::ParameterEntry & entry, const std::string & paramName, const std::string & sublistName) const { const std::string &entryName = entry.getAny(false).typeName(); Teuchos::any anyValue = entry.getAny(true); // type passed, validate value TEUCHOS_TEST_FOR_EXCEPTION(!(anyValue.type() == typeid(std::string) ), Teuchos::Exceptions::InvalidParameterType, "Sorry but it looks like the \"" << paramName << "\"" << " parameter in the \"" << sublistName << "\" sublist does not exist." << std::endl << std::endl << "Error: The value that you entered was the wrong type." << std::endl << "Parameter: " << paramName << std::endl << "Type specified: " << entryName << std::endl << "Type accepted: " << typeid(std::string).name() << std::endl << std::endl); const std::string & value = Teuchos::any_cast<std::string>(anyValue); std::vector<std::string> tokens; split(value,",",tokens); if(!allowEmpty_) { const std::string errorStr = "The value for \"string-list\" type parameter in sublist \""+sublistName+"\" named \""+paramName+"\" " "is incorrectly formatted. The expected format is\n" " \"<string>[, <string>]*\" " "your value is \""+value+"\""; // verify that their is a response type and an evaluation type TEUCHOS_TEST_FOR_EXCEPTION(tokens.size()==0, Teuchos::Exceptions::InvalidParameterValue,errorStr); } }
static std::string generateXMLParameterString(const std::string& name, T data) { Teuchos::ParameterEntry entry = getEntry(name); std::stringstream ss; // TODO: check whether getAny().typeName() matches the typeid(T) // One could use a technique as described here: http://stackoverflow.com/questions/4484982/how-to-convert-typename-t-to-string-in-c ss << "<Parameter name=\"" << name << "\" type=\"" << entry.getAny().typeName() << "\" value=\"" << data << "\"/>"; return ss.str(); }
std::string filterValueToString(const Teuchos::ParameterEntry& entry ) { return ( entry.isList() ? std::string("...") : toString(entry.getAny()) ); }