42#ifndef TEUCHOS_STANDARD_PARAMETER_ENTRY_VALIDATORS_H
43#define TEUCHOS_STANDARD_PARAMETER_ENTRY_VALIDATORS_H
55#ifdef HAVE_TEUCHOSCORE_QUADMATH
91template<
class IntegralType>
195 const std::string &
str,
const std::string &
paramName =
"",
285 const std::string &
str,
const std::string &
paramName =
"",
306 std::string
const& docString,
329 typedef std::map<std::string,IntegralType>
map_t;
355template<
class IntegralType>
356RCP<StringToIntegralParameterEntryValidator<IntegralType> >
367template<
class IntegralType>
380template<
class IntegralType>
393template<
class IntegralType>
407template<
class IntegralType>
421template<
class IntegralType>
442template<
class IntegralType>
446 std::string
const& docString,
463template<
class IntegralType>
467 std::string
const& docString,
485template<
class IntegralType>
489 std::string
const& docString,
507template<
class IntegralType>
524template<
class IntegralType>
535template<
class IntegralType>
565template<
class IntegralType>
582template<
class IntegralType>
638 const std::string getXMLTypeName()
const;
642 std::string
const& docString,
648 validStringValues()
const;
658 void validateAndModify(
676 void finishInitialization();
718 enum EPreferredType { PREFER_INT, PREFER_LONG_LONG, PREFER_DOUBLE, PREFER_STRING };
803 long long getLongLong(
817 std::string getString(
833 long long getLongLong(
849 std::string getString(
856 bool isIntAllowed()
const;
860 bool isLongLongAllowed()
const;
864 bool isDoubleAllowed()
const;
868 bool isStringAllowed()
const;
879 return getIntEnumString ();
880 case PREFER_LONG_LONG:
881 return getLongLongEnumString ();
883 return getDoubleEnumString ();
885 return getStringEnumString ();
888 throw std::runtime_error(
"Cannot convert enumValue: " +
typeString +
" to a string");
898 else if (
enumString == getLongLongEnumString ()) {
899 return PREFER_LONG_LONG;
901 else if (
enumString == getDoubleEnumString ()) {
902 return PREFER_DOUBLE;
904 else if (
enumString == getStringEnumString ()) {
905 return PREFER_STRING;
908 throw std::runtime_error (
"Cannot convert enumString: " +
enumString +
" to an enum");
918 const std::string getXMLTypeName()
const;
922 std::string
const& docString,
928 validStringValues()
const;
938 void validateAndModify(
958#pragma warning(disable:4251)
993 void finishInitialization();
1032 int const value, std::string
const& docString,
1046 long long const value, std::string
const& docString,
1059 double const& value, std::string
const& docString,
1073 std::string
const& value, std::string
const& docString,
1188 return T::this_type_is_missing_a_specialization();
1241 static inline short int min() {
return std::numeric_limits<short int>::min(); }
1242 static inline short int max() {
return std::numeric_limits<short int>::max(); }
1251 static inline short unsigned int min() {
return std::numeric_limits<short unsigned int>::min(); }
1252 static inline short unsigned int max() {
return std::numeric_limits<short unsigned int>::max(); }
1261 static inline int min() {
return std::numeric_limits<int>::min(); }
1262 static inline int max() {
return std::numeric_limits<int>::max(); }
1271 static inline unsigned int min() {
return std::numeric_limits<unsigned int>::min(); }
1272 static inline unsigned int max() {
return std::numeric_limits<unsigned int>::max(); }
1281 static inline long int min() {
return std::numeric_limits<long int>::min(); }
1282 static inline long int max() {
return std::numeric_limits<long int>::max(); }
1291 static inline long unsigned int min() {
return std::numeric_limits<long unsigned int>::min(); }
1292 static inline long unsigned int max() {
return std::numeric_limits<long unsigned int>::max(); }
1301 static inline long long int min() {
return std::numeric_limits<long long int>::min(); }
1302 static inline long long int max() {
return std::numeric_limits<long long int>::max(); }
1311 static inline long long unsigned int min() {
return std::numeric_limits<long long unsigned int>::min(); }
1312 static inline long long unsigned int max() {
return std::numeric_limits<long long unsigned int>::max(); }
1318#ifdef HAVE_TEUCHOSCORE_QUADMATH
1320class EnhancedNumberTraits<__float128>{
1322 static inline __float128
min() {
return -std::numeric_limits<__float128>::max(); }
1323 static inline __float128
max() {
return std::numeric_limits<__float128>::max(); }
1324 static inline __float128
defaultStep() {
return 1; }
1332 static inline double min() {
return -std::numeric_limits<double>::max(); }
1333 static inline double max() {
return std::numeric_limits<double>::max(); }
1338#ifdef HAVE_TEUCHOS_LONG_DOUBLE
1340class EnhancedNumberTraits<long double>{
1342 static inline long double min() {
return -std::numeric_limits<long double>::max(); }
1343 static inline long double max() {
return std::numeric_limits<long double>::max(); }
1344 static inline long double defaultStep() {
return 1; }
1352 static inline float min() {
return -std::numeric_limits<float>::max(); }
1353 static inline float max() {
return std::numeric_limits<float>::max(); }
1531 void printDoc(std::string
const &docString, std::ostream &out)
const{
1533 out <<
"#\tValidator Used: " << std::endl;
1534 out <<
"#\t\tNumber Validator" << std::endl;
1537 out <<
"#\t\tMin (inclusive): " <<
minVal << std::endl;
1538 out <<
"#\t\tMax (inclusive): " <<
maxVal << std::endl;
1598 if(
anyValue.type() ==
typeid(std::string) ) {
1599 anyValue = getNumberFromString(*entry,
false);
1620 if(
typeid(
T) ==
typeid(
char))
return true;
1621 if(
typeid(
T) ==
typeid(
unsigned char))
return true;
1622 if(
typeid(
T) ==
typeid(
int))
return true;
1623 if(
typeid(
T) ==
typeid(
unsigned int))
return true;
1624 if(
typeid(
T) ==
typeid(
short))
return true;
1625 if(
typeid(
T) ==
typeid(
unsigned short))
return true;
1626 if(
typeid(
T) ==
typeid(
long))
return true;
1627 if(
typeid(
T) ==
typeid(
unsigned long))
return true;
1628 if(
typeid(
T) ==
typeid(
long long))
return true;
1629 if(
typeid(
T) ==
typeid(
unsigned long long))
return true;
1647 if(useIntConversions()) {
1665 if(
anyValue.type() ==
typeid(std::string) ) {
1667 anyValue = getNumberFromString(entry,
false);
1675 "\" sublist is has an error." << std::endl << std::endl <<
1676 "Error: The value that you entered was the wrong type." << std::endl <<
1677 "Parameter: " <<
paramName << std::endl <<
1678 "Type specified: " <<
entryName << std::endl <<
1688 "\" sublist is has an error." << std::endl << std::endl <<
1689 "Error: The value that was entered doesn't fall with in " <<
1690 "the range set by the validator" << std::endl <<
1691 "Parameter: " <<
paramName << std::endl <<
1692 "Min: " << minVal << std::endl <<
1693 "Max: " << maxVal << std::endl <<
1694 "Value entered: " <<
1767 bool fileMustExist()
const;
1782 bool fileEmptyNameOK()
const;
1815 ValidStringsList validStringValues()
const;
1824 const std::string getXMLTypeName()
const;
1827 void printDoc(std::string
const &docString, std::ostream &out)
const;
1920 const std::string getXMLTypeName()
const;
1923 void printDoc(std::string
const &docString, std::ostream &out)
const;
1966template<
class Val
idatorType,
class EntryType>
2034template<
class Val
idatorType,
class EntryType>
2060 return "TwoDArrayValidator(" +
2066 virtual void printDoc(std::string
const &docString, std::ostream &out)
const
2070 toPrint +=
"TwoDArrayValidator:\n";
2071 toPrint +=
"Prototype Validator:\n";
2079template<
class Val
idatorType,
class EntryType>
2089 "\" sublist is has an error." << std::endl << std::endl <<
2090 "Error: The value you entered was the wrong type." << std::endl <<
2091 "Parameter: " <<
paramName << std::endl <<
2092 "Type specified: " <<
entryName << std::endl <<
2094 std::endl << std::endl);
2108 std::stringstream
oss;
2109 oss <<
"TwoDArray Validator Exception:" << std::endl <<
2110 "Bad Index: (" <<
i <<
"," <<
j <<
")" << std::endl <<
e.what();
2123template<
class Val
idatorType,
class EntryType>
2140template<
class Val
idatorType,
class EntryType>
2219template<
class Val
idatorType,
class EntryType>
2246 return "ArrayValidator(" +
2252 virtual void printDoc(std::string
const &docString, std::ostream &out)
const
2256 toPrint +=
"ArrayValidator:\n";
2257 toPrint +=
"Prototype Validator:\n";
2265template<
class Val
idatorType,
class EntryType>
2275 "\" sublist is has an error." << std::endl << std::endl <<
2276 "Error: The value you entered was the wrong type." << std::endl <<
2277 "Parameter: " <<
paramName << std::endl <<
2278 "Type specified: " <<
entryName << std::endl <<
2280 std::endl << std::endl);
2293 std::stringstream
oss;
2294 oss <<
"Array Validator Exception:" << std::endl <<
2295 "Bad Index: " <<
i << std::endl <<
e.what();
2306template<
class Val
idatorType,
class EntryType>
2323template<
class Val
idatorType,
class EntryType>
2417template<
class IntegralType>
2426 typedef typename map_t::value_type
val_t;
2432 !
unique, std::logic_error,
2434 "strings[" <<
i <<
"] = \"" <<
strings[
i] <<
"\" is a duplicate.");
2440template<
class IntegralType>
2456 "The input arrays strings and integralValues must have the same length.");
2458 typedef typename map_t::value_type
val_t;
2465 !
unique, std::logic_error,
2467 "strings[" <<
i <<
"] = \"" <<
strings[
i] <<
"\" is a duplicate.");
2472template<
class IntegralType>
2491 "The input arrays strings and integralValues must have the same length.");
2496 "The input arrays strings and stringsDocs must have the same length.");
2498 typedef typename map_t::value_type
val_t;
2504 !
unique, std::logic_error,
2506 "strings[" <<
i <<
"] = \"" <<
strings[
i] <<
"\" is a duplicate.");
2514template<
class IntegralType>
2521 typename map_t::const_iterator
itr = map_.find (caseSensitive_ ?
str : upperCase (
str));
2524 ,
"Error, the value \"" <<
str <<
"\" is not recognized for the parameter \""
2527 <<
"\n\nValid values include:"
2532 return (*itr).second;
2536template<
class IntegralType>
2546 ,
"Error, the parameter {paramName=\""<<(
paramName.length()?
paramName:defaultParameterName_)
2549 <<
"\nhas the wrong type."
2550 <<
"\n\nThe correct type is \"string\"!"
2558template<
class IntegralType>
2572template<
class IntegralType>
2586template<
class IntegralType>
2600template<
class IntegralType>
2604 return validStringValuesDocs_;
2607template<
class IntegralType>
2611 return defaultParameterName_;
2614template<
class IntegralType>
2621 getIntegralValue (caseSensitive_ ?
str : upperCase (
str),
2630template<
class IntegralType>
2636template<
class IntegralType>
2638 std::string
const& docString
2643 out <<
"# Valid std::string values:\n";
2645 if(validStringValuesDocs_.get()) {
2647 out <<
"# \"" << (*validStringValues_)[
i] <<
"\"\n";
2660template<
class IntegralType>
2664 return validStringValues_;
2668template<
class IntegralType>
2681template<
class IntegralType>
2687 if (caseSensitive_) {
2702 std::ostringstream
oss;
2707 validValues_ =
oss.str();
2719template<
class IntegralType>
2722Teuchos::stringToIntegralParameterEntryValidator(
2723 ArrayView<const std::string>
const& strings,
2724 std::string
const& defaultParameterName
2728 new StringToIntegralParameterEntryValidator<IntegralType>(
2729 strings, defaultParameterName
2735template<
class IntegralType>
2738Teuchos::stringToIntegralParameterEntryValidator(
2739 ArrayView<const std::string>
const& strings,
2740 std::string
const& defaultParameterName,
2741 const bool caseSensitive
2744 typedef StringToIntegralParameterEntryValidator<IntegralType> ret_type;
2745 return rcp (
new ret_type (strings, defaultParameterName, caseSensitive));
2750template<
class IntegralType>
2753Teuchos::stringToIntegralParameterEntryValidator(
2754 ArrayView<const std::string>
const& strings,
2755 ArrayView<const IntegralType>
const& integralValues,
2756 std::string
const& defaultParameterName
2760 new StringToIntegralParameterEntryValidator<IntegralType>(
2761 strings, integralValues, defaultParameterName
2767template<
class IntegralType>
2770Teuchos::stringToIntegralParameterEntryValidator(
2771 ArrayView<const std::string>
const& strings,
2772 ArrayView<const IntegralType>
const& integralValues,
2773 std::string
const& defaultParameterName,
2774 const bool caseSensitive)
2776 typedef StringToIntegralParameterEntryValidator<IntegralType> ret_type;
2777 return rcp (
new ret_type (strings, integralValues,
2778 defaultParameterName, caseSensitive));
2782template<
class IntegralType>
2785Teuchos::stringToIntegralParameterEntryValidator(
2786 ArrayView<const std::string>
const& strings,
2787 ArrayView<const std::string>
const& stringsDocs,
2788 ArrayView<const IntegralType>
const& integralValues,
2789 std::string
const& defaultParameterName
2793 new StringToIntegralParameterEntryValidator<IntegralType>(
2794 strings, stringsDocs, integralValues, defaultParameterName
2800template<
class IntegralType>
2803Teuchos::stringToIntegralParameterEntryValidator(
2804 ArrayView<const std::string>
const& strings,
2805 ArrayView<const std::string>
const& stringsDocs,
2806 ArrayView<const IntegralType>
const& integralValues,
2807 std::string
const& defaultParameterName,
2808 const bool caseSensitive)
2810 typedef StringToIntegralParameterEntryValidator<IntegralType> ret_type;
2811 return rcp (
new ret_type (strings, stringsDocs, integralValues,
2812 defaultParameterName, caseSensitive));
2816template<
class IntegralType>
2817void Teuchos::setStringToIntegralParameter(
2818 std::string
const& paramName,
2819 std::string
const& defaultValue,
2820 std::string
const& docString,
2821 ArrayView<const std::string>
const& strings,
2822 ParameterList * paramList
2825 typedef ParameterEntryValidator PEV;
2828 paramName, defaultValue, docString,
2829 rcp_implicit_cast<const PEV>(
2830 stringToIntegralParameterEntryValidator<IntegralType>(
2838template<
class IntegralType>
2839void Teuchos::setStringToIntegralParameter(
2840 std::string
const& paramName,
2841 std::string
const& defaultValue,
2842 std::string
const& docString,
2843 ArrayView<const std::string>
const& strings,
2844 ArrayView<const IntegralType>
const& integralValues,
2845 ParameterList * paramList
2848 typedef ParameterEntryValidator PEV;
2851 paramName, defaultValue, docString,
2852 rcp_implicit_cast<const PEV>(
2853 stringToIntegralParameterEntryValidator<IntegralType>(
2854 strings, integralValues, paramName
2861template<
class IntegralType>
2862void Teuchos::setStringToIntegralParameter(
2863 std::string
const& paramName,
2864 std::string
const& defaultValue,
2865 std::string
const& docString,
2866 ArrayView<const std::string>
const& strings,
2867 ArrayView<const std::string>
const& stringsDocs,
2868 ArrayView<const IntegralType>
const& integralValues,
2869 ParameterList * paramList
2873 typedef ParameterEntryValidator PEV;
2876 paramName, defaultValue, docString,
2877 rcp_implicit_cast<const PEV>(
2878 stringToIntegralParameterEntryValidator<IntegralType>(
2879 strings, stringsDocs, integralValues, paramName
2886template<
class IntegralType>
2887IntegralType Teuchos::getIntegralValue(
2888 ParameterList
const& paramList, std::string
const& paramName
2891 const ParameterEntry &entry = paramList.getEntry(paramName);
2892 RCP<const StringToIntegralParameterEntryValidator<IntegralType> >
2893 integralValidator = getStringToIntegralParameterEntryValidator<IntegralType>(
2894 entry, paramList, paramName
2896 return integralValidator->getIntegralValue(
2897 entry, paramName, paramList.name(),
true );
2901template<
class IntegralType>
2902std::string Teuchos::getStringValue(
2903 ParameterList
const& paramList, std::string
const& paramName
2906 const ParameterEntry &entry = paramList.getEntry(paramName);
2907 RCP<const StringToIntegralParameterEntryValidator<IntegralType> >
2908 integralValidator = getStringToIntegralParameterEntryValidator<IntegralType>(
2909 entry, paramList, paramName
2911 return integralValidator->getStringValue(
2912 entry, paramName, paramList.name(),
true
2917template<
class IntegralType>
2920 ParameterEntry
const& entry, ParameterList
const& paramList,
2921 std::string
const& paramName
2924 const RCP<const ParameterEntryValidator> validator = entry.validator();
2926 is_null(validator), Exceptions::InvalidParameterType,
2927 "Error! The parameter \""<<paramName<<
"\" exists\n"
2928 "in the parameter (sub)list \""<<paramList.name()<<
"\"\n"
2929 "but it does not contain any validator needed to extract\n"
2930 "an integral value of type \""<<TypeNameTraits<IntegralType>::name()<<
"\"!"
2932 const RCP<const StringToIntegralParameterEntryValidator<IntegralType> > integralValidator =
2933 rcp_dynamic_cast<const StringToIntegralParameterEntryValidator<IntegralType> >(
2937 is_null(integralValidator), Exceptions::InvalidParameterType,
2938 "Error! The parameter \""<<paramName<<
"\" exists\n"
2939 "in the parameter (sub)list \""<<paramList.name()<<
"\"\n"
2940 "but it contains the wrong type of validator. The expected validator type\n"
2941 "is \""<<TypeNameTraits<StringToIntegralParameterEntryValidator<IntegralType> >::name()<<
"\"\n"
2942 "but the contained validator type is \""<<
typeName(*validator)<<
"\"!"
2944 return integralValidator;
#define TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT
Templated Parameter List class.
A std::string utilities class for Teuchos.
A thin wrapper around the Teuchos Array class that allows for 2 dimensional arrays.
Defines basic traits returning the name of a type in a portable and readable way.
An abstract base class for all ArrayValidators.
RCP< const ValidatorType > getPrototype() const
Returns the prototype validator for this Array Validator.
RCP< const ValidatorType > prototypeValidator_
The prototype validator to be applied to each entry in the Array.
AbstractArrayValidator(RCP< const ValidatorType > prototypeValidator)
Constructs an AbstractArrayValidator.
ValidStringsList validStringValues() const
Determines the types that are accepted.
AcceptedTypes & allowInt(bool _allowInt)
Set allow an int value or not.
bool allowString() const
Allow an std::string value?
bool allowInt() const
Allow an int value?
AcceptedTypes & allowDouble(bool _allowDouble)
Set allow a double value or not.
AcceptedTypes & allowLongLong(bool _allowLongLong)
Set allow an long long value or not.
bool allowDouble() const
Allow an double value?
bool allowLongLong() const
Allow an long long value?
AcceptedTypes & allowString(bool _allowString)
Set allow an std::string value or not.
AcceptedTypes(bool allowAllTypesByDefault=true)
Allow all types or not on construction.
Standard implementation of a ParameterEntryValidator that accepts numbers from a number of different ...
static EPreferredType getPrefferedTypeStringEnum(const std::string &enumString)
Gets the preferred type enum associated with a give string.
static const std::string & getPrefferedTypeString(EPreferredType enumValue)
Gets the string representation of a given preferred type enum.
const AcceptedTypes acceptedTypes_
static const std::string & getIntEnumString()
std::string acceptedTypesString_
static const std::string & getLongLongEnumString()
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT RCP< AnyNumberParameterEntryValidator > anyNumberParameterEntryValidator()
Nonmember constructor AnyNumberParameterEntryValidator.
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT RCP< AnyNumberParameterEntryValidator > anyNumberParameterEntryValidator(AnyNumberParameterEntryValidator::EPreferredType const preferredType, AnyNumberParameterEntryValidator::AcceptedTypes const &acceptedTypes)
Nonmember constructor AnyNumberParameterEntryValidator.
static const std::string & getStringEnumString()
EPreferredType
Determines what type is the preferred type.
EPreferredType preferredType_
static const std::string & getDoubleEnumString()
Convience class for FileNameValidators that are to be applied to arrays.
ArrayFileNameValidator(RCP< const FileNameValidator > prototypeValidator)
Convience class for EnhancedNumberValidators that are to be applied to arrays.
ArrayNumberValidator(RCP< const EnhancedNumberValidator< T > > prototypeValidator)
Convience class for StringValidators that are to be applied to arrays.
ArrayStringValidator(RCP< const StringValidator > prototypeValidator)
Takes a validator, wraps it, and applies it to an array.
ArrayValidator(RCP< const ValidatorType > prototypeValidator)
Constructs a ArrayValidator.
const std::string getXMLTypeName() const
virtual void validate(ParameterEntry const &entry, std::string const ¶mName, std::string const &sublistName) const
virtual void printDoc(std::string const &docString, std::ostream &out) const
Standard implementation of a BoolParameterEntryValidator that accepts bool values (true/false) or str...
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT RCP< BoolParameterEntryValidator > boolParameterEntryValidator()
Nonmember constructor BoolParameterEntryValidator.
std::string acceptedTypesString_
int size(const Comm< Ordinal > &comm)
Get the number of processes in the communicator.
Class for retrieving a dummy object of type T.
static RCP< T > getDummyObject()
Retrieves a dummy object of type T.
static double defaultStep()
static unsigned short defaultPrecision()
static float defaultStep()
static unsigned short defaultPrecision()
static unsigned short defaultPrecision()
static long int defaultStep()
static unsigned short defaultPrecision()
static long long int max()
static unsigned short defaultPrecision()
static long long int defaultStep()
static long long int min()
static long long unsigned int min()
static unsigned short defaultPrecision()
static long long unsigned int max()
static long long unsigned int defaultStep()
static long unsigned int defaultStep()
static long unsigned int max()
static unsigned short defaultPrecision()
static long unsigned int min()
static unsigned short defaultPrecision()
static short int defaultStep()
static short unsigned int min()
static short unsigned int max()
static unsigned short defaultPrecision()
static short unsigned int defaultStep()
static unsigned int min()
static unsigned short defaultPrecision()
static unsigned int max()
static unsigned int defaultStep()
Class defining the traits of the number type being used in an EnhancedNumberValidator.
static T max()
Gets the maximum possible value the number type can take on.
static unsigned short defaultPrecision()
Gets the default precision with which the number type should be displayed.
static T defaultStep()
gets default amount a value of the number type should be incremented by when being utilizied in a UI.
static T min()
Gets the minimum possible value the number type can take on.
Class uesd to validate a particular type of number.
T getMax() const
Gets the maximum acceptable value for the validator.
Teuchos::any getNumberFromString(const ParameterEntry &entry, const bool activeQuery) const
void setMin(T min)
Sets the minimum acceptable value for the validator.
EnhancedNumberValidator(T min, T max, T step=EnhancedNumberTraits< T >::defaultStep(), unsigned short precision=EnhancedNumberTraits< T >::defaultPrecision())
Constructs a EnhancedNumberValidator.
bool containsMax
Whetehr or not a maximum value has been specified for this validator.
T maxVal
The maximum value accepted by the validator.
void validate(ParameterEntry const &entry, std::string const ¶mName, std::string const &sublistName) const
void setMax(T max)
Sets the maximum acceptable value for the validator.
T step_
The increment to use when increaseing or decreaseing the value the validator is validating.
void validateAndModify(std::string const ¶mName, std::string const &sublistName, ParameterEntry *entry) const
T getStep() const
Gets the step being used for the validator.
bool useIntConversions() const
unsigned short getPrecision() const
Gets the precision specified for the validator.
ValidStringsList validStringValues() const
void setStep(T step)
Sets the step being used for the validator.
T minVal
The minimum value accepted by the validator.
unsigned short precision_
The number of decimal places with which the nubmer will be displayed in a UI. This value is meaningle...
bool hasMax() const
Determines whether or not the validator has a maximum value.
T getMin() const
Gets the minimum acceptable value for the validator.
void setPrecision(unsigned short precision)
Sets the precision specified for the validator.
const std::string getXMLTypeName() const
void printDoc(std::string const &docString, std::ostream &out) const
EnhancedNumberValidator()
Constructs a EnhancedNumberValidator without an explicit minimum or maximum.
bool hasMin() const
Determines whether or not the validator has a minimum value.
bool containsMin
Whether or not a minimum value has been specified for this validator.
Validate a file name entry.
bool mustAlreadyExist_
Whether or not the file specified in the parameter should already exist.
static bool mustAlreadyExistDefault()
The default value of the mustAlreadyExist parameter in the constructor.
Abstract interface for an object that can validate a ParameterEntry's value.
virtual void validateAndModify(std::string const ¶mName, std::string const &sublistName, ParameterEntry *entry) const
Validate and perhaps modify a parameter entry's value.
This object is held as the "value" in the Teuchos::ParameterList std::map.
any & getAny(bool activeQry=true)
Direct access to the Teuchos::any data value underlying this object. The bool argument activeQry (def...
void setValue(T value, bool isDefault=false, const std::string &docString="", RCP< const ParameterEntryValidator > const &validator=null)
Templated set method that uses the input value type to determine the type of parameter.
A list of parameters of arbitrary type.
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT std::string getNumericStringParameter(ParameterList const ¶mList, std::string const ¶mName)
Get std::string numeric parameter.
void setStringToIntegralParameter(std::string const ¶mName, std::string const &defaultValue, std::string const &docString, ArrayView< const std::string > const &strings, ArrayView< const std::string > const &stringsDocs, ArrayView< const IntegralType > const &integralValues, ParameterList *paramList)
Set up a std::string parameter with documentation strings for each valid value that will use an embed...
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT void setDoubleParameter(std::string const ¶mName, double const &value, std::string const &docString, ParameterList *paramList, AnyNumberParameterEntryValidator::AcceptedTypes const &acceptedTypes=AnyNumberParameterEntryValidator::AcceptedTypes())
Set an double parameter that allows for (nearly) any input parameter type that is convertible to a do...
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT void setLongLongParameter(std::string const ¶mName, long long const value, std::string const &docString, ParameterList *paramList, AnyNumberParameterEntryValidator::AcceptedTypes const &acceptedTypes=AnyNumberParameterEntryValidator::AcceptedTypes())
Set an integer parameter that allows for (nearly) any input parameter type that is convertible to an ...
void setStringToIntegralParameter(std::string const ¶mName, std::string const &defaultValue, std::string const &docString, ArrayView< const std::string > const &strings, ArrayView< const IntegralType > const &integralValues, ParameterList *paramList)
Set up a std::string parameter that will use an embedded validator to allow the extraction of an inte...
IntegralType getIntegralValue(ParameterList const ¶mList, std::string const ¶mName)
Get an integral value for a parameter that is assumed to already be set.
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT double getDoubleParameter(ParameterList const ¶mList, std::string const ¶mName)
Get double integer parameter.
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT void setIntParameter(std::string const ¶mName, int const value, std::string const &docString, ParameterList *paramList, AnyNumberParameterEntryValidator::AcceptedTypes const &acceptedTypes=AnyNumberParameterEntryValidator::AcceptedTypes())
Set an integer parameter that allows for (nearly) any input parameter type that is convertible to an ...
std::string getStringValue(ParameterList const ¶mList, std::string const ¶mName)
Get a std::string value for a parameter that is assumed to already be set.
void setStringToIntegralParameter(std::string const ¶mName, std::string const &defaultValue, std::string const &docString, ArrayView< const std::string > const &strings, ParameterList *paramList)
Set up a std::string parameter that will use an embedded validator to allow the extraction of an inte...
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT void setNumericStringParameter(std::string const ¶mName, std::string const &value, std::string const &docString, ParameterList *paramList, AnyNumberParameterEntryValidator::AcceptedTypes const &acceptedTypes=AnyNumberParameterEntryValidator::AcceptedTypes())
Set an numeric parameter preferred as a std::string that allows for (nearly) any input parameter type...
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT long long getLongLongParameter(ParameterList const ¶mList, std::string const ¶mName)
Get a long long parameter.
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT int getIntParameter(ParameterList const ¶mList, std::string const ¶mName)
Get an integer parameter.
Smart reference counting pointer class for automatic garbage collection.
Concrete serial communicator subclass.
static std::ostream & printLines(std::ostream &os, const std::string &linePrefix, const std::string &lines)
Print lines with prefix first.
Standard implementation of a ParameterEntryValidator that maps from a list of strings to an enum or i...
IntegralType getIntegralValue(const ParameterEntry &entry, const std::string ¶mName="", const std::string &sublistName="", const bool activeQuery=true) const
Find the enum or integer value for the given ParameterEntry.
StringToIntegralParameterEntryValidator(const ArrayView< const std::string > &strings, const std::string &defaultParameterName, const bool caseSensitive=true)
Construct with a mapping from strings to the enum or integer values .
const bool caseSensitive_
StringToIntegralParameterEntryValidator(const ArrayView< const std::string > &strings, const ArrayView< const std::string > &stringsDocs, const ArrayView< const IntegralType > &integralValues, const std::string &defaultParameterName, const bool caseSensitive=true)
Construct with a mapping from strings (with documentation) to specified enum or integer values,...
ValidStringsList validStringValuesDocs_
IntegralType getIntegralValue(const std::string &str, const std::string ¶mName="", const std::string &sublistName="") const
For a string value, find its corresponding enum or integer value.
ValidStringsList getStringDocs() const
Get a pointer to the array containing all the documentation strings.
RCP< StringToIntegralParameterEntryValidator< IntegralType > > stringToIntegralParameterEntryValidator(ArrayView< const std::string > const &strings, std::string const &defaultParameterName, const bool caseSensitive)
Nonmember constructor (see implementation).
std::string defaultParameterName_
IntegralType getIntegralValue(ParameterList ¶mList, const std::string ¶mName, const std::string &defaultValue) const
Get the integer enum value for the given parameter.
StringToIntegralParameterEntryValidator(const ArrayView< const std::string > &strings, const ArrayView< const IntegralType > &integralValues, std::string const &defaultParameterName, const bool caseSensitive=true)
Construct with a mapping from strings to specified enum or integer values.
std::string validateString(const std::string &str, const std::string ¶mName="", const std::string &sublistName="") const
Validate the std::string and pass it on.
std::string getStringValue(const ParameterEntry &entry, const std::string ¶mName="", const std::string &sublistName="", const bool activeQuery=true) const
Find the string value for the given ParameterEntry.
RCP< StringToIntegralParameterEntryValidator< IntegralType > > stringToIntegralParameterEntryValidator(ArrayView< const std::string > const &strings, std::string const &defaultParameterName)
Nonmember constructor (see implementation).
ValidStringsList validStringValues_
bool isCaseSensitive() const
Whether this validator is case sensitive.
static std::string upperCase(const std::string s)
Return an upper-case copy of the string s.
std::string getStringValue(ParameterList ¶mList, const std::string ¶mName, const std::string &defaultValue) const
Lookup a parameter from a parameter list, validate the std::string value, and return the std::string ...
void printDoc(std::string const &docString, std::ostream &out) const
Print documentation to the given output string.
std::map< std::string, IntegralType > map_t
void setValidValues(ArrayView< const std::string > const &strings, ArrayView< const std::string > const *stringsDocs=NULL)
RCP< StringToIntegralParameterEntryValidator< IntegralType > > stringToIntegralParameterEntryValidator(ArrayView< const std::string > const &strings, ArrayView< const IntegralType > const &integralValues, std::string const &defaultParameterName)
Nonmember constructor (see implementation).
RCP< StringToIntegralParameterEntryValidator< IntegralType > > stringToIntegralParameterEntryValidator(ArrayView< const std::string > const &strings, ArrayView< const std::string > const &stringsDocs, ArrayView< const IntegralType > const &integralValues, std::string const &defaultParameterName, const bool caseSensitive)
Nonmember constructor (see implementation).
RCP< StringToIntegralParameterEntryValidator< IntegralType > > stringToIntegralParameterEntryValidator(ArrayView< const std::string > const &strings, ArrayView< const std::string > const &stringsDocs, ArrayView< const IntegralType > const &integralValues, std::string const &defaultParameterName)
Nonmember constructor (see implementation).
RCP< StringToIntegralParameterEntryValidator< IntegralType > > stringToIntegralParameterEntryValidator(ArrayView< const std::string > const &strings, ArrayView< const IntegralType > const &integralValues, std::string const &defaultParameterName, const bool caseSensitive)
Nonmember constructor (see implementation).
StringToIntegralParameterEntryValidator()
ValidStringsList validStringValues() const
const std::string & getDefaultParameterName() const
Get the name of the default parameter for the validator.
const std::string getXMLTypeName() const
void validate(ParameterEntry const &entry, std::string const ¶mName, std::string const &sublistName) const
Validate the given ParameterEntry.
A simple validator that only allows certain string values to be choosen or simply enforces that a par...
ValidStringsList validStrings_
An array containing a list of all the valid string values.
Convience class for FileNameValidators that are to be applied to TwoDArrays.
TwoDArrayFileNameValidator(RCP< const FileNameValidator > prototypeValidator)
Convience class for EnhancedNumberValidators that are to be applied to TwoDArray.
TwoDArrayNumberValidator(RCP< const EnhancedNumberValidator< T > > prototypeValidator)
Convience class for StringValidators that are to be applied to TwoDArrays.
TwoDArrayStringValidator(RCP< const StringValidator > prototypeValidator)
Takes a validator, wraps it, and applies it to a TwoDArray.
virtual void validate(ParameterEntry const &entry, std::string const ¶mName, std::string const &sublistName) const
const std::string getXMLTypeName() const
TwoDArrayValidator(RCP< const ValidatorType > prototypeValidator)
Constructs a ArrayValidator.
virtual void printDoc(std::string const &docString, std::ostream &out) const
Default traits class that just returns typeid(T).name().
static std::string name()
Modified boost::any class, which is a container for a templated value.
std::string typeName() const
Return the name of the type.
const std::type_info & type() const
Return the type of value being stored.
#define TEUCHOS_TEST_FOR_EXCEPTION_PURE_MSG(throw_exception_test, Exception, msg)
Macro for throwing an exception with breakpointing to ease debugging.
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
This macro is designed to be a short version of TEUCHOS_TEST_FOR_EXCEPTION() that is easier to call.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Macro for throwing an exception with breakpointing to ease debugging.
#define TEUCHOS_ASSERT_EQUALITY(val1, val2)
This macro is checks that to numbers are equal and if not then throws an exception with a good error ...
bool is_null(const boost::shared_ptr< T > &p)
Returns true if p.get()==NULL.
RCP< const StringToIntegralParameterEntryValidator< IntegralType > > getStringToIntegralParameterEntryValidator(ParameterEntry const &entry, ParameterList const ¶mList, std::string const ¶mName)
Get a StringToIntegralParameterEntryValidator<IntegralType> object out of a ParameterEntry object.
std::string typeName(const T &t)
Template function for returning the concrete type name of a passed-in object.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated.
std::string toString(const HashSet< Key > &h)
EVerbosityLevel
Verbosity level.
Default structure used by EnhancedNumberTraits<T> to produce a compile time error when the specializa...
static T notDefined()
This function should not compile if there is an attempt to instantiate!