00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef TEUCHOS_PARAMETER_ENTRY_VALIDATOR_H
00031 #define TEUCHOS_PARAMETER_ENTRY_VALIDATOR_H
00032
00033 #include "Teuchos_RCP.hpp"
00034 #include "Teuchos_Array.hpp"
00035
00036 namespace Teuchos {
00037
00038
00039 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00040 class ParameterEntry;
00041 #endif
00042
00043
00050 class ParameterEntryValidator {
00051 public:
00052
00054 virtual ~ParameterEntryValidator() {}
00055
00067 virtual void printDoc(
00068 std::string const& docString
00069 ,std::ostream & out
00070 ) const = 0;
00071
00080 virtual Teuchos::RCP<const Array<std::string> >
00081 validStringValues() const = 0;
00082
00094 virtual void validate(
00095 ParameterEntry const& entry,
00096 std::string const& paramName,
00097 std::string const& sublistName
00098 ) const = 0;
00099
00113 virtual void validateAndModify(
00114 std::string const& paramName,
00115 std::string const& sublistName,
00116 ParameterEntry * entry
00117 ) const
00118 {
00119 TEST_FOR_EXCEPT(0==entry);
00120 this->validate(*entry,paramName,sublistName);
00121 }
00122
00123 };
00124
00125
00126 }
00127
00128
00129 #endif // TEUCHOS_PARAMETER_ENTRY_VALIDATOR_H