8 #include "IPluginManager.h" 9 #include "IAudioPlugin.h" 10 #include "cSTLAllocator.h" 11 #include "cAudioString.h" 13 #ifdef CAUDIO_COMPILE_WITH_PLUGIN_SUPPORT 15 #ifdef CAUDIO_PLATFORM_WIN 18 typedef struct HINSTANCE__* hInstance;
20 # define DYNLIB_HANDLE hInstance 21 # define DYNLIB_LOAD( a ) LoadLibraryEx( a, NULL, LOAD_WITH_ALTERED_SEARCH_PATH ) 22 # define DYNLIB_GETSYM( a, b ) GetProcAddress( a, b ) 23 # define DYNLIB_UNLOAD( a ) !FreeLibrary( a ) 24 #elif defined(CAUDIO_PLATFORM_MAC) || defined(CAUDIO_PLATFORM_LINUX) 26 # define DYNLIB_HANDLE void* 27 # define DYNLIB_LOAD( a ) dlopen( a, RTLD_LAZY | RTLD_GLOBAL) 28 # define DYNLIB_GETSYM( a, b ) dlsym( a, b ) 29 # define DYNLIB_UNLOAD( a ) dlclose( a ) 34 class cPluginManager :
public IPluginManager
40 static cPluginManager* Instance()
42 static cPluginManager theInstance;
46 virtual bool installPlugin(IAudioPlugin* plugin,
const char* name);
47 virtual bool installPlugin(
const char* filename,
const char* name);
49 virtual bool checkForPlugin(
const char* name);
50 virtual IAudioPlugin* getPlugin(
const char* name);
51 virtual unsigned int getPluginCount();
52 cAudioVector<IAudioPlugin*>::Type getPluginList();
54 virtual void uninstallPlugin(IAudioPlugin* plugin);
55 virtual void uninstallPlugin(
const char* name);
57 void autoLoadPlugins();
59 cAudioString getError();
61 cAudioMap<cAudioString, IAudioPlugin*>::Type RegisteredPlugins;
62 typedef cAudioMap<cAudioString, IAudioPlugin*>::Type::iterator RegisteredPluginsIterator;
63 cAudioMap<IAudioPlugin*, DYNLIB_HANDLE>::Type DynamicallyLoadedPlugins;
64 typedef cAudioMap<IAudioPlugin*, DYNLIB_HANDLE>::Type::iterator DynamicallyLoadedPluginsIterator;
68 #endif //! CAUDIO_COMPILE_WITH_PLUGIN_SUPPORT Main namespace for the entire cAudio library.