![]() |
![]() |
#include "FWCore/Utilities/interface/Exception.h"
#include "FWCore/Utilities/interface/MemberWithDict.h"
#include "FWCore/Utilities/interface/ObjectWithDict.h"
#include "FWCore/Utilities/interface/TypeWithDict.h"
#include <string>
#include <sstream>
#include <vector>
Go to the source code of this file.
Functions | |
template<class MyType > | |
int | StringToEnumValue (const std::string &enumName) |
template<class MyType > | |
std::vector< int > | StringToEnumValue (const std::vector< std::string > &enumNames) |
int StringToEnumValue | ( | const std::string & | enumName | ) |
Convert a string into the enum value it corresponds to. Example: int value = StringToEnumValue<EcalRecHit::Flags>("kGood");
Definition at line 27 of file StringToEnumValue.h.
References edm::TypeWithDict::dataMemberByName(), dtTPAnalyzer_cfg::dataType, Exception, edm::MemberWithDict::get(), and edm::MemberWithDict::typeOf().
{ edm::TypeWithDict dataType(typeid(MyType)); edm::MemberWithDict member = dataType.dataMemberByName(enumName); if (!member) { std::ostringstream err; err<<"StringToEnumValue Failure trying to convert " << enumName << " to int value"; throw cms::Exception("ConversionError",err.str()); } if (member.typeOf().typeInfo() != typeid(int)) { std::ostringstream err; err << "Type "<< member.typeOf().name() << " is not Enum"; throw cms::Exception("ConversionError",err.str()); } return member.get().objectCast<int>(); } //
std::vector<int> StringToEnumValue | ( | const std::vector< std::string > & | enumNames | ) |
Convert a vector<string> into a vector<int> with the enum values it corresponds to. Example:
std::vector<std::string> names; names.push_back("kWeird"); names.push_back("kGood");
std::vector<int> ints = StringToEnumValue<EcalRecHit::Flags>(names);
std::copy(ints.begin(), ints.end(), std::ostream_iterator<int>(std::cout, "-"));
Definition at line 71 of file StringToEnumValue.h.
References run_regression::ret, and AlCaHLTBitMon_QueryRunRegistry::string.
{ using std::vector; using std::string; vector<int> ret; vector<string>::const_iterator str=enumNames.begin(); for (;str!=enumNames.end();++str){ ret.push_back( StringToEnumValue<MyType>(*str)); } return ret; } //