Add a versioned IPluginsListener and deprecate the non-versioned class.

This commit is contained in:
David Anderson
2015-11-01 00:23:33 -07:00
parent cb3f6df111
commit d674414cf0
2 changed files with 108 additions and 24 deletions
+33 -11
View File
@@ -38,7 +38,7 @@
#include <sp_vm_api.h>
#define SMINTERFACE_PLUGINSYSTEM_NAME "IPluginManager"
#define SMINTERFACE_PLUGINSYSTEM_VERSION 6
#define SMINTERFACE_PLUGINSYSTEM_VERSION 7
/** Context user slot 3 is used Core for holding an IPluginContext pointer. */
#define SM_CONTEXTVAR_USER 3
@@ -278,7 +278,7 @@ namespace SourceMod
/**
* @brief Listens for plugin-oriented events.
*/
class IPluginsListener
class IPluginsListener_V1
{
public:
// @brief This callback should not be used since plugins may be in
@@ -315,6 +315,14 @@ namespace SourceMod
}
};
// @brief Listens for plugin-oriented events. Extends the V1 listener class.
class IPluginsListener : public IPluginsListener_V1
{
public:
virtual unsigned int GetApiVersion() const {
return SMINTERFACE_PLUGINSYSTEM_VERSION;
}
};
/**
* @brief Manages the runtime loading and unloading of plugins.
@@ -380,6 +388,29 @@ namespace SourceMod
*/
virtual IPluginIterator *GetPluginIterator() =0;
/**
* @brief Adds a V1 plugin manager listener.
*
* @param listener Pointer to a listener.
*/
virtual void AddPluginsListener_V1(IPluginsListener_V1 *listener) =0;
/**
* @brief Removes a V1 plugin listener.
*
* @param listener Pointer to a listener.
*/
virtual void RemovePluginsListener_V1(IPluginsListener_V1 *listener) =0;
/**
* @brief Converts a Handle to an IPlugin if possible.
*
* @param handle Handle.
* @param err Error, set on failure (otherwise undefined).
* @return IPlugin pointer, or NULL on failure.
*/
virtual IPlugin *PluginFromHandle(Handle_t handle, HandleError *err) =0;
/**
* @brief Adds a plugin manager listener.
*
@@ -393,15 +424,6 @@ namespace SourceMod
* @param listener Pointer to a listener.
*/
virtual void RemovePluginsListener(IPluginsListener *listener) =0;
/**
* @brief Converts a Handle to an IPlugin if possible.
*
* @param handle Handle.
* @param err Error, set on failure (otherwise undefined).
* @return IPlugin pointer, or NULL on failure.
*/
virtual IPlugin *PluginFromHandle(Handle_t handle, HandleError *err) =0;
};
}