1
0
mirror of https://github.com/alliedmodders/metamod-source.git synced 2025-01-19 08:52:34 +01:00

Fix linking errors with some compilers when MM:S plugins call function in tier1 interface.h. (#34)

This commit is contained in:
Nicholas Hastings 2017-09-07 12:39:27 -04:00 committed by GitHub
parent 6f2938b46c
commit e770220590

View File

@ -39,6 +39,10 @@
#include <ISmmAPI.h> #include <ISmmAPI.h>
#include <ISmmPluginExt.h> #include <ISmmPluginExt.h>
#ifndef META_NO_HL2SDK
#include <tier1/interface.h>
#endif
class IServerPluginCallbacks; class IServerPluginCallbacks;
// Interface return status, binary-compatible with HL2SDK's IFACE_OK and IFACE_FAILED. // Interface return status, binary-compatible with HL2SDK's IFACE_OK and IFACE_FAILED.
@ -439,11 +443,8 @@ using namespace SourceMM;
* you should not pass a pointer to your plugin's * you should not pass a pointer to your plugin's
* singleton. * singleton.
*/ */
#define PLUGIN_EXPOSE(name, var) \ #ifdef META_NO_HL2SDK
ISmmAPI *g_SMAPI = NULL; \ #define PL_EXPOSURE_FUNC(name, var) \
ISmmPlugin *g_PLAPI = NULL; \
PluginId g_PLID = (PluginId)0; \
SourceHook::ISourceHook *g_SHPtr = NULL; \
SMM_API void *PL_EXPOSURE(const char *name, int *code) { \ SMM_API void *PL_EXPOSURE(const char *name, int *code) { \
if (name && !strcmp(name, METAMOD_PLAPI_NAME)) { \ if (name && !strcmp(name, METAMOD_PLAPI_NAME)) { \
return static_cast<void *>(&var); \ return static_cast<void *>(&var); \
@ -451,6 +452,21 @@ using namespace SourceMM;
return NULL; \ return NULL; \
} }
#else
// First param should be actual classname, not iface name, but we don't have that and it doesn't matter here.
#define PL_EXPOSURE_FUNC(name, var) EXPOSE_SINGLE_INTERFACE_GLOBALVAR(ISmmPlugin, ISmmPlugin, METAMOD_PLAPI_NAME, var);
#endif
#define PLUGIN_EXPOSE(name, var) \
ISmmAPI *g_SMAPI = NULL; \
ISmmPlugin *g_PLAPI = NULL; \
PluginId g_PLID = (PluginId)0; \
SourceHook::ISourceHook *g_SHPtr = NULL; \
PL_EXPOSURE_FUNC(name, var)
/** /**
* @brief This should be in one of your header files, if you wish * @brief This should be in one of your header files, if you wish