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 #ifndef TEUCHOS_STRING_TO_INT_MAP_HPP
00030 #define TEUCHOS_STRING_TO_INT_MAP_HPP
00031
00032 #include "Teuchos_TestForException.hpp"
00033
00034 namespace Teuchos {
00035
00037
00083 class StringToIntMap {
00084 public:
00085
00087 class AlreadyExists : public std::logic_error
00088 {public: AlreadyExists(const std::string& what_arg) : std::logic_error(what_arg) {}};
00089
00091 class DoesNotExist : public std::logic_error
00092 {public: DoesNotExist(const std::string& what_arg) : std::logic_error(what_arg) {}};
00093
00095 StringToIntMap( const std::string& defaultGroupName, int n, const char* strings[] );
00096
00098 int get( const std::string& option, const std::string& groupName = "" ) const;
00099
00101 template<class EnumType>
00102 EnumType get( const std::string& option, const std::string& groupName = "" ) const;
00103
00105 const std::string& defaultGroupName() const;
00106
00107 private:
00108
00109 typedef std::map< std::string, int > map_t;
00110 std::string defaultGroupName_;
00111 map_t map_;
00112
00113 std::string validSelections() const;
00114
00115
00116 StringToIntMap();
00117
00118 };
00119
00120
00121
00122
00123 template<class EnumType>
00124 inline
00125 EnumType StringToIntMap::get( const std::string& option, const std::string& groupName ) const
00126 {
00127 return static_cast<EnumType>(get(option,groupName));
00128 }
00129
00130 inline
00131 const std::string& StringToIntMap::defaultGroupName() const
00132 {
00133 return defaultGroupName_;
00134 }
00135
00136 }
00137
00138 #endif // TEUCHOS_STRING_TO_INT_MAP_HPP