Pothos  0.3.0-ga8f2d4e2
The Pothos dataflow programming software suite
 All Classes Namespaces Files Functions Variables Typedefs Friends Macros
CallRegistry.hpp
Go to the documentation of this file.
1 
11 #pragma once
12 #include <Pothos/Config.hpp>
14 #include <string>
15 
16 namespace Pothos {
17 
21 class POTHOS_API CallRegistry
22 {
23 public:
24 
26  virtual ~CallRegistry(void);
27 
32  template <typename ReturnType, typename ClassType, typename InstanceType>
33  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)());
34 
39  template <typename ReturnType, typename ClassType, typename InstanceType>
40  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)() const);
41 
46  template <typename A0, typename ReturnType, typename ClassType, typename InstanceType>
47  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0));
48 
53  template <typename A0, typename ReturnType, typename ClassType, typename InstanceType>
54  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0) const);
55 
60  template <typename A0, typename A1, typename ReturnType, typename ClassType, typename InstanceType>
61  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1));
62 
67  template <typename A0, typename A1, typename ReturnType, typename ClassType, typename InstanceType>
68  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1) const);
69 
74  template <typename A0, typename A1, typename A2, typename ReturnType, typename ClassType, typename InstanceType>
75  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1, A2));
76 
81  template <typename A0, typename A1, typename A2, typename ReturnType, typename ClassType, typename InstanceType>
82  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1, A2) const);
83 
88  template <typename A0, typename A1, typename A2, typename A3, typename ReturnType, typename ClassType, typename InstanceType>
89  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1, A2, A3));
90 
95  template <typename A0, typename A1, typename A2, typename A3, typename ReturnType, typename ClassType, typename InstanceType>
96  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1, A2, A3) const);
97 
102  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename ReturnType, typename ClassType, typename InstanceType>
103  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1, A2, A3, A4));
104 
109  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename ReturnType, typename ClassType, typename InstanceType>
110  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1, A2, A3, A4) const);
111 
116  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename ReturnType, typename ClassType, typename InstanceType>
117  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1, A2, A3, A4, A5));
118 
123  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename ReturnType, typename ClassType, typename InstanceType>
124  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1, A2, A3, A4, A5) const);
125 
130  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename ReturnType, typename ClassType, typename InstanceType>
131  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1, A2, A3, A4, A5, A6));
132 
137  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename ReturnType, typename ClassType, typename InstanceType>
138  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1, A2, A3, A4, A5, A6) const);
139 
144  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename ReturnType, typename ClassType, typename InstanceType>
145  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1, A2, A3, A4, A5, A6, A7));
146 
151  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename ReturnType, typename ClassType, typename InstanceType>
152  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1, A2, A3, A4, A5, A6, A7) const);
153 
158  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename ReturnType, typename ClassType, typename InstanceType>
159  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1, A2, A3, A4, A5, A6, A7, A8));
160 
165  template <typename A0, typename A1, typename A2, typename A3, typename A4, typename A5, typename A6, typename A7, typename A8, typename ReturnType, typename ClassType, typename InstanceType>
166  void registerCall(InstanceType *instance, const std::string &name, ReturnType(ClassType::*method)(A0, A1, A2, A3, A4, A5, A6, A7, A8) const);
167 
172  virtual void registerCallable(const std::string &name, const Callable &call) = 0;
173 };
174 
175 } //namespace Pothos
#define POTHOS_API
Definition: Config.hpp:41