Teuchos_StringToIntMap.cpp
Go to the documentation of this file.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 #include "Teuchos_StringToIntMap.hpp"
00030
00031 namespace Teuchos {
00032
00033 StringToIntMap::StringToIntMap(
00034 const std::string& defaultGroupName_in, int n, const char* strings[]
00035 ) : defaultGroupName_(defaultGroupName_in)
00036 {
00037 typedef map_t::value_type val_t;
00038 for( int i = 0; i < n; ++i ) {
00039 const bool unique = map_.insert( val_t( strings[i], i ) ).second;
00040 TEST_FOR_EXCEPTION(
00041 !unique, AlreadyExists
00042 ,"Teuchos::StringToIntMap::StringToIntMap(...): "
00043 << "Error, the std::string \"" << strings[i] << "\" is a duplicate for "
00044 << defaultGroupName_ );
00045 }
00046 }
00047
00048 int StringToIntMap::get( const std::string& option, const std::string& groupName ) const
00049 {
00050 map_t::const_iterator itr = map_.find( option );
00051 TEST_FOR_EXCEPTION(
00052 itr == map_.end(), DoesNotExist
00053 ,"Teuchos::StringToIntMap:::get(\""<<option<<"\",...): "
00054 << "Error, the std::string \"" << option << "\" is not recongnised for "
00055 << ( groupName.length() ? groupName : defaultGroupName_ )
00056 << "; valid selections include " << this->validSelections() << "."
00057 );
00058 return (*itr).second;
00059 }
00060
00061
00062
00063 std::string StringToIntMap::validSelections() const
00064 {
00065 std::ostringstream oss;
00066 oss << "{";
00067 map_t::const_iterator itr = map_.begin();
00068 for( int i = 0; itr != map_.end(); ++itr, ++i ) {
00069 if(i > 0)
00070 oss << ",";
00071 oss << "\""<<itr->first<<"\":"<<itr->second;
00072 }
00073 oss << "}";
00074 return oss.str();
00075 }
00076
00077 }