OpenRTM-aist  2.1.0
ECFactory.h
[詳解]
1 // -*- C++ -*-
20 #ifndef RTC_ECFACTORY_H
21 #define RTC_ECFACTORY_H
22 
24 #include <string>
25 
26 namespace RTC
27 {
28 
30  using ECDeleteFunc = void (*)(ExecutionContextBase*);
31 
51  template <class T_New>
53  {
54  return new T_New();
55  }
56 
76  template <class T_Delete>
78  {
79  delete ec;
80  }
81 
116  {
117  public:
133  virtual ~ECFactoryBase() = default;
134 
156  virtual const char* name() = 0;
157 
177  virtual ExecutionContextBase* create() = 0;
178 
198  virtual void destroy(ExecutionContextBase* comp) = 0;
199  protected:
200  };
201 
222  : public ECFactoryBase
223  {
224  public:
248  ECFactoryCXX(const char* name,
249  ECNewFunc new_func,
250  ECDeleteFunc delete_func);
251 
267  ~ECFactoryCXX() override;
268 
288  const char* name() override;
289 
310 
330  void destroy(ExecutionContextBase* ec) override;
331 
332  protected:
340  std::string m_name;
341 
350 
359  };
360 } // namespace RTC
361 #endif // RTC_ECFACTORY_H
ExecutionContext base class
ECFactoryBase 抽象クラス
Definition: ECFactory.h:116
virtual ExecutionContextBase * create()=0
ExecutionContext生成用純粋仮想関数
virtual const char * name()=0
生成対象ExecutionContext名称取得用純粋仮想関数
virtual ~ECFactoryBase()=default
仮想デストラクタ
virtual void destroy(ExecutionContextBase *comp)=0
ExecutionContext破棄用純粋仮想関数
ECFactoryCXX クラス
Definition: ECFactory.h:223
ECNewFunc m_New
対象ExecutionContext生成用関数
Definition: ECFactory.h:349
void destroy(ExecutionContextBase *ec) override
対象ExecutionContextインスタンスを破棄
ECFactoryCXX(const char *name, ECNewFunc new_func, ECDeleteFunc delete_func)
コンストラクタ
const char * name() override
生成対象ExecutionContext名称を取得
ECDeleteFunc m_Delete
対象ExecutionContext破棄用関数
Definition: ECFactory.h:358
ExecutionContextBase * create() override
生成対象ExecutionContextインスタンスを生成
std::string m_name
生成対象ExecutionContext名称
Definition: ECFactory.h:340
~ECFactoryCXX() override
仮想デストラクタ
ExecutionContext用基底クラス
Definition: ExecutionContextBase.h:366
RTコンポーネント
void ECDelete(ExecutionContextBase *ec)
ExecutionContext破棄用テンプレート関数
Definition: ECFactory.h:77
ExecutionContextBase * ECCreate()
ExecutionContext生成用テンプレート関数
Definition: ECFactory.h:52
ExecutionContextBase *(*)() ECNewFunc
Definition: ECFactory.h:29
void(*)(ExecutionContextBase *) ECDeleteFunc
Definition: ECFactory.h:30