43#ifndef TEUCHOS_PARAMETER_LIST_H
44#define TEUCHOS_PARAMETER_LIST_H
50#include "Teuchos_ParameterListExceptions.hpp"
53#include "Teuchos_StringIndexedOrderedValueObjectContainer.hpp"
54#include "Teuchos_Assert.hpp"
139 typedef params_t::Iterator Iterator;
152 PrintOptions() : indent_(0), showTypes_(
false), showFlags_(
false), showDoc_(
false), showDefault_(
true) {}
159 int indent()
const {
return indent_; }
160 bool showTypes()
const {
return showTypes_; }
161 bool showFlags()
const {
return showFlags_; }
162 bool showDoc()
const {
return showDoc_; }
163 bool showDefault()
const {
return showDefault_; }
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
758 inline Iterator nonconstBegin();
760 inline Iterator nonconstEnd();
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()) {
1196{
return modifier_; }
1209#ifndef DOXYGEN_SHOULD_SKIP_THIS
1215 if (
param_idx != SIOVOCB::getInvalidOrdinal()) {
1226 return this->
isType(name_in,
static_cast<T*
>(0));
1235 return params_.
begin();
1241 return params_.
end();
1260inline ParameterList::Iterator ParameterList::nonconstBegin()
1266inline ParameterList::Iterator ParameterList::nonconstEnd()
1272inline ParameterEntry& ParameterList::nonconstEntry(Iterator i)
1280void ParameterList::validateEntryType(
1281 const std::string &,
const std::string &name_in,
1282 const ParameterEntry &entry_in
1286 entry_in.getAny().type() !=
typeid(T), Exceptions::InvalidParameterType
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.
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.
This object is held as the "value" in the Teuchos::ParameterList std::map.
Utility class for setting and passing in print options.
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)
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.
void setStringParameterFromArray(const std::string ¶mName, const Array< T > &array, ParameterList *paramList)
Set a std::string parameter representation of an array.
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...
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.
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,...
ConstIterator begin() const
An iterator pointing to the first entry.
RCP< ParameterList > createParameterList()
Nonmember constructor.
RCP< ParameterList > parameterList()
Nonmember constructor.
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....
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.
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.
Smart reference counting pointer class for automatic garbage collection.
T * get() const
Get the raw C++ pointer to the underlying object.
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.
Default traits class that just returns typeid(T).name().
static std::string 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.
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...
@ VALIDATE_DEFAULTS_ENABLED
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated.
@ VALIDATE_DEFAULTS_DISABLED