00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 #ifndef __COMMON_ADDON_H__ 00012 #define __COMMON_ADDON_H__ 00013 00014 #include <opc/common/addons_core/addon_manager.h> 00015 #include <opc/common/addons_core/addon_parameters.h> 00016 #include <opc/common/class_pointers.h> 00017 #include <opc/common/interface.h> 00018 00019 namespace Common 00020 { 00021 00022 class Addon : private Common::Interface 00023 { 00024 public: 00025 DEFINE_CLASS_POINTERS(Addon); 00026 00027 public: 00031 virtual void Initialize(AddonsManager& manager, const AddonParameters& parameters) = 0; 00032 00035 virtual void Stop() = 0; 00036 }; 00037 00038 // @brief factory of addon. 00039 class AddonFactory : private Common::Interface 00040 { 00041 public: 00042 DEFINE_CLASS_POINTERS(AddonFactory); 00043 00044 public: 00046 virtual Addon::UniquePtr CreateAddon() = 0; 00047 }; 00048 00049 } // namespace Common 00050 00051 #endif // __COMMON_ADDON_H__ 00052