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
18typedef 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;
Main namespace for the entire cAudio library.