you can now see which plugin returned the iface

--HG--
extra : convert_revision : svn%3Ac2935e3e-5518-0410-8daf-afa5dab7d4e3/trunk%40140
This commit is contained in:
David Anderson 2005-10-20 14:52:49 +00:00
parent 2cabdcf3da
commit c1fb10cbf0
5 changed files with 18 additions and 9 deletions

View File

@ -136,8 +136,11 @@ void CSmmAPI::AddListener(ISmmPlugin *plugin, IMetamodListener *pListener)
pl->m_Events.push_back(pListener);
}
void *CSmmAPI::MetaFactory(const char *iface, int *_ret)
void *CSmmAPI::MetaFactory(const char *iface, int *_ret, PluginId *id)
{
if (id)
*id = 0;
if (!iface)
return NULL;
@ -170,6 +173,8 @@ void *CSmmAPI::MetaFactory(const char *iface, int *_ret)
{
if (_ret)
*_ret = ret;
if (id)
*id = pl->m_Id;
return val;
}
}

View File

@ -49,7 +49,7 @@ namespace SourceMM
virtual void GetApiVersions(int &major, int &minor, int &plvers, int &plmin);
virtual void GetShVersions(int &shvers, int &shimpl);
virtual void AddListener(ISmmPlugin *plugin, IMetamodListener *pListener);
virtual void *MetaFactory(const char *iface, int *ret);
virtual void *MetaFactory(const char *iface, int *ret, PluginId *id);
public:
bool CacheCmds();
private:

View File

@ -16,6 +16,8 @@
* @file IPluginManager.h
*/
typedef int PluginId;
#include "ISmmPlugin.h"
/**

View File

@ -68,8 +68,15 @@ public: //Added in 1.10 (1:0)
virtual void GetShVersions(int &shvers, int &shimpl) =0;
//Binds an event listener to your plugin
virtual void AddListener(ISmmPlugin *plugin, IMetamodListener *pListener) =0;
//Queries the metamod factory
virtual void *MetaFactory(const char *iface, int *ret) =0;
/**
* @brief Queries the metamod factory
*
* @param iface String containing interface name
* @param ret Optional pointer to store return status
* @param id Optional pointer to store id of plugin that overrode interface, 0 if none
* @return Returned pointer
*/
virtual void *MetaFactory(const char *iface, int *ret, PluginId *id) =0;
};

View File

@ -24,7 +24,6 @@
#define PLAPI_NAME "ISmmPlugin"
class ISmmAPI;
typedef int PluginId;
class ISmmPlugin
{
@ -224,10 +223,6 @@ public:
g_PLAPI = static_cast<ISmmPlugin *>(this); \
g_PLID = id;
#define FACTORY_RETURN(mres, value) \
g_SMAPI->SetLastMetaReturn(mres); \
return value;
#define META_LOG g_SMAPI->LogMsg
#define META_REGCMD(name) g_SMAPI->RegisterConCmdBase(g_PLAPI, name##_command)
#define META_REGCVAR(var) g_SMAPI->RegisterConCmdBase(g_PLAPI, var)