00001
00005 #ifndef __SO3_PLUGIN_MANAGER_H__
00006 #define __SO3_PLUGIN_MANAGER_H__
00007
00008 #include "../SCOLBasic/SO3Prerequisites.h"
00009 #include "../SO3Utils/SO3Plugin.h"
00010 #include <Ogre.h>
00011
00012 namespace SO3
00013 {
00014
00017 class _SO3_Export SPluginManager : public Ogre::Singleton<SPluginManager>
00018 {
00019 public:
00020 protected:
00021 typedef std::map<std::string, SPlugin*, std::less<std::string> > SPluginList;
00022 SPluginList pluginList;
00023 private:
00024
00025 public:
00029 SPluginManager();
00030
00034 virtual ~SPluginManager();
00035
00039 SPlugin* Load(const std::string& fileName);
00040
00044 void Unload(SPlugin* loadedPlugin);
00045
00049 void Unload(const std::string& pluginName);
00050
00054 std::vector<std::string> GetPluginList();
00055
00059 static SPluginManager& getSingleton();
00060
00061
00062
00063
00064 static SPluginManager* getSingletonPtr();
00065 protected:
00066 private:
00067 };
00068
00069 }
00070
00071 #endif