OpenRTM-aist  1.2.1
ECFactory.h
[詳解]
1 // -*- C++ -*-
20 #ifndef RTC_ECFACTORY_H
21 #define RTC_ECFACTORY_H
22 
24 #include <string>
25 
26 namespace RTC
27 {
28 
29  typedef ExecutionContextBase* (*ECNewFunc)();
30  typedef void (*ECDeleteFunc)(ExecutionContextBase* ec);
31 
51  template <class _New>
53  {
54  return new _New();
55  }
56 
76  template <class _Delete>
78  {
79  delete ec;
80  }
81 
116  {
117  public:
133  virtual ~ECFactoryBase(void){};
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(void);
268 
288  virtual const char* name();
289 
309  virtual ExecutionContextBase* create();
310 
330  virtual void destroy(ExecutionContextBase* comp);
331 
332  protected:
340  std::string m_name;
341 
350 
359  };
360 };
361 #endif // RTC_ECFACTORY_H
ECFactoryCXX クラス
Definition: ECFactory.h:221
ExecutionContextBase * ECCreate()
ExecutionContext生成用テンプレート関数
Definition: ECFactory.h:52
RTコンポーネント
virtual ~ECFactoryBase(void)
仮想デストラクタ
Definition: ECFactory.h:133
ExecutionContext用基底クラス
Definition: ExecutionContextBase.h:369
virtual ExecutionContextBase * create()=0
ExecutionContext生成用純粋仮想関数
ExecutionContext base class.
ECFactoryBase 抽象クラス
Definition: ECFactory.h:115
ECNewFunc m_New
対象ExecutionContext生成用関数
Definition: ECFactory.h:349
ECDeleteFunc m_Delete
対象ExecutionContext破棄用関数
Definition: ECFactory.h:358
virtual void destroy(ExecutionContextBase *comp)=0
ExecutionContext破棄用純粋仮想関数
ExecutionContextBase *(* ECNewFunc)()
Definition: ECFactory.h:29
virtual const char * name()=0
生成対象ExecutionContext名称取得用純粋仮想関数
void ECDelete(ExecutionContextBase *ec)
ExecutionContext破棄用テンプレート関数
Definition: ECFactory.h:77
void(* ECDeleteFunc)(ExecutionContextBase *ec)
Definition: ECFactory.h:30
std::string m_name
生成対象ExecutionContext名称
Definition: ECFactory.h:340