00001 // -*- C++ -*- 00019 /* 00020 * $Log: RtcFactory.h,v $ 00021 * Revision 1.2 2005/05/16 06:06:30 n-ando 00022 * - RtcFactoryBase, RtcFactoryCXX classes were DLL exported for Windows port. 00023 * 00024 * Revision 1.1.1.1 2005/05/12 09:06:18 n-ando 00025 * Public release. 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