43#ifndef TEUCHOS_PARAMETER_LIST_H
44#define TEUCHOS_PARAMETER_LIST_H
287 std::string
const& docString =
"",
295 std::string
const& name,
char value[], std::string
const& docString =
"",
304 std::string
const& name,
const char value[], std::string
const& docString =
"",
312 std::string
const& name,
ParameterList const& value, std::string
const& docString =
""
328 int const depth = 1000);
356 std::string& get(
const std::string& name,
char def_value[]);
394 T& get (
const std::string& name);
424 const T& get (
const std::string& name)
const;
433 T* getPtr(
const std::string& name);
442 const T* getPtr(
const std::string& name)
const;
519 const std::string& docString =
""
528 const std::string& docString =
""
543 const std::string& name()
const;
549 bool isParameter (
const std::string& name)
const;
555 bool isSublist (
const std::string& name)
const;
563 bool isType (
const std::string& name)
const;
565#ifndef DOXYGEN_SHOULD_SKIP_THIS
577 bool isType(
const std::string& name,
T* ptr)
const;
581 Ordinal numParams ()
const;
601 std::ostream&
print(std::ostream&
os,
int indent = 0,
bool showTypes =
false,
bool showFlags =
true,
bool showDefault =
true )
const;
604 void unused(std::ostream&
os)
const;
607 std::string currentParametersString()
const;
675 void validateParameters(
677 int const depth = 1000,
719 void validateParametersAndSetDefaults(
721 int const depth = 1000
764 void validateEntryExists(
const std::string &
funcName,
const std::string &name,
769 void validateEntryType(
const std::string &
funcName,
const std::string &name,
772 void validateEntryIsList(
const std::string &name,
const ParameterEntry &entry)
const;
774 void validateMissingSublistMustExist(
const std::string &
baselist_name,
777 void updateSubListNames(
int depth = 0);
782 std::string name_ =
"ANONYMOUS";
796 bool disableRecursiveValidation_ =
false;
799 bool disableRecursiveModification_ =
false;
802 bool disableRecursiveReconciliation_ =
false;
870 static std::string
name() {
return "ParameterList"; }
919 bool verbose =
false);
961 if (
param_idx != SIOVOCB::getInvalidOrdinal()) {
963 const std::string docString =
988 std::string
const&
name_in,
char value[], std::string
const& docString
991{
return set(
name_in, std::string(value), docString, validator); }
996 const std::string&
name_in,
const char value[],
const std::string &docString
999{
return set(
name_in, std::string(value), docString, validator ); }
1025 for (
itr = this->
begin(); itr != this->
end(); ++itr){
1047 if (
param_idx == SIOVOCB::getInvalidOrdinal()) {
1093 if (
param_idx != SIOVOCB::getInvalidOrdinal()) {
1114 if (
param_idx != SIOVOCB::getInvalidOrdinal()) {
1150 if (
param_idx != SIOVOCB::getInvalidOrdinal()) {
1163 if (
param_idx != SIOVOCB::getInvalidOrdinal()) {
1175 if (
param_idx != SIOVOCB::getInvalidOrdinal()) {
1187 if (
param_idx != SIOVOCB::getInvalidOrdinal()) {
1209#ifndef DOXYGEN_SHOULD_SKIP_THIS
1215 if (
param_idx != SIOVOCB::getInvalidOrdinal()) {
1226 return this->
isType(name_in,
static_cast<T*
>(0));
1281 const std::string &,
const std::string &
name_in,
1287 ,
"Error! An attempt was made to access parameter \""<<
name_in<<
"\""
1288 " of type \""<<
entry_in.getAny().typeName()<<
"\""
1289 "\nin the parameter (sub)list \""<<
this->name()<<
"\""
1308 return l.template
get<T>(name);
1334 return l.template
get<T>(name);
1378 return l.isType( name, (
T*)
NULL );
1392 return l.isType( name, (
T*)
NULL );
1512 ,
"Error! The parameter \""<<
paramName<<
"\"\n"
1513 "in the sublist \""<<
paramList.name()<<
"\"\n"
1514 "exists, but the std::string value:\n"
1518 "is not a valid array represntation!"
1524 ,
"Error! The parameter \""<<
paramName<<
"\"\n"
1525 "in the sublist \""<<
paramList.name()<<
"\"\n"
1526 "exists and is a valid array, but the dimension of\n"
1527 "the read in array a.size() = " <<
a.
size() <<
"\n"
1528 "was not equal to the expected size arrayDim = " <<
arrayDim <<
"!"
1558 "The parameter " <<
paramName <<
" is not of type " <<
typeid(
T).name());
1560 std::logic_error,
"The parameter " <<
newName <<
" already exists in this "
1579 return rcpWithEmbeddedObjPostDestroy(
1592 return rcpWithEmbeddedObjPostDestroy(
Templated array class derived from the STL std::vector.
#define TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT
Object held as the "value" in the Teuchos::ParameterList std::map.
Parameter List Modifier class.
Reference-counted pointer class and non-member templated function implementations.
Provides std::map class for deficient platforms.
int size(const Comm< Ordinal > &comm)
Get the number of processes in the communicator.
This object is held as the "value" in the Teuchos::ParameterList std::map.
Utility class for setting and passing in print options.
PrintOptions & showFlags(bool _showFlags)
PrintOptions & indent(int _indent)
PrintOptions copy() const
PrintOptions & showTypes(bool _showTypes)
PrintOptions & showDefault(bool _showDefault)
PrintOptions & showDoc(bool _showDoc)
PrintOptions & incrIndent(int indents)
A list of parameters of arbitrary type.
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT bool operator==(const ParameterList &list1, const ParameterList &list2)
Returns true if two parameter lists are the same.
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....
T & get(ParameterList &l, const std::string &name)
A shorter name for getParameter().
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT bool haveSameValues(const ParameterList &list1, const ParameterList &list2, bool verbose=false)
Returns true if two parameter lists have the same values.
const ParameterEntry & entry(ConstIterator i) const
Access to ParameterEntry (i.e., returns i->second)
RCP< const ParameterListModifier > modifier_
ConstIterator end() const
An iterator pointing beyond the last entry.
bool isType(const std::string &name) const
Whether the given parameter exists in this list and has type T.
ParameterEntry & nonconstEntry(Iterator i)
Access to ParameterEntry (i.e., returns i->second)
void setStringParameterFromArray(const std::string ¶mName, const Array< T > &array, ParameterList *paramList)
Set a std::string parameter representation of an array.
params_t params_
Parameter list.
RCP< const ParameterListModifier > getModifier() const
Return the optional modifier object.
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.
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 & 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.
RCP< ParameterList > createParameterList(const std::string &name)
Nonmember constructor.
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 ...
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...
Iterator nonconstEnd()
An iterator pointing beyond the last entry.
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.
RCP< ParameterList > parameterList(const ParameterList &source)
Nonmember constructor.
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT bool haveSameValuesSorted(const ParameterList &list1, const ParameterList &list2, bool verbose=false)
Returns true if two parameter lists have the same values independent of ordering.
const std::string & name() const
The name of this ParameterList.
ParameterList()=default
Constructor.
bool replaceParameterWithArray(const std::string ¶mName, const std::string &newName, ParameterList &pl)
Replace a parameter with an array containing the parameter.
bool isSublist(const std::string &name) const
Whether the given sublist exists in this list.
params_t::Iterator Iterator
Parameter container iterator typedef.
std::string & get(const std::string &name, const char def_value[])
Specialization of get(), where the nominal value is a character string. Both char* and std::string ar...
ParameterList & set(std::string const &name, const char value[], std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
Specialization of set() for a parameter which is a const char[].
ParameterEntry * getEntryPtr(const std::string &name)
Retrieves the pointer for an entry with the name name if it exists.
params_t::ConstIterator ConstIterator
Parameter container const iterator typedef.
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,...
std::string name_
Name of the (sub)list.
ConstIterator begin() const
An iterator pointing to the first entry.
StringIndexedOrderedValueObjectContainer< ParameterEntry > params_t
Internal data-structure.
RCP< ParameterList > createParameterList()
Nonmember constructor.
RCP< ParameterList > parameterList()
Nonmember constructor.
void validateEntryExists(const std::string &funcName, const std::string &name, const ParameterEntry *entry) const
Validate that a parameter exists.
ParameterEntry & getEntry(const std::string &name)
Retrieves an entry with the name name.
ParameterList & setEntry(const std::string &name, const ParameterEntry &entry)
Set a parameter directly as a ParameterEntry.
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....
void validateEntryType(const std::string &funcName, const std::string &name, const ParameterEntry &entry) const
Validate that a type is the same.
RCP< ParameterList > parameterList(const std::string &name)
Nonmember constructor.
bool operator!=(const ParameterList &list1, const ParameterList &list2)
Returns true if two parameter lists are not the same.
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...
void recursivelySetValidator(RCP< const ParameterEntryValidator > const &validator, int const depth=1000)
Recursively attach a validator to parameters of type T.
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...
T & get(const std::string &name, T def_value)
Return the parameter's value, or the default value if it is not there.
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT bool haveSameModifiers(const ParameterList &list1, const ParameterList &list2)
Returns true if two parameter lists have the same modifiers.
T * getParameterPtr(ParameterList &l, const std::string &name)
A templated helper function for getting a pointer to a parameter from a non-const list,...
ParameterList & setName(const std::string &name)
Set the name of *this list.
RCP< ParameterEntry > getEntryRCP(const std::string &name)
Retrieves the RCP for an entry with the name name if it exists.
Iterator nonconstBegin()
An iterator pointing to the first entry.
EValidateDefaults
Validation defaults enum.
EValidateUsed
Validation used enum.
std::ostream & operator<<(std::ostream &os, const ParameterList &l)
Output stream operator for handling the printing of the parameter list.
Concrete serial communicator subclass.
Base types for StringIndexedOrderedValueObjectContainer.
ConstIterator end() const
Ordinal getObjOrdinalIndex(const std::string &key) const
Get the ordinal index given the string key.
ConstIterator begin() const
Ptr< ObjType > getNonconstObjPtr(const Ordinal &idx)
Get a nonconst semi-persisting association with the stored object indexed by ordinal.
Ordinal setObj(const std::string &key, const ObjType &obj)
Set (or reset) object by value and return its ordinal index.
Ptr< const ObjType > getObjPtr(const Ordinal &idx) const
Get a const semi-persisting association with the stored object indexed by ordinal.
static std::string concreteName(const ParameterList &)
static std::string name()
Default traits class that just returns typeid(T).name().
#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.
bool nonnull(const std::shared_ptr< T > &p)
Returns true if p.get()!=NULL.
@ VALIDATE_DEFAULTS_ENABLED
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated.
@ VALIDATE_DEFAULTS_DISABLED
std::string toString(const HashSet< Key > &h)
myDepList set(dependee1, "val1")