15 #include "Reflex/Type.h"
16 #include "Reflex/Object.h"
20 #include <boost/bind.hpp>
92 boost::shared_ptr<FWParameterSetterBase>
95 static std::map<edm::TypeID,ROOT::Reflex::Type> s_paramToSetterMap;
97 std::map<edm::TypeID,ROOT::Reflex::Type>::iterator itFind = s_paramToSetterMap.find(paramType);
98 if( itFind == s_paramToSetterMap.end() ) {
101 fwLog(
fwlog::kError) <<
" the type "<<
typeid(*iParam).name()<<
" is not known to REFLEX" <<std::endl;
106 std::string
name = paramClass.Name();
112 if (name ==
"FWGenericParameter<bool>")
113 name =
"FWBoolParameterSetter";
114 else if (name ==
"FWGenericParameter<std::string>")
115 name =
"FWStringParameterSetter";
116 else if (name ==
"FWGenericParameter<std::basic_string<char> >")
117 name =
"FWStringParameterSetter";
118 else if (name ==
"FWGenericParameterWithRange<double>")
119 name =
"FWDoubleParameterSetter";
120 else if (name ==
"FWGenericParameterWithRange<long int>")
121 name =
"FWLongParameterSetter";
122 else if (name ==
"FWGenericParameterWithRange<long>")
123 name =
"FWLongParameterSetter";
133 s_paramToSetterMap[paramType]=setterClass;
134 itFind = s_paramToSetterMap.find(paramType);
139 ROOT::Reflex::Object setterObj = itFind->second.Construct();
144 ROOT::Reflex::Object castSetterObj = setterObj.CastObject(s_setterBaseType);
145 boost::shared_ptr<FWParameterSetterBase> ptr(reinterpret_cast<FWParameterSetterBase*>( castSetterObj.Address() ),
146 boost::bind(&ROOT::Reflex::Type::Destruct,itFind->second,setterObj.Address(),
true));
virtual void updateEditor()
void attach(FWParameterBase *, FWParameterSetterEditorBase *)
static boost::shared_ptr< FWParameterSetterBase > makeSetterFor(FWParameterBase *)
virtual void setEnabled(bool)
FWParameterSetterEditorBase * m_frame
virtual ~FWParameterSetterBase()