7 #ifndef YARP_OS_IMPL_DISPATCHER_H
8 #define YARP_OS_IMPL_DISPATCHER_H
26 template <
class T,
class RET>
34 RET (T::*fn)(
int argc,
char* argv[]);
36 Entry(
const char* name, RET (T::*fn)(
int argc,
char* argv[])) :
48 std::map<std::string, Entry> action;
49 std::vector<std::string> names;
52 void add(
const char* name, RET (T::*fn)(
int argc,
char* argv[]))
55 action[std::string(name)] = e;
57 names.push_back(std::string(name));
60 RET
dispatch(T* owner,
const char* name,
int argc,
char* argv[])
62 std::string sname(name);
63 typename std::map<std::string, Entry>::const_iterator it = action.find(sname);
64 if (it != action.end()) {
65 return (owner->*(it->second.fn))(argc, argv);
const yarp::os::LogComponent & DISPATCHER()
Dispatch to named methods based on string input.
std::vector< std::string > getNames()
void add(const char *name, RET(T::*fn)(int argc, char *argv[]))
RET dispatch(T *owner, const char *name, int argc, char *argv[])
#define yCError(component,...)
#define YARP_DECLARE_LOG_COMPONENT(name)
The main, catch-all namespace for YARP.