CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
reco::parser::AnyMethodArgumentFixup Class Reference

#include <AnyMethodArgument.h>

Inheritance diagram for reco::parser::AnyMethodArgumentFixup:

Public Member Functions

 AnyMethodArgumentFixup (const edm::TypeWithDict &type)
 
template<typename I >
std::enable_if< std::is_integral< I >::value, std::pair< AnyMethodArgument, int > >::type operator() (const I &t) const
 
template<typename F >
std::enable_if< std::is_floating_point< F >::value, std::pair< AnyMethodArgument, int > >::type operator() (const F &t) const
 
std::pair< AnyMethodArgument, int > operator() (const std::string &t) const
 

Private Member Functions

std::pair< AnyMethodArgument, int > doInt (int t) const
 
template<typename From , typename To >
std::pair< AnyMethodArgument, int > retOk_ (const From &f, int cast) const
 

Private Attributes

edm::TypeWithDict dataType_
 

Detailed Description

Definition at line 51 of file AnyMethodArgument.h.

Constructor & Destructor Documentation

reco::parser::AnyMethodArgumentFixup::AnyMethodArgumentFixup ( const edm::TypeWithDict type)
inline

Definition at line 98 of file AnyMethodArgument.h.

98 : dataType_(type) {}

Member Function Documentation

std::pair<AnyMethodArgument, int> reco::parser::AnyMethodArgumentFixup::doInt ( int  t) const
inlineprivate

Definition at line 60 of file AnyMethodArgument.h.

References OrderedSet::t.

60  {
61  if (dataType_ == typeid(int8_t)) {
62  return retOk_<int, int8_t>(t, 0);
63  }
64  if (dataType_ == typeid(uint8_t)) {
65  return retOk_<int, uint8_t>(t, 0);
66  }
67  if (dataType_ == typeid(int16_t)) {
68  return retOk_<int, int16_t>(t, 0);
69  }
70  if (dataType_ == typeid(uint16_t)) {
71  return retOk_<int, uint16_t>(t, 0);
72  }
73  if (dataType_ == typeid(int32_t)) {
74  return retOk_<int, int32_t>(t, 0);
75  }
76  if (dataType_ == typeid(uint32_t)) {
77  return retOk_<int, uint32_t>(t, 0);
78  }
79  if (dataType_ == typeid(int64_t)) {
80  return retOk_<int, int64_t>(t, 0);
81  }
82  if (dataType_ == typeid(uint64_t)) {
83  return retOk_<int, uint64_t>(t, 0);
84  }
85  if (dataType_ == typeid(unsigned long)) {
86  return retOk_<int, unsigned long>(t, 0);
87  } // harmless if unsigned long matches another type
88  if (dataType_ == typeid(double)) {
89  return retOk_<int, double>(t, 1);
90  }
91  if (dataType_ == typeid(float)) {
92  return retOk_<int, float>(t, 1);
93  }
94  return std::pair<AnyMethodArgument, int>(t, -1);
95  }
unsigned long long uint64_t
Definition: Time.h:13
template<typename I >
std::enable_if<std::is_integral<I>::value, std::pair<AnyMethodArgument, int> >::type reco::parser::AnyMethodArgumentFixup::operator() ( const I &  t) const
inline

Definition at line 102 of file AnyMethodArgument.h.

103  {
104  return doInt(t);
105  }
std::pair< AnyMethodArgument, int > doInt(int t) const
template<typename F >
std::enable_if<std::is_floating_point<F>::value, std::pair<AnyMethodArgument, int> >::type reco::parser::AnyMethodArgumentFixup::operator() ( const F t) const
inline

Definition at line 108 of file AnyMethodArgument.h.

References OrderedSet::t.

109  {
110  if (dataType_ == typeid(double)) {
111  return retOk_<F, double>(t, 0);
112  }
113  if (dataType_ == typeid(float)) {
114  return retOk_<F, float>(t, 0);
115  }
116  return std::pair<AnyMethodArgument, int>(t, -1);
117  }
std::pair<AnyMethodArgument, int> reco::parser::AnyMethodArgumentFixup::operator() ( const std::string &  t) const
inline

Definition at line 119 of file AnyMethodArgument.h.

References edm::TypeWithDict::dataMemberSize(), Exception, edm::TypeWithDict::isEnum(), edm::TypeWithDict::name(), AlCaHLTBitMon_QueryRunRegistry::string, edm::TypeWithDict::stringToEnumValue(), and OrderedSet::t.

119  {
120  if (dataType_.isEnum()) {
121  if (dataType_.dataMemberSize() == 0) {
122  throw parser::Exception(t.c_str())
123  << "Enumerator '" << dataType_.name() << "' has no keys.\nPerhaps the dictionary is missing?\n";
124  }
125  int ival = dataType_.stringToEnumValue(t);
126  // std::cerr << " value is = " << dataType_.stringToEnumValue(t) << std::endl;
127  return std::pair<AnyMethodArgument, int>(ival, 1);
128  }
129  if (dataType_ == typeid(std::string)) {
130  return std::pair<AnyMethodArgument, int>(t, 0);
131  }
132  return std::pair<AnyMethodArgument, int>(t, -1);
133  }
bool isEnum() const
size_t dataMemberSize() const
std::string name() const
int stringToEnumValue(std::string const &) const
template<typename From , typename To >
std::pair<AnyMethodArgument, int> reco::parser::AnyMethodArgumentFixup::retOk_ ( const From &  f,
int  cast 
) const
inlineprivate

Definition at line 55 of file AnyMethodArgument.h.

55  {
56  return std::pair<AnyMethodArgument, int>(AnyMethodArgument(static_cast<To>(f)), cast);
57  }
boost::mpl::if_< matches_another_integral_type< unsigned long >, boost::variant< int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, double, float, std::string >, boost::variant< int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, unsigned long, double, float, std::string > >::type AnyMethodArgument
double f[11][100]

Member Data Documentation

edm::TypeWithDict reco::parser::AnyMethodArgumentFixup::dataType_
private

Definition at line 53 of file AnyMethodArgument.h.