44#ifndef TEUCHOS_STANDARDDEPENDCIES_HPP_
45#define TEUCHOS_STANDARDDEPENDCIES_HPP_
97 bool showIf=getShowIfDefaultValue());
110 bool showIf=getShowIfDefaultValue());
123 bool showIf=getShowIfDefaultValue());
136 bool showIf=getShowIfDefaultValue());
154 bool isDependentVisible()
const;
157 bool getShowIf()
const;
315 const std::string& value,
352 bool getDependeeState()
const;
360 std::string getTypeAttributeValue()
const;
370 void validateDep()
const;
466 bool getDependeeState()
const;
474 std::string getTypeAttributeValue()
const;
484 void validateDep()
const;
579 bool getDependeeState()
const;
587 std::string getTypeAttributeValue()
const;
796 if(!func_.is_null()){
797 value = func_->runFunction(value);
811 return func_.getConst();
820 "The dependee of a " <<
821 "Number Visual Dependency must the same type as the dependency's " <<
822 "template type!" << std::endl <<
823 "Type Encountered: " <<
dependee->getAny().typeName() << std::endl <<
864template<
class DependeeType,
class DependentType>
964template<
class DependeeType,
class DependentType>
973template<
class DependeeType,
class DependentType>
982template<
class DependeeType,
class DependentType>
985 typeid(
DependeeType) != getFirstDependee()->getAny().type(),
987 "Ay no! The dependee parameter types don't match." << std::endl <<
990 "Dependee Parameter Type: " << getFirstDependee()->getAny().
typeName()
991 << std::endl << std::endl);
994template<
class DependeeType,
class DependentType>
997 if(!this->getFunctionObject().
is_null()){
1003 getBadDependentValueErrorMessage());
1006 Dependency::ParameterEntryList::iterator
it = this->getDependents().begin();
1007 it != this->getDependents().end();
1037template<
class DependeeType,
class DependentType>
1101template<
class DependeeType,
class DependentType>
1111template<
class DependeeType,
class DependentType>
1122template<
class DependeeType,
class DependentType>
1127 return "NumberArrayLengthDependency(" +
1132template <
class DependeeType,
class DependentType>
1153template<
class DependeeType,
class DependentType>
1156 std::ostringstream
os;
1158 "Ruh Roh Shaggy! Looks like a dependency tried to set the length "
1159 "of the Array(s) to a negative number. Silly. You can't have "
1160 "an Array with a negative length!" << std::endl << std::endl <<
1161 "Error:" << std::endl <<
1162 "An attempt was made to set the length of an Array to a negative "
1163 "number by a NumberArrayLengthDependency" << std::endl << std::endl;
1167template<
class DependeeType,
class DependentType>
1174 Dependency::ConstParameterEntryList::const_iterator
it =
1175 this->getDependents().begin();
1176 it != this->getDependents().end();
1182 "Ay no! The dependent parameter types don't match." << std::endl <<
1183 "Dependent Template Type: " <<
1185 "Dependent Parameter Type: " <<
1186 (*it)->getAny().typeName() << std::endl << std::endl);
1195template<
class DependeeType,
class DependentType>
1213template<
class DependeeType,
class DependentType>
1257 typedef std::map<std::string, RCP<const ParameterEntryValidator> >
1263 typedef std::pair<std::string, RCP<const ParameterEntryValidator> >
1335 std::string getTypeAttributeValue()
const;
1344 void validateDep()
const;
1470 std::string getTypeAttributeValue()
const;
1479 void validateDep()
const;
1563 typedef std::map<Range, RCP<const ParameterEntryValidator> >
1569 typedef std::pair<Range, RCP<const ParameterEntryValidator> >
1712 typename RangeToValidatorMap::const_iterator
it;
1715 it = rangesAndValidators_.begin();
1716 it != rangesAndValidators_.end();
1719 T min =
it->first.first;
1720 T max =
it->first.second;
1722 setDependentsToValidator(
it->second);
1726 setDependentsToValidator(defaultValidator_);
1734 "The dependee of a RangeValidatorDependency must be the same type as " <<
1735 "The RangeValidatorDependency template type!" << std::endl <<
1736 "Dependee Type: " <<
dependee->getAny().typeName() << std::endl <<
1740 rangesAndValidators_.size() < 1,
1742 "The rangesAndValidators map RangeValidatorDependency "
1743 "must have at least one entry!" << std::endl << std::endl);
1745 typename RangeToValidatorMap::const_iterator
it =
1746 rangesAndValidators_.begin();
1751 for(;
it!=rangesAndValidators_.end(); ++
it){
1754 "Ay no! All of the validators in a RangeValidatorDependency "
1755 "must have the same type.");
1757 it->first.first >
it->first.second,
1759 "The Range " <<
it->first.first <<
" to " <<
it->first.second <<
1760 " is invalid. The min can't be greater than the max, you silly goose!"
1769 "Ay no! The default validator of a RangeValidatorDependency "
1770 "must have the same type as the validators in rangesAndValidators map."
1779 typename ParameterEntryList::const_iterator
it;
1781 it = getDependents().begin();
1782 it != getDependents().end();
1785 (*it)->setValidator(
toSet);
1832template<
class DependeeType,
class DependentType>
1892template<
class DependeeType,
class DependentType>
1899 Dependency::ConstParameterEntryList::const_iterator
it =
1900 this->getDependents().begin();
1901 it != this->getDependents().end();
1907 "Ay no! The dependent parameter types don't match." << std::endl <<
1908 "Dependent Template Type: " <<
1910 "Dependent Parameter Type: " <<
1911 (*it)->getAny().typeName() << std::endl << std::endl);
1923template<
class DependeeType,
class DependentType>
1985template<
class DependeeType,
class DependentType>
1996template<
class DependeeType,
class DependentType>
2008template<
class DependeeType,
class DependentType>
2013 return "TwoDRowDependency(" +
2018template <
class DependeeType,
class DependentType>
2031template<
class DependeeType,
class DependentType>
2034 std::ostringstream
os;
2036 "Ruh Roh Shaggy! Looks like a dependency tried to set the number of "
2037 "rows in TwoDArray(s) to a negative number. Silly. You can't have "
2038 "a TwoDArray with a negative number of rows!" << std::endl << std::endl <<
2039 "Error:" << std::endl <<
2040 "An attempt was made to set the number of rows of a TwoDArray to a negative "
2041 "number by a TwoDRowDependency" << std::endl << std::endl;
2050template<
class DependeeType,
class DependentType>
2068template<
class DependeeType,
class DependentType>
2086template<
class DependeeType,
class DependentType>
2148template<
class DependeeType,
class DependentType>
2159template<
class DependeeType,
class DependentType>
2171template<
class DependeeType,
class DependentType>
2176 return "TwoDColDependency(" +
2181template <
class DependeeType,
class DependentType>
2194template<
class DependeeType,
class DependentType>
2197 std::ostringstream
os;
2199 "Ruh Roh Shaggy! Looks like a dependency tried to set the number of "
2200 "cols in TwoDArray(s) to a negative number. Silly. You can't have "
2201 "a TwoDArray with a negative number of cols!" << std::endl << std::endl <<
2202 "Error:" << std::endl <<
2203 "An attempt was made to set the number of columns of a TwoDArrayArray to a negative "
2204 "number by a TwoDColDependency" << std::endl << std::endl;
2213template<
class DependeeType,
class DependentType>
2231template<
class DependeeType,
class DependentType>
#define TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT
Defines basic traits for the ordinal field type.
Defines basic traits for the scalar field type.
Standard Conditions to be used.
An abstract base class for all dependencies which modify the dimensional attributes of an Array param...
ArrayModifierDependency(RCP< const ParameterEntry > dependee, RCP< ParameterEntry > dependent, RCP< const SimpleFunctionObject< DependeeType > > func=null)
Constructs an ArrayModifierDependency.
virtual void modifyArray(DependeeType newAmount, RCP< ParameterEntry > dependentToModify)=0
Modifies a particular attribute of the array according to the specific semantics of the dependency.
RCP< const SimpleFunctionObject< DependeeType > > func_
The function used to calculate the amount by which an arrays dimensional attribute should be modified...
virtual std::string getBadDependentValueErrorMessage() const =0
Returns the error message that should be displayed if the dependent has taken on a value that,...
virtual void validateDep() const
RCP< const SimpleFunctionObject< DependeeType > > getFunctionObject() const
Retrieves the function being used to calculate the amount by which an arrays dimensional attribute sh...
A BoolValidatorDependency says the following about the relationship between two parameters: Dependeni...
RCP< const ParameterEntryValidator > falseValidator_
A bool visual dependency says the following about the relationship between two elements in a Paramete...
int size(const Comm< Ordinal > &comm)
Get the number of processes in the communicator.
A condition visual dependency says the following about the relationship between elements in a Paramet...
RCP< const Condition > condition_
The Condition to determine whether or not the dependent is displayed.
This class represents a depndency between elements in a Parameter List.
std::set< RCP< ParameterEntry >, RCPComp > ParameterEntryList
A list of Dependees.
Class for retrieving a dummy object of type T.
static RCP< T > getDummyObject()
Retrieves a dummy object of type T.
A NumberArrayLengthDependency says the following about the relationship between two parameters: The l...
virtual void validateDep() const
std::string getTypeAttributeValue() const
std::string getBadDependentValueErrorMessage() const
NumberArrayLengthDependency(RCP< const ParameterEntry > dependee, RCP< ParameterEntry > dependent, RCP< const SimpleFunctionObject< DependeeType > > func=null)
Constructs a NumberArrayLengthDependency.
void modifyArray(DependeeType newAmount, RCP< ParameterEntry > dependentToModify)
.
A number visual dependency says the following about the relationship between two elements in a Parame...
RCP< SimpleFunctionObject< T > > func_
the function used to determine the visibility of the dependent.
bool getDependeeState() const
Get the state of the dependee in order to evaluate the dependency.
NumberVisualDependency(RCP< const ParameterEntry > dependee, RCP< ParameterEntry > dependent, bool showIf=true, RCP< SimpleFunctionObject< T > > func=null)
Constructs a NumberVisualDependency.
std::string getTypeAttributeValue() const
RCP< const SimpleFunctionObject< T > > getFunctionObject() const
Const version of function getter.
Abstract interface for an object that can validate a ParameterEntry's value.
This object is held as the "value" in the Teuchos::ParameterList std::map.
Smart reference counting pointer class for automatic garbage collection.
A RangeValidatorDependency says the following about the relationship between two parameters: Dependen...
std::pair< Range, RCP< const ParameterEntryValidator > > RangeValidatorPair
Convenience typedef.
const RangeToValidatorMap & getRangeToValidatorMap() const
RangeValidatorDependency(RCP< const ParameterEntry > dependee, RCP< ParameterEntry > dependent, RangeToValidatorMap rangesAndValidators, RCP< const ParameterEntryValidator > defaultValidator=null)
Constructs a RangeValidatorDependency.
RCP< const ParameterEntryValidator > getDefaultValidator() const
std::map< Range, RCP< const ParameterEntryValidator > > RangeToValidatorMap
Convenience typedef.
std::string getTypeAttributeValue() const
RCP< const ParameterEntryValidator > defaultValidator_
RangeToValidatorMap rangesAndValidators_
A map associating ranges with validators.
std::pair< T, T > Range
Convenience typedef.
void setDependentsToValidator(RCP< const ParameterEntryValidator > toSet)
Concrete serial communicator subclass.
A StringValidatorDependency says the following about the relationship between two parameters: Depende...
ValueToValidatorMap valuesAndValidators_
A map associating particular dependee values with validators that could be placed on the dependent.
RCP< ParameterEntryValidator > defaultValidator_
The default validator to be used if a request is made for a value that does not appear in the valuesA...
std::pair< std::string, RCP< const ParameterEntryValidator > > ValueToValidatorPair
Conveniece typedef.
std::map< std::string, RCP< const ParameterEntryValidator > > ValueToValidatorMap
Conveniece typedef.
A string visual depdencies says the following about the relationship between two elements in a Parame...
Array< std::string > ValueList
A dependency in which some attribute of a TwoDArray in a parameter depends on the value of another pa...
virtual void validateDep() const
TwoDArrayModifierDependency(RCP< const ParameterEntry > dependee, Dependency::ParameterEntryList dependents, RCP< const SimpleFunctionObject< DependeeType > > func=null)
Constructs a TwoDArrayModifierDependency.
TwoDArrayModifierDependency(RCP< const ParameterEntry > dependee, RCP< ParameterEntry > dependent, RCP< const SimpleFunctionObject< DependeeType > > func=null)
Constructs a TwoDArrayModifierDependency.
A dependency in which the number of rows in a parameter with a TwoDArray depends on the value of anot...
TwoDColDependency(RCP< const ParameterEntry > dependee, RCP< ParameterEntry > dependent, RCP< const SimpleFunctionObject< DependeeType > > func=null)
Constructs a TwoDColDependency.
std::string getTypeAttributeValue() const
void modifyArray(DependeeType newAmount, RCP< ParameterEntry > dependentToModify)
std::string getBadDependentValueErrorMessage() const
A dependency in which the number of rows in a parameter with a TwoDArray depends on the value of anot...
void modifyArray(DependeeType newAmount, RCP< ParameterEntry > dependentToModify)
std::string getBadDependentValueErrorMessage() const
TwoDRowDependency(RCP< const ParameterEntry > dependee, RCP< ParameterEntry > dependent, RCP< const SimpleFunctionObject< DependeeType > > func=null)
Constructs a TwoDRowDependency.
std::string getTypeAttributeValue() const
Default traits class that just returns typeid(T).name().
static std::string name()
An abstract base class for all validator dependencies.
virtual void evaluate()=0
An abstract parent class for all visual dependencies.
bool dependentVisible_
Whether or not the dependent is currently visible.
static const bool & getShowIfDefaultValue()
virtual bool getDependeeState() const =0
Get the state of the dependee in order to evaluate the dependency.
bool showIf_
Whether or not to show the dependent if the dependee is set to the value.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Macro for throwing an exception with breakpointing to ease debugging.
bool is_null(const std::shared_ptr< T > &p)
Returns true if p.get()==NULL.
bool nonnull(const std::shared_ptr< T > &p)
Returns true if p.get()!=NULL.
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.
This structure defines some basic traits for the ordinal field type.
This structure defines some basic traits for a scalar field type.
static T zero()
Returns representation of zero for this scalar type.