42 #ifndef TEUCHOS_STANDARDDEPENDENCYXMLCONVERTERS_HPP
43 #define TEUCHOS_STANDARDDEPENDENCYXMLCONVERTERS_HPP
78 virtual void convertSpecialVisualAttributes(
115 void convertDependency(
129 static const std::string& getShowIfAttributeName(){
130 static const std::string showIfAttributeName =
"showIf";
131 return showIfAttributeName;
157 virtual void convertSpecialValidatorAttributes(
192 void convertDependency(
228 void convertSpecialVisualAttributes(
243 static const std::string stringValuesTagName =
"StringValues";
244 return stringValuesTagName;
255 static const std::string& getStringTagName(){
256 static const std::string stringTagName =
"String";
257 return stringTagName;
261 static const std::string& getValueAttributeName(){
262 static const std::string valueAttributeName =
"value";
263 return valueAttributeName;
291 void convertSpecialVisualAttributes(
359 castedDependency->getFunctionObject();
361 if(functionObject != null){
380 "A NumberVisualDependency can only have 1 dependee!" <<
381 std::endl << std::endl);
384 if(functionIndex != -1){
389 *(dependees.begin()), dependents, showIf, functionObject));
419 void convertSpecialVisualAttributes(
465 void convertSpecialValidatorAttributes(
479 static const std::string valuesAndValidatorsTag =
"ValuesAndValidators";
480 return valuesAndValidatorsTag;
490 static const std::string& getPairTag(){
491 static const std::string pairTag =
"Pair";
496 static const std::string& getValueAttributeName(){
497 static const std::string valueAttributeName =
"value";
498 return valueAttributeName;
502 static const std::string& getValidatorIdAttributeName(){
503 static const std::string validatorIDAttributeName =
"validatorId";
504 return validatorIDAttributeName;
508 static const std::string& getDefaultValidatorIdAttributeName(){
509 static const std::string defaultValidatorIdAttributeName =
510 "defaultValidatorId";
511 return defaultValidatorIdAttributeName;
542 void convertSpecialValidatorAttributes(
562 static const std::string& getFalseValidatorIdAttributeName(){
563 static const std::string falseValidatorIdAttributeName =
565 return falseValidatorIdAttributeName;
569 static const std::string& getTrueValidatorIdAttributeName(){
570 static const std::string trueValidatorIdAttributeName =
572 return trueValidatorIdAttributeName;
625 static const std::string rangesAndValidatorsTag =
"RangesAndValidators";
626 return rangesAndValidatorsTag;
637 static const std::string& getPairTag(){
638 static const std::string pairTag =
"Pair";
643 static const std::string& getMinAttributeName(){
644 static const std::string minAttributeName =
"min";
645 return minAttributeName;
649 static const std::string& getMaxAttributeName(){
650 static const std::string maxAttributeName =
"max";
651 return maxAttributeName;
656 static const std::string& getValidatorIdAttributeName(){
657 static const std::string validatorIdAttributeName =
"validatorId";
658 return validatorIdAttributeName;
662 static const std::string& getDefaultValidatorIdAttributeName(){
663 static const std::string defaultValidatorIdAttributeName =
664 "defaultValidatorId";
665 return defaultValidatorIdAttributeName;
682 XMLObject rangesAndValidatorsTag(getRangesAndValidatorsTag());
684 castedDependency->getRangeToValidatorMap();
687 it = castedDependency->getRangeToValidatorMap().begin();
688 it != castedDependency->getRangeToValidatorMap().end();
691 T min = it->first.first;
692 T max = it->first.second;
693 if(validatorIDsMap.
find(it->second) == validatorIDsMap.
end()){
694 validatorIDsMap.
insert(it->second);
697 validatorIDsMap.
find(it->second)->second;
701 pairTag.
addAttribute(getValidatorIdAttributeName(), validatorID);
702 rangesAndValidatorsTag.addChild(pairTag);
704 xmlObj.
addChild(rangesAndValidatorsTag);
706 castedDependency->getDefaultValidator();
708 if(validatorIDsMap.
find(defaultValidator) == validatorIDsMap.
end()){
709 validatorIDsMap.
insert(defaultValidator);
712 getDefaultValidatorIdAttributeName(),
713 validatorIDsMap.
find(defaultValidator)->second);
729 "Error: All RangeValidatorDependencies must have a " <<
730 getRangesAndValidatorsTag() <<
" tag!" << std::endl << std::endl);
736 for(
int i = 0 ; i < rangesAndValidatorsTag.
numChildren(); ++i){
738 T min = child.
getRequired<T>(getMinAttributeName());
739 T max = child.
getRequired<T>(getMaxAttributeName());
742 getValidatorIdAttributeName());
745 validatorIDsMap.
find(currentID) == validatorIDsMap.
end(),
747 "Could not find validator in given ValidatorIDsMap! " << std::endl <<
750 validatorIDsMap.
find(currentID)->second;
752 rangesAndValidators.insert(
758 if(xmlObj.
hasAttribute(getDefaultValidatorIdAttributeName())){
761 getDefaultValidatorIdAttributeName());
763 validatorIDsMap.
find(defaultValiID) == validatorIDsMap.
end(),
765 "Could not find a validator (for the default validator) " <<
766 "corresponding to the ID " << defaultValiID <<
767 " in the given validatorIDsMap!" << std::endl << std::endl);
768 defaultValidator = validatorIDsMap.
find(defaultValiID)->second;
772 dependee, dependents, rangesAndValidators, defaultValidator));
779 template<
class DependeeType,
class DependentType>
831 template<
class DependeeType,
class DependentType>
842 "A ArrayModifierDependency can only have 1 dependee!" <<
843 std::endl << std::endl);
846 if(functionIndex != -1){
851 getConcreteDependency(*(dependees.begin()), dependents, functionObject);
854 template<
class DependeeType,
class DependentType>
866 castedDep->getFunctionObject();
867 if(functionObject != null){
889 template<
class DependeeType,
class DependentType>
906 template<
class DependeeType,
class DependentType>
915 dependee, dependents,
function));
935 template<
class DependeeType,
class DependentType>
953 template<
class DependeeType,
class DependentType>
962 dependee, dependents,
function));
981 template<
class DependeeType,
class DependentType>
999 template<
class DependeeType,
class DependentType>
1008 dependee, dependents,
function));
1016 #endif // TEUCHOS_STANDARDDEPENDENCYXMLCONVERTERS_HPP
const_iterator find(int id) const
Retrieves and iterator to a validator and id based on the id given.
A dependency in which the number of rows in a parameter with a TwoDArray depends on the value of anot...
Maps Validators to integers.
std::set< RCP< const ParameterEntry >, RCPConstComp > ConstParameterEntryList
A list of dependents.
static XMLObject convertFunctionObject(RCP< const FunctionObject > function)
Given a FunctionObject, converts the FunctionObject to XML.
A dependency in which the number of rows in a parameter with a TwoDArray depends on the value of anot...
An xml converter for BoolVisualDepenencies.
std::set< RCP< ParameterEntry >, RCPComp > ParameterEntryList
A list of Dependees.
bool nonnull(const std::shared_ptr< T > &p)
Returns true if p.get()!=NULL.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Macro for throwing an exception with breakpointing to ease debugging.
A class for converting TwoDRowDependencies to and from XML.
void addChild(const XMLObject &child)
Add a child node to the node.
void convertSpecialVisualAttributes(RCP< const VisualDependency > dependency, XMLObject &xmlObj, const XMLParameterListWriter::EntryIDsMap &entryIDsMap) const
void convertSpecialValidatorAttributes(RCP< const ValidatorDependency > dependency, XMLObject &xmlObj, ValidatortoIDMap &validatorIDsMap) const
static const std::string & getValuesAndValidatorsTag()
An xml converter for RangeValidatorDependencies.
virtual RCP< ArrayModifierDependency< DependeeType, DependentType > > getConcreteDependency(RCP< const ParameterEntry > dependee, Dependency::ParameterEntryList dependents, RCP< const SimpleFunctionObject< DependeeType > > function) const
Obtains a concrete ArrayModifierDependency given a dependee, dependtns, and a funciton object...
A RangeValidatorDependency says the following about the relationship between two parameters: Dependen...
A database for FunctionObjectXMLConverters.
An xml converter for BoolValidatorDependencies.
static const std::string & getStringValuesTagName()
Gets the StringValues Tag.
virtual RCP< ArrayModifierDependency< DependeeType, DependentType > > getConcreteDependency(RCP< const ParameterEntry > dependee, Dependency::ParameterEntryList dependents, RCP< const SimpleFunctionObject< DependeeType > > function) const
Obtains a concrete ArrayModifierDependency given a dependee, dependtns, and a funciton object...
An xml converter for StringVisualDepenencies.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated.
An xml converter for ValidatorDependencies.
An abstract base class for converting Dependencies to and from XML.
Representation of an XML data tree. XMLObject is a ref-counted handle to a XMLObjectImplem object...
A converter used to convert ArrayModifierDepdencies to and from xml.
A collection of Exceptions thrown when converting Dependencys to and from XML.
std::map< RCP< const ParameterEntry >, ParameterEntry::ParameterEntryID, RCPConstComp > EntryIDsMap
const_iterator end() const
Returns a const_reference to the end of the map.
Thrown when the rangesAndValidators tag for the RangeValidatorDepencyConverter can't be found...
A NumberArrayLengthDependency says the following about the relationship between two parameters: The l...
static const std::string & getXMLTagName()
Returns the name of the XML tag used to indicate a funciton object.
virtual RCP< ArrayModifierDependency< DependeeType, DependentType > > getConcreteDependency(RCP< const ParameterEntry > dependee, Dependency::ParameterEntryList dependents, RCP< const SimpleFunctionObject< DependeeType > > function) const
Obtains a concrete ArrayModifierDependency given a dependee, dependtns, and a funciton object...
A class for mapping validators to integers.
void insert(RCP< const ParameterEntryValidator > toInsert)
inserts an IDValidatorPair into the map.
void addAttribute(const std::string &name, T value)
Lookup whether or not Doubles are allowed.
A class for converting TwoDColDependencies to and from XML.
const_iterator end() const
Returns a const_reference to the end of the map.
A collection of standard dependencies.
void convertDependency(const RCP< const Dependency > dependency, XMLObject &xmlObj, const XMLParameterListWriter::EntryIDsMap &entryIDsMap, ValidatortoIDMap &validatorIDsMap) const
Converts back and forth between XML and Dependencies.
An xml converter for StringValidatorDependencies.
An xml converter for ConditionVisualDependencies.
const_iterator find(const RCP< const ParameterEntryValidator > validator) const
Returns an iterator to the validator and id specified by the validator.
RCP< Dependency > convertXML(const XMLObject &xmlObj, const Dependency::ConstParameterEntryList dependees, const Dependency::ParameterEntryList dependets, const XMLParameterListReader::EntryIDsMap &entryIDsMap, const IDtoValidatorMap &validatorIDsMap) const
std::map< ParameterEntry::ParameterEntryID, RCP< ParameterEntry > > EntryIDsMap
Convenience typedef.
Thrown when a Dependency has too many dependees specified in its XML.
int numChildren() const
Return the number of child nodes owned by this node.
An abstract base class for all dependencies which modify the dimensional attributes of an Array param...
static const std::string & getRangesAndValidatorsTag()
An xml converter for NumberVisualDependencies.
Smart reference counting pointer class for automatic garbage collection.
int findFirstChild(std::string tagName) const
Returns the index of the first child found with the given tag name. Returns -1 if no child is found...
static RCP< FunctionObject > convertXML(const XMLObject &xmlObject)
Given an XMLObject, converts the XMLObject to a FunctionObject.
std::pair< Range, RCP< const ParameterEntryValidator > > RangeValidatorPair
Convenience typedef.
const XMLObject & getChild(int i) const
Return the i-th child node.
bool hasAttribute(const std::string &name) const
Find out if the current node has an attribute of the specified name.
Thrown when converting a dependency that has validaotrs to and from XML. This excetpion indicates tha...
std::pair< T, T > Range
Convenience typedef.
An xml converter for NumberArrayLengthDependencies.
virtual RCP< ArrayModifierDependency< DependeeType, DependentType > > getConcreteDependency(RCP< const ParameterEntry > dependee, Dependency::ParameterEntryList dependents, RCP< const SimpleFunctionObject< DependeeType > > function) const =0
Obtains a concrete ArrayModifierDependency given a dependee, dependtns, and a funciton object...
A number visual dependency says the following about the relationship between two elements in a Parame...
const std::string & getRequired(const std::string &name) const
Get an attribute, throwing an std::exception if it is not found.
std::map< Range, RCP< const ParameterEntryValidator > > RangeToValidatorMap
Convenience typedef.
An xml converter for VisualDepenencies.