43 #ifndef TEUCHOS_PARAMETER_LIST_H 44 #define TEUCHOS_PARAMETER_LIST_H 151 PrintOptions() : indent_(0), showTypes_(false), showFlags_(false), showDoc_(false) {}
187 Ordinal numParams ()
const;
252 std::string
const& docString =
"",
260 std::string
const& name,
char value[], std::string
const& docString =
"",
269 std::string
const& name,
const char value[], std::string
const& docString =
"",
277 std::string
const& name,
ParameterList const& value, std::string
const& docString =
"" 307 T&
get(
const std::string& name, T def_value);
312 std::string&
get(
const std::string& name,
char def_value[]);
317 std::string&
get(
const std::string& name,
const char def_value[]);
350 T&
get (
const std::string& name);
380 const T&
get (
const std::string& name)
const;
389 T* getPtr(
const std::string& name);
398 const T* getPtr(
const std::string& name)
const;
457 std::string
const& name,
bool throwIfNotExists = true
471 const std::string& name,
bool mustAlreadyExist =
false 472 ,
const std::string& docString =
"" 487 const std::string& name()
const;
493 bool isParameter (
const std::string& name)
const;
499 bool isSublist (
const std::string& name)
const;
507 bool isType (
const std::string& name)
const;
509 #ifndef DOXYGEN_SHOULD_SKIP_THIS 521 bool isType(
const std::string& name, T* ptr)
const;
538 std::ostream& print(std::ostream& os,
const PrintOptions &printOptions)
const;
542 std::ostream& print(std::ostream& os,
int indent = 0,
bool showTypes =
false,
bool showFlags =
true )
const;
545 void unused(std::ostream& os)
const;
548 std::string currentParametersString()
const;
616 void validateParameters(
618 int const depth = 1000,
660 void validateParametersAndSetDefaults(
662 int const depth = 1000
676 void validateEntryExists(
const std::string &funcName,
const std::string &name,
681 void validateEntryType(
const std::string &funcName,
const std::string &name,
684 void validateEntryIsList(
const std::string &name,
const ParameterEntry &entry)
const;
686 void validateMissingSublistMustExist(
const std::string &baselist_name,
687 const std::string &sublist_name,
const bool mustAlreadyExist)
const;
689 void updateSubListNames(
int depth = 0);
775 static std::string
name() {
return "ParameterList"; }
795 return !( list1 == list2 );
831 std::string
const& name_in, T
const& value_in, std::string
const& docString_in,
837 if (param_idx != SIOVOCB::getInvalidOrdinal()) {
839 const std::string docString =
840 (docString_in.length() ? docString_in : param->docString());
842 (
nonnull(validator_in) ? validator_in : param->validator());
844 ParameterEntry param_new(value_in,
false,
false, docString, validator );
846 validator->validate(param_new, name_in, this->
name());
852 ParameterEntry param_new(value_in,
false,
false, docString_in, validator_in);
854 param_new.
validator()->validate(param_new, name_in, this->
name());
864 std::string
const& name_in,
char value[], std::string
const& docString
867 {
return set(name_in, std::string(value), docString, validator); }
872 const std::string& name_in,
const char value[],
const std::string &docString
875 {
return set( name_in, std::string(value), docString, validator ); }
880 std::string
const& name_in,
ParameterList const& value, std::string
const&
904 if (param_idx == SIOVOCB::getInvalidOrdinal()) {
909 this->
template validateEntryType<T>(
"get", name_in, *param);
910 return getValue<T>(*param);
916 {
return get(name_in, std::string(def_value)); }
921 {
return get(name_in, std::string(def_value)); }
929 this->
template validateEntryType<T>(
"get",name_in,*foundEntry);
930 return getValue<T>(*foundEntry);
939 this->
template validateEntryType<T>(
"get",name_in,*foundEntry);
940 return getValue<T>(*foundEntry);
950 if (param_idx != SIOVOCB::getInvalidOrdinal()) {
952 if (param_ptr->isType<T>()) {
953 return ¶m_ptr->getValue<T>(0);
971 if (param_idx != SIOVOCB::getInvalidOrdinal()) {
973 if (param_ptr->isType<T>()) {
974 return ¶m_ptr->getValue<T>(0);
1007 if (param_idx != SIOVOCB::getInvalidOrdinal()) {
1020 if (param_idx != SIOVOCB::getInvalidOrdinal()) {
1032 if (param_idx != SIOVOCB::getInvalidOrdinal()) {
1044 if (param_idx != SIOVOCB::getInvalidOrdinal()) {
1061 #ifndef DOXYGEN_SHOULD_SKIP_THIS 1062 template<
typename T>
1067 if (param_idx != SIOVOCB::getInvalidOrdinal()) {
1075 template<
typename T>
1078 return this->
isType(name_in, static_cast<T*>(0));
1130 template<
typename T>
1133 const std::string &,
const std::string &name_in,
1139 ,
"Error! An attempt was made to access parameter \""<<name_in<<
"\"" 1141 "\nin the parameter (sub)list \""<<this->
name()<<
"\"" 1157 template<
typename T>
1160 return l.template get<T>(name);
1169 template<
typename T>
1173 return getParameter<T>(l,name);
1183 template<
typename T>
1186 return l.template get<T>(name);
1197 template<
typename T>
1201 return l.template getPtr<T>(name);
1212 template<
typename T>
1216 return l.template getPtr<T>(name);
1226 template<
typename T>
1230 return l.
isType( name, (T*)NULL );
1240 template<
typename T>
1244 return l.
isType( name, (T*)NULL );
1259 template<
typename T>
1261 const std::string ¶mName
1335 template<
typename T>
1338 ,
const std::string ¶mName
1339 ,
const int arrayDim = -1
1340 ,
const bool mustExist =
true 1343 std::string arrayStr;
1345 arrayStr = getParameter<std::string>(paramList,paramName);
1349 *arrayStrPtr = getParameterPtr<std::string>(paramList,paramName);
1351 arrayStr = *arrayStrPtr;
1359 a = fromStringToArray<T>(arrayStr);
1364 ,
"Error! The parameter \""<<paramName<<
"\"\n" 1365 "in the sublist \""<<paramList.
name()<<
"\"\n" 1366 "exists, but the std::string value:\n" 1370 "is not a valid array represntation!" 1374 ( ( a.
size()>0 && arrayDim>=0 ) && static_cast<int>(a.
size())!=arrayDim )
1376 ,
"Error! The parameter \""<<paramName<<
"\"\n" 1377 "in the sublist \""<<paramList.
name()<<
"\"\n" 1378 "exists and is a valid array, but the dimension of\n" 1379 "the read in array a.size() = " << a.
size() <<
"\n" 1380 "was not equal to the expected size arrayDim = " << arrayDim <<
"!" 1392 bool mustAlreadyExist =
false,
const std::string& docString =
"" 1395 return rcpWithEmbeddedObjPostDestroy(
1396 ¶mList->
sublist(name, mustAlreadyExist, docString), paramList, false );
1408 return rcpWithEmbeddedObjPostDestroy(
1409 ¶mList->
sublist(name), paramList, false );
Object held as the "value" in the Teuchos::ParameterList std::map.
void validateEntryExists(const std::string &funcName, const std::string &name, const ParameterEntry *entry) const
Validate that a parameter exists.
C++ Standard Library compatable filtered iterator.
static std::string name()
Ordinal getObjOrdinalIndex(const std::string &key) const
Get the ordinal index given the string key.
Ptr< const ObjType > getObjPtr(const Ordinal &idx) const
Get a const semi-persisting association with the stored object indexed by ordinal.
void validateEntryType(const std::string &funcName, const std::string &name, const ParameterEntry &entry) const
Validate that a type is the same.
Array< T > getArrayFromStringParameter(const ParameterList ¶mList, const std::string ¶mName, const int arrayDim=-1, const bool mustExist=true)
Get an Array object (with entries of type T) from a parameter holding a std::string representation of...
PrintOptions & showTypes(bool _showTypes)
RCP< ParameterEntry > getEntryRCP(const std::string &name)
Retrieves the RCP for an entry with the name name if it exists.
RCP< ParameterList > createParameterList()
Nonmember constructor.
RCP< ParameterList > createParameterList(const std::string &name)
Nonmember constructor.
ConstIterator begin() const
An iterator pointing to the first entry.
T & get(const std::string &name, T def_value)
Return the parameter's value, or the default value if it is not there.
ParameterList & set(std::string const &name, T const &value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
Set a parameter whose value has type T.
bool nonnull(const std::shared_ptr< T > &p)
Returns true if p.get()!=NULL.
This object is held as the "value" in the Teuchos::ParameterList std::map.
const ParameterEntry & entry(ConstIterator i) const
Access to ParameterEntry (i.e., returns i->second)
Iterator nonconstBegin()
An iterator pointing to the first entry.
bool isParameterType(ParameterList &l, const std::string &name)
A templated helper function for determining the type of a parameter entry for a non-const list...
PrintOptions & showDoc(bool _showDoc)
RCP< ParameterList > sublist(const RCP< ParameterList > ¶mList, const std::string &name, bool mustAlreadyExist=false, const std::string &docString="")
Return a RCP to a sublist in another RCP-ed parameter list.
const T * getParameterPtr(const ParameterList &l, const std::string &name)
A templated helper function for getting a pointer to a parameter from a non-const list...
ConstIterator end() const
ParameterEntry * getEntryPtr(const std::string &name)
Retrieves the pointer for an entry with the name name if it exists.
RCP< ParameterList > parameterList()
Nonmember constructor.
ParameterList & setEntry(const std::string &name, const ParameterEntry &entry)
Set a parameter directly as a ParameterEntry.
ConstIterator end() const
An iterator pointing beyond the last entry.
void print() const
Print function to use in debugging in a debugger.
Iterator nonconstEnd()
An iterator pointing beyond the last entry.
std::ostream & operator<<(std::ostream &os, const ParameterList &l)
Output stream operator for handling the printing of the parameter list.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated.
bool isParameterType(const ParameterList &l, const std::string &name)
A templated helper function for determining the type of a parameter entry for a const list...
bool operator!=(const ParameterList &list1, const ParameterList &list2)
Returns true if two parameter lists are not the same.
std::string toString(const HashSet< Key > &h)
RCP< ParameterList > parameterList(const ParameterList &source)
Nonmember constructor.
params_t::ConstIterator ConstIterator
Parameter container const iterator typedef.
std::string name_
Name of the (sub)list.
ParameterEntry & nonconstEntry(Iterator i)
Access to ParameterEntry (i.e., returns i->second)
const T & getParameter(const ParameterList &l, const std::string &name)
A templated helper function for getting a parameter from a const list. This helper function prevents ...
bool isType(const std::string &name) const
Whether the given parameter exists in this list and has type T.
Utility class for setting and passing in print options.
ConstIterator begin() const
T & getParameter(ParameterList &l, const std::string &name)
A templated helper function for getting a parameter from a non-const list. This helper function preve...
RCP< const ParameterList > sublist(const RCP< const ParameterList > ¶mList, const std::string &name)
Return a RCP to a sublist in another RCP-ed parameter list.
T * getParameterPtr(ParameterList &l, const std::string &name)
A templated helper function for getting a pointer to a parameter from a non-const list...
PrintOptions copy() const
RCP< const ParameterEntryValidator > validator() const
Return the (optional) validator object.
T * getPtr(const std::string &name)
Retrieves the pointer for parameter name of type T from a list. A null pointer is returned if this pa...
A list of parameters of arbitrary type.
#define TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT
params_t params_
Parameter list.
Provides std::map class for deficient platforms.
const std::type_info & type() const
Return the type of value being stored.
const std::string & name() const
The name of this ParameterList.
any & getAny(bool activeQry=true)
Direct access to the Teuchos::any data value underlying this object. The bool argument activeQry (def...
Templated array class derived from the STL std::vector.
Ordinal setObj(const std::string &key, const ObjType &obj)
Set (or reset) object by value and return its ordinal index.
bool operator==(const TwoDArray< T > &a1, const TwoDArray< T > &a2)
Default traits class that just returns typeid(T).name().
void setStringParameterFromArray(const std::string ¶mName, const Array< T > &array, ParameterList *paramList)
Set a std::string parameter representation of an array.
std::string typeName() const
Return the name of the type.
PrintOptions & incrIndent(int indents)
EValidateDefaults
Validation defaults enum.
params_t::Iterator Iterator
Parameter container iterator typedef.
ParameterList & sublist(const std::string &name, bool mustAlreadyExist=false, const std::string &docString="")
Creates an empty sublist and returns a reference to the sublist name. If the list already exists...
ParameterList & setName(const std::string &name)
Set the name of *this list.
Smart reference counting pointer class for automatic garbage collection.
ParameterEntry & getEntry(const std::string &name)
Retrieves an entry with the name name.
StringIndexedOrderedValueObjectContainer< ParameterEntry > params_t
Internal data-structure.
Ptr< ObjType > getNonconstObjPtr(const Ordinal &idx)
Get a nonconst semi-persisting association with the stored object indexed by ordinal.
EValidateUsed
Validation used enum.
RCP< ParameterList > parameterList(const std::string &name)
Nonmember constructor.
Reference-counted pointer class and non-member templated function implementations.
static std::string concreteName(const ParameterList &)
Base types for StringIndexedOrderedValueObjectContainer.
#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...
Simple wrapper class for raw pointers to single objects where no persisting relationship exists...
bool disableRecursiveValidation_
Validate into list or not.
PrintOptions & indent(int _indent)
static std::string name()
PrintOptions & showFlags(bool _showFlags)
#define TEUCHOS_TEST_FOR_EXCEPTION_PURE_MSG(throw_exception_test, Exception, msg)
Macro for throwing an exception with breakpointing to ease debugging.
Replacement for std::vector that is compatible with the Teuchos Memory Management classes...