1 /* 2 * This source file is part of MyGUI. For the latest info, see http://mygui.info/ 3 * Distributed under the MIT License 4 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT) 5 */ 6 7 #ifndef MYGUI_PLUGIN_H_ 8 #define MYGUI_PLUGIN_H_ 9 10 #include "MyGUI_Prerequest.h" 11 #include <string> 12 13 namespace MyGUI 14 { 15 16 /*! \brief Base plugin class 17 */ 18 class MYGUI_EXPORT IPlugin 19 { 20 public: ~IPlugin()21 virtual ~IPlugin() { } 22 23 /*! Get the name of the plugin. 24 @remarks An implementation must be supplied for this method to uniquely 25 identify the plugin 26 */ 27 virtual const std::string& getName() const = 0; 28 29 /*! Perform the plugin initial installation sequence 30 */ 31 virtual void install() = 0; 32 33 /*! Perform any tasks the plugin needs to perform on full system 34 initialisation. 35 */ 36 virtual void initialize() = 0; 37 38 /*! Perform any tasks the plugin needs to perform when the system is shut down 39 */ 40 virtual void shutdown() = 0; 41 42 /*! Perform the final plugin uninstallation sequence 43 */ 44 virtual void uninstall() = 0; 45 }; 46 47 } // namespace MyGUI 48 49 #endif // MYGUI_PLUGIN_H_ 50