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