00001
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef RtcFactory_h
00031 #define RtcFactory_h
00032
00033 #include "rtm/RtcModuleProfile.h"
00034
00035
00036 namespace RTM
00037 {
00038 class RtcBase;
00039 class RtcManager;
00059 class EXPORTS RtcFactoryBase
00060 {
00061 public:
00081 RtcFactoryBase(RtcModuleProfile profile)
00082 : m_Profile(profile), m_Number(-1) {};
00083
00105 virtual RtcBase* create(RtcManager* mgr) = 0;
00106
00128 virtual void destroy(RtcBase* comp) = 0;
00129
00145 virtual RtcModuleProfile& profile() {return m_Profile;};
00146
00162 virtual int& number() {return m_Number;};
00163
00164 protected:
00172 RtcModuleProfile m_Profile;
00180 int m_Number;
00181 };
00182
00183
00184
00204 class EXPORTS RtcFactoryCXX
00205 : public RtcFactoryBase
00206 {
00207 public:
00236 RtcFactoryCXX(RtcModuleProfile profile,
00237 RtcNewFunc new_func,
00238 RtcDeleteFunc delete_func);
00239
00259 virtual RtcBase* create(RtcManager* mgr);
00260
00280 virtual void destroy(RtcBase* comp);
00281
00282 protected:
00290 RtcNewFunc m_New;
00291
00299 RtcDeleteFunc m_Delete;
00300 };
00301 };
00302
00303
00304 #endif // RtcFactory_h