00001 #ifndef PhysicsTools_Utilities_MethodInvoker_h 00002 #define PhysicsTools_Utilities_MethodInvoker_h 00003 #include "Reflex/Object.h" 00004 #include "Reflex/Member.h" 00005 #include "PhysicsTools/Utilities/src/AnyMethodArgument.h" 00006 #include <vector> 00007 00008 namespace reco { 00009 namespace parser { 00010 00011 struct MethodInvoker { 00012 explicit MethodInvoker(const ROOT::Reflex::Member & method, 00013 const std::vector<AnyMethodArgument> & ints = std::vector<AnyMethodArgument>() ); 00014 MethodInvoker(const MethodInvoker &); 00016 std::pair<ROOT::Reflex::Object,bool> value(const ROOT::Reflex::Object & o) const; 00017 const ROOT::Reflex::Member & method() const { return method_; } 00018 MethodInvoker & operator=(const MethodInvoker &); 00019 private: 00020 ROOT::Reflex::Member method_; 00021 std::vector<AnyMethodArgument> ints_; // already fixed to the correct type 00022 std::vector<void*> args_; 00023 bool isFunction_; 00024 void setArgs(); 00025 }; 00026 } 00027 } 00028 00029 #endif