Teuchos Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Teuchos_StandardDependencyXMLConverters.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Teuchos: Common Tools Package
4 //
5 // Copyright 2004 NTESS and the Teuchos contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef TEUCHOS_STANDARDDEPENDENCYXMLCONVERTERS_HPP
11 #define TEUCHOS_STANDARDDEPENDENCYXMLCONVERTERS_HPP
12 
22 
23 
24 namespace Teuchos {
25 
26 
30 
31 public:
32 
35 
46  virtual void convertSpecialVisualAttributes(
47  RCP<const VisualDependency> dependency,
48  XMLObject& xmlObj,
49  const XMLParameterListWriter::EntryIDsMap& entryIDsMap) const = 0;
50 
62  virtual RCP<VisualDependency> convertSpecialVisualAttributes(
63  const XMLObject& xmlObj,
65  const Dependency::ParameterEntryList dependets,
66  bool showIf,
67  const XMLParameterListReader::EntryIDsMap& entryIDsMap) const = 0;
68 
70 
73 
75  RCP<Dependency> convertXML(
76  const XMLObject& xmlObj,
78  const Dependency::ParameterEntryList dependets,
79  const XMLParameterListReader::EntryIDsMap& entryIDsMap,
80  const IDtoValidatorMap& validatorIDsMap) const;
81 
83  void convertDependency(
84  const RCP<const Dependency> dependency,
85  XMLObject& xmlObj,
86  const XMLParameterListWriter::EntryIDsMap& entryIDsMap,
87  ValidatortoIDMap& validatorIDsMap) const;
88 
90 
91 private:
92 
95 
97  static const std::string& getShowIfAttributeName(){
98  static const std::string showIfAttributeName = "showIf";
99  return showIfAttributeName;
100  }
101 
103 
104 };
105 
109 
110 public:
111 
114 
125  virtual void convertSpecialValidatorAttributes(
127  XMLObject& xmlObj,
128  ValidatortoIDMap& validatorIDsMap) const = 0;
129 
140  virtual RCP<ValidatorDependency> convertSpecialValidatorAttributes(
141  const XMLObject& xmlObj,
142  RCP<const ParameterEntry> dependee,
143  const Dependency::ParameterEntryList dependents,
144  const IDtoValidatorMap& validatorIDsMap) const = 0;
145 
147 
150 
152  RCP<Dependency> convertXML(
153  const XMLObject& xmlObj,
154  const Dependency::ConstParameterEntryList dependees,
155  const Dependency::ParameterEntryList dependets,
156  const XMLParameterListReader::EntryIDsMap& entryIDsMap,
157  const IDtoValidatorMap& validatorIDsMap) const;
158 
160  void convertDependency(
161  const RCP<const Dependency> dependency,
162  XMLObject& xmlObj,
163  const XMLParameterListWriter::EntryIDsMap& entryIDsMap,
164  ValidatortoIDMap& validatorIDsMap) const;
165 
167 
168 };
169 
189 
190 public:
191 
194 
196  void convertSpecialVisualAttributes(
197  RCP<const VisualDependency> dependency,
198  XMLObject& xmlObj,
199  const XMLParameterListWriter::EntryIDsMap& entryIDsMap) const;
200 
202  RCP<VisualDependency> convertSpecialVisualAttributes(
203  const XMLObject& xmlObj,
204  const Dependency::ConstParameterEntryList dependees,
205  const Dependency::ParameterEntryList dependets,
206  bool showIf,
207  const XMLParameterListReader::EntryIDsMap& entryIDsMap) const;
208 
210  static const std::string& getStringValuesTagName(){
211  static const std::string stringValuesTagName = "StringValues";
212  return stringValuesTagName;
213  }
214 
216 
217 private:
218 
221 
223  static const std::string& getStringTagName(){
224  static const std::string stringTagName = "String";
225  return stringTagName;
226  }
227 
229  static const std::string& getValueAttributeName(){
230  static const std::string valueAttributeName = "value";
231  return valueAttributeName;
232  }
233 
235 
236 };
237 
252 
253 public:
254 
257 
259  void convertSpecialVisualAttributes(
260  RCP<const VisualDependency> dependency,
261  XMLObject& xmlObj,
262  const XMLParameterListWriter::EntryIDsMap& entryIDsMap) const;
263 
265  RCP<VisualDependency> convertSpecialVisualAttributes(
266  const XMLObject& xmlObj,
267  const Dependency::ConstParameterEntryList dependees,
268  const Dependency::ParameterEntryList dependets,
269  bool showIf,
270  const XMLParameterListReader::EntryIDsMap& entryIDsMap) const;
271 
273 
274 };
275 
292 template<class T>
294 
295 public:
296 
299 
302  RCP<const VisualDependency> dependency,
303  XMLObject& xmlObj,
304  const XMLParameterListWriter::EntryIDsMap& entryIDsMap) const;
305 
308  const XMLObject& xmlObj,
309  const Dependency::ConstParameterEntryList dependees,
310  const Dependency::ParameterEntryList dependets,
311  bool showIf,
312  const XMLParameterListReader::EntryIDsMap& entryIDsMap) const;
313 
315 
316 };
317 
318 template<class T>
320  RCP<const VisualDependency> dependency,
321  XMLObject& xmlObj,
322  const XMLParameterListWriter::EntryIDsMap& /* entryIDsMap */) const
323 {
324  RCP<const NumberVisualDependency<T> > castedDependency =
325  rcp_dynamic_cast<const NumberVisualDependency<T> >(dependency);
326  RCP<const SimpleFunctionObject<T> > functionObject =
327  castedDependency->getFunctionObject();
328 
329  if(functionObject != null){
330  XMLObject functionXML =
332  xmlObj.addChild(functionXML);
333  }
334 
335 }
336 
337 template<class T>
340  const XMLObject& xmlObj,
341  const Dependency::ConstParameterEntryList dependees,
342  const Dependency::ParameterEntryList dependents,
343  bool showIf,
344  const XMLParameterListReader::EntryIDsMap& /* entryIDsMap */) const
345 {
346  TEUCHOS_TEST_FOR_EXCEPTION(dependees.size() > 1,
348  "A NumberVisualDependency can only have 1 dependee!" <<
349  std::endl << std::endl);
350  int functionIndex = xmlObj.findFirstChild(FunctionObject::getXMLTagName());
351  RCP<SimpleFunctionObject<T> > functionObject = null;
352  if(functionIndex != -1){
353  functionObject = rcp_dynamic_cast<SimpleFunctionObject<T> >(
354  FunctionObjectXMLConverterDB::convertXML(xmlObj.getChild(functionIndex)));
355  }
356  return rcp(new NumberVisualDependency<T>(
357  *(dependees.begin()), dependents, showIf, functionObject));
358 
359 }
360 
379 {
380 
381 public:
382 
385 
387  void convertSpecialVisualAttributes(
388  RCP<const VisualDependency> dependency,
389  XMLObject& xmlObj,
390  const XMLParameterListWriter::EntryIDsMap& entryIDsMap) const;
391 
393  RCP<VisualDependency> convertSpecialVisualAttributes(
394  const XMLObject& xmlObj,
395  const Dependency::ConstParameterEntryList dependees,
396  const Dependency::ParameterEntryList dependets,
397  bool showIf,
398  const XMLParameterListReader::EntryIDsMap& entryIDsMap) const;
399 
401 
402 };
403 
404 
426 
427 public:
428 
431 
433  void convertSpecialValidatorAttributes(
435  XMLObject& xmlObj,
436  ValidatortoIDMap& validatorIDsMap) const;
437 
439  RCP<ValidatorDependency> convertSpecialValidatorAttributes(
440  const XMLObject& xmlObj,
441  RCP<const ParameterEntry> dependee,
442  const Dependency::ParameterEntryList dependents,
443  const IDtoValidatorMap& validatorIDsMap) const;
444 
446  static const std::string& getValuesAndValidatorsTag(){
447  static const std::string valuesAndValidatorsTag = "ValuesAndValidators";
448  return valuesAndValidatorsTag;
449  }
450 
452 
453 private:
456 
458  static const std::string& getPairTag(){
459  static const std::string pairTag = "Pair";
460  return pairTag;
461  }
462 
464  static const std::string& getValueAttributeName(){
465  static const std::string valueAttributeName = "value";
466  return valueAttributeName;
467  }
468 
470  static const std::string& getValidatorIdAttributeName(){
471  static const std::string validatorIDAttributeName = "validatorId";
472  return validatorIDAttributeName;
473  }
474 
476  static const std::string& getDefaultValidatorIdAttributeName(){
477  static const std::string defaultValidatorIdAttributeName =
478  "defaultValidatorId";
479  return defaultValidatorIdAttributeName;
480  }
481 
483 
484 };
485 
503 
504 public:
505 
508 
510  void convertSpecialValidatorAttributes(
512  XMLObject& xmlObj,
513  ValidatortoIDMap& validatorIDsMap) const;
514 
516  RCP<ValidatorDependency> convertSpecialValidatorAttributes(
517  const XMLObject& xmlObj,
518  RCP<const ParameterEntry> dependee,
519  const Dependency::ParameterEntryList dependents,
520  const IDtoValidatorMap& validatorIDsMap) const;
521 
523 
524 private:
525 
528 
530  static const std::string& getFalseValidatorIdAttributeName(){
531  static const std::string falseValidatorIdAttributeName =
532  "falseValidatorId";
533  return falseValidatorIdAttributeName;
534  }
535 
537  static const std::string& getTrueValidatorIdAttributeName(){
538  static const std::string trueValidatorIdAttributeName =
539  "trueValidatorId";
540  return trueValidatorIdAttributeName;
541  }
542 
544 
545 };
546 
569 template<class T>
572 
573 public:
574 
577 
581  XMLObject& xmlObj,
582  ValidatortoIDMap& validatorIDsMap) const;
583 
586  const XMLObject& xmlObj,
587  RCP<const ParameterEntry> dependee,
588  const Dependency::ParameterEntryList dependents,
589  const IDtoValidatorMap& validatorIDsMap) const;
590 
592  static const std::string& getRangesAndValidatorsTag(){
593  static const std::string rangesAndValidatorsTag = "RangesAndValidators";
594  return rangesAndValidatorsTag;
595  }
596 
598 
599 private:
602 
603 
605  static const std::string& getPairTag(){
606  static const std::string pairTag = "Pair";
607  return pairTag;
608  }
609 
611  static const std::string& getMinAttributeName(){
612  static const std::string minAttributeName = "min";
613  return minAttributeName;
614  }
615 
617  static const std::string& getMaxAttributeName(){
618  static const std::string maxAttributeName = "max";
619  return maxAttributeName;
620  }
621 
622 
624  static const std::string& getValidatorIdAttributeName(){
625  static const std::string validatorIdAttributeName = "validatorId";
626  return validatorIdAttributeName;
627  }
628 
630  static const std::string& getDefaultValidatorIdAttributeName(){
631  static const std::string defaultValidatorIdAttributeName =
632  "defaultValidatorId";
633  return defaultValidatorIdAttributeName;
634  }
635 
637 
638 };
639 
640 template<class T>
641 void
644  XMLObject& xmlObj,
645  ValidatortoIDMap& validatorIDsMap) const
646 {
647  RCP<const RangeValidatorDependency<T> > castedDependency =
648  rcp_dynamic_cast<const RangeValidatorDependency<T> >(dependency, true);
649 
650  XMLObject rangesAndValidatorsTag(getRangesAndValidatorsTag());
651 
652  castedDependency->getRangeToValidatorMap();
653  for(
655  it = castedDependency->getRangeToValidatorMap().begin();
656  it != castedDependency->getRangeToValidatorMap().end();
657  ++it)
658  {
659  T min = it->first.first;
660  T max = it->first.second;
661  if(validatorIDsMap.find(it->second) == validatorIDsMap.end()){
662  validatorIDsMap.insert(it->second);
663  }
665  validatorIDsMap.find(it->second)->second;
666  XMLObject pairTag(getPairTag());
667  pairTag.addAttribute(getMinAttributeName(), min);
668  pairTag.addAttribute(getMaxAttributeName(), max);
669  pairTag.addAttribute(getValidatorIdAttributeName(), validatorID);
670  rangesAndValidatorsTag.addChild(pairTag);
671  }
672  xmlObj.addChild(rangesAndValidatorsTag);
673  RCP<const ParameterEntryValidator> defaultValidator =
674  castedDependency->getDefaultValidator();
675  if(nonnull(defaultValidator)){
676  if(validatorIDsMap.find(defaultValidator) == validatorIDsMap.end()){
677  validatorIDsMap.insert(defaultValidator);
678  }
679  xmlObj.addAttribute(
680  getDefaultValidatorIdAttributeName(),
681  validatorIDsMap.find(defaultValidator)->second);
682  }
683 }
684 
685 template<class T>
688  const XMLObject& xmlObj,
689  RCP<const ParameterEntry> dependee,
690  const Dependency::ParameterEntryList dependents,
691  const IDtoValidatorMap& validatorIDsMap) const
692 {
693 
694  int result = xmlObj.findFirstChild(getRangesAndValidatorsTag());
695  TEUCHOS_TEST_FOR_EXCEPTION(result == -1,
697  "Error: All RangeValidatorDependencies must have a " <<
698  getRangesAndValidatorsTag() << " tag!" << std::endl << std::endl);
699 
700  XMLObject rangesAndValidatorsTag = xmlObj.getChild(result);
701 
703  rangesAndValidators;
704  for(int i = 0 ; i < rangesAndValidatorsTag.numChildren(); ++i){
705  XMLObject child = rangesAndValidatorsTag.getChild(i);
706  T min = child.getRequired<T>(getMinAttributeName());
707  T max = child.getRequired<T>(getMaxAttributeName());
710  getValidatorIdAttributeName());
711 
713  validatorIDsMap.find(currentID) == validatorIDsMap.end(),
715  "Could not find validator in given ValidatorIDsMap! " << std::endl <<
716  std::endl);
717  RCP<ParameterEntryValidator> validator =
718  validatorIDsMap.find(currentID)->second;
719 
720  rangesAndValidators.insert(
722  typename RangeValidatorDependency<T>::Range(min, max), validator));
723  }
724 
725  RCP<ParameterEntryValidator> defaultValidator = null;
726  if(xmlObj.hasAttribute(getDefaultValidatorIdAttributeName())){
729  getDefaultValidatorIdAttributeName());
731  validatorIDsMap.find(defaultValiID) == validatorIDsMap.end(),
733  "Could not find a validator (for the default validator) " <<
734  "corresponding to the ID " << defaultValiID <<
735  " in the given validatorIDsMap!" << std::endl << std::endl);
736  defaultValidator = validatorIDsMap.find(defaultValiID)->second;
737  }
738 
739  return rcp(new RangeValidatorDependency<T>(
740  dependee, dependents, rangesAndValidators, defaultValidator));
741 }
742 
747 template<class DependeeType, class DependentType>
749 
750 public:
751 
754 
757  const XMLObject& xmlObj,
758  const Dependency::ConstParameterEntryList dependees,
759  const Dependency::ParameterEntryList dependets,
760  const XMLParameterListReader::EntryIDsMap& entryIDsMap,
761  const IDtoValidatorMap& validatorIDsMap) const;
762 
764  void convertDependency(
765  const RCP<const Dependency> dependency,
766  XMLObject& xmlObj,
767  const XMLParameterListWriter::EntryIDsMap& entryIDsMap,
768  ValidatortoIDMap& validatorIDsMap) const;
769 
771 
772 protected:
773 
793  RCP<const ParameterEntry> dependee,
795  RCP<const SimpleFunctionObject<DependeeType> > function) const = 0;
796 
797 };
798 
799 template<class DependeeType, class DependentType>
802  const XMLObject& xmlObj,
803  const Dependency::ConstParameterEntryList dependees,
804  const Dependency::ParameterEntryList dependents,
805  const XMLParameterListReader::EntryIDsMap& /* entryIDsMap */,
806  const IDtoValidatorMap& /* validatorIDsMap */) const
807 {
808  TEUCHOS_TEST_FOR_EXCEPTION(dependees.size() > 1,
810  "A ArrayModifierDependency can only have 1 dependee!" <<
811  std::endl << std::endl);
812  RCP<SimpleFunctionObject<DependeeType> > functionObject = null;
813  int functionIndex = xmlObj.findFirstChild(FunctionObject::getXMLTagName());
814  if(functionIndex != -1){
815  functionObject = rcp_dynamic_cast<SimpleFunctionObject<DependeeType> >(
816  FunctionObjectXMLConverterDB::convertXML(xmlObj.getChild(functionIndex)));
817  }
818  return
819  getConcreteDependency(*(dependees.begin()), dependents, functionObject);
820 }
821 
822 template<class DependeeType, class DependentType>
823 void
825  const RCP<const Dependency> dependency,
826  XMLObject& xmlObj,
827  const XMLParameterListWriter::EntryIDsMap& /* entryIDsMap */,
828  ValidatortoIDMap& /* validatorIDsMap */) const
829 {
832  dependency);
834  castedDep->getFunctionObject();
835  if(functionObject != null){
837  functionObject);
838  xmlObj.addChild(functionXML);
839  }
840 }
841 
842 
857 template<class DependeeType, class DependentType>
859  public ArrayModifierDependencyXMLConverter<DependeeType, DependentType>{
860 
861 protected:
862 
867  RCP<const ParameterEntry> dependee,
869  RCP<const SimpleFunctionObject<DependeeType> > function) const;
871 
872 };
873 
874 template<class DependeeType, class DependentType>
877  RCP<const ParameterEntry> dependee,
879  RCP<const SimpleFunctionObject<DependeeType> > function) const
880 {
881 return rcp(
883  dependee, dependents, function));
884 }
885 
886 
903 template<class DependeeType, class DependentType>
905  public ArrayModifierDependencyXMLConverter<DependeeType, DependentType>
906 {
907 
908 protected:
909 
914  RCP<const ParameterEntry> dependee,
916  RCP<const SimpleFunctionObject<DependeeType> > function) const;
918 
919 };
920 
921 template<class DependeeType, class DependentType>
924  RCP<const ParameterEntry> dependee,
926  RCP<const SimpleFunctionObject<DependeeType> > function) const
927 {
928 return rcp(
930  dependee, dependents, function));
931 }
932 
949 template<class DependeeType, class DependentType>
951  public ArrayModifierDependencyXMLConverter<DependeeType, DependentType>
952 {
953 
954 protected:
955 
960  RCP<const ParameterEntry> dependee,
962  RCP<const SimpleFunctionObject<DependeeType> > function) const;
964 
965 };
966 
967 template<class DependeeType, class DependentType>
970  RCP<const ParameterEntry> dependee,
972  RCP<const SimpleFunctionObject<DependeeType> > function) const
973 {
974 return rcp(
976  dependee, dependents, function));
977 }
978 
979 
980 
981 } // namespace Teuchos
982 
983 
984 #endif // TEUCHOS_STANDARDDEPENDENCYXMLCONVERTERS_HPP
static const std::string & getStringTagName()
Gets the String Tag.
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...
static const std::string & getValueAttributeName()
Gets the Value attribute name.
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
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.
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...
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated.
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&#39;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
#define TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT
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...
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.
static const std::string & getShowIfAttributeName()
Gets the name of the showif attribute.
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.