11 #ifndef ROOT_Math_IOptions
12 #define ROOT_Math_IOptions
36 virtual ~IOptions() {}
39 virtual IOptions * Clone()
const = 0;
44 void SetValue(
const char * name,
double val) { SetRealValue(name,val);}
45 void SetValue(
const char * name,
int val) { SetIntValue(name,val);}
46 void SetValue(
const char * name,
const char * val) { SetNamedValue(name,val);}
49 double RValue(
const char * name)
const {
51 bool ret = GetRealValue(name,val);
52 if (!ret ) MATH_ERROR_MSGVAL(
"IOptions::RValue",
" return 0 - real option not found",name);
56 int IValue(
const char * name)
const {
58 bool ret = GetIntValue(name,val);
59 if (!ret ) MATH_ERROR_MSGVAL(
"IOptions::IValue",
" return 0 - integer option not found",name);
63 std::string NamedValue(
const char * name)
const {
65 bool ret = GetNamedValue(name,val);
66 if (!ret ) MATH_ERROR_MSGVAL(
"IOptions::NamedValue",
" return empty string - named option not found",name);
73 bool GetValue(
const char * name, T & t)
const {
74 bool ret = DoGetValue(name, t);
83 virtual bool GetRealValue(
const char *,
double &)
const {
return false; }
85 virtual bool GetIntValue(
const char *,
int &)
const {
return false; }
87 virtual bool GetNamedValue(
const char *, std::string &)
const {
return false; }
90 virtual void SetRealValue(
const char * ,
double ) {MATH_ERROR_MSG(
"IOptions::SetRealValue",
"Invalid setter method called"); }
92 virtual void SetIntValue(
const char * ,
int ) {MATH_ERROR_MSG(
"IOptions::SetIntValue",
"Invalid setter method called"); }
94 virtual void SetNamedValue(
const char * ,
const char * ) {MATH_ERROR_MSG(
"IOptions::SetNamedValue",
"Invalid setter method called"); }
98 virtual void Print(std::ostream & = std::cout )
const {MATH_INFO_MSG(
"IOptions::Print",
"it is not implemented");}
103 bool DoGetValue(
const char *name,
double &val)
const {
return GetRealValue(name,val); }
105 bool DoGetValue(
const char *name,
int &val)
const {
return GetIntValue(name,val); }
107 bool DoGetValue(
const char *name, std::string &val)
const {
return GetNamedValue(name,val); }