#ifndef IPLUGINMANAGER_H_INCLUDED #define IPLUGINMANAGER_H_INCLUDED #include "IAudioPlugin.h" #include "cAudioDefines.h" #ifdef CAUDIO_COMPILE_WITH_PLUGIN_SUPPORT namespace cAudio { //! Interface for the plugin capabilities of cAudio. class IPluginManager { public: IPluginManager() { } ~IPluginManager() { } //! Installs a plugin using a statically linked plugin implementation. /** \param plugin: Pointer to a plugin implementation to install. \param name: Optional name for the plugin. Pass NULL to have the plugin use its default name. \return True if plugin was installed successfully. */ virtual bool installPlugin(IAudioPlugin* plugin, const char* name = NULL) = 0; //! Installs a plugin from a dynamically linked library on your hard drive. /** \param filename: Path to the dll/so/dynlib on your hard drive. \param name: Optional name for the plugin. Pass NULL to have the plugin use its default name. \return True if plugin was installed successfully. */ virtual bool installPlugin(const char* filename, const char* name = NULL) = 0; //! Checks for the existance of a plugin with the supplied name. /** \param name: Name of the plugin to check for. */ virtual bool checkForPlugin(const char* name) = 0; //! Returns a plugin interface for a plugin with the supplied name. /** \param name: Name of the plugin to check return. \return A pointer to the plugin interface or NULL if it could not be found. */ virtual IAudioPlugin* getPlugin(const char* name) = 0; //! Returns the total number of installed plugins. virtual unsigned int getPluginCount() = 0; //! Removes a plugin installed via statically linked reference. /** \param plugin: Pointer to the plugin implementation to uninstall. */ virtual void uninstallPlugin(IAudioPlugin* plugin) = 0; //! Removes a plugin with the specified name. /** \param name: Name of the plugin to uninstall. */ virtual void uninstallPlugin(const char* name) = 0; }; //! Gets the interface to the plugin manager. /** Note: This is the only way to get access to the plugin capabilities of cAudio. \return A pointer to the manager. */ CAUDIO_API IPluginManager* getPluginManager(); }; #endif //! CAUDIO_COMPILE_WITH_PLUGIN_SUPPORT #endif //! IPLUGINMANAGER_H_INCLUDED