diff --git a/extensions/bintools/AMBuilder b/extensions/bintools/AMBuilder
index d3f18d67..d2617618 100644
--- a/extensions/bintools/AMBuilder
+++ b/extensions/bintools/AMBuilder
@@ -16,7 +16,7 @@ binary.sources += [
'HookWrapper.cpp',
'jit_call.cpp',
'jit_hook.cpp',
- 'sdk/smsdk_ext.cpp'
+ '../../public/smsdk_ext.cpp'
]
SM.extensions += [builder.Add(binary)]
diff --git a/extensions/bintools/sdk/smsdk_ext.cpp b/extensions/bintools/sdk/smsdk_ext.cpp
deleted file mode 100644
index 14bc48e5..00000000
--- a/extensions/bintools/sdk/smsdk_ext.cpp
+++ /dev/null
@@ -1,498 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#include
-#include
-#include "smsdk_ext.h"
-
-/**
- * @file smsdk_ext.cpp
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-IExtension *myself = NULL; /**< Ourself */
-IShareSys *g_pShareSys = NULL; /**< Share system */
-IShareSys *sharesys = NULL; /**< Share system */
-ISourceMod *g_pSM = NULL; /**< SourceMod helpers */
-ISourceMod *smutils = NULL; /**< SourceMod helpers */
-
-#if defined SMEXT_ENABLE_FORWARDSYS
-IForwardManager *g_pForwards = NULL; /**< Forward system */
-IForwardManager *forwards = NULL; /**< Forward system */
-#endif
-#if defined SMEXT_ENABLE_HANDLESYS
-IHandleSys *g_pHandleSys = NULL; /**< Handle system */
-IHandleSys *handlesys = NULL; /**< Handle system */
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-IPlayerManager *playerhelpers = NULL; /**< Player helpers */
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-IDBManager *dbi = NULL; /**< DB Manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-IGameConfigManager *gameconfs = NULL; /**< Game config manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-IMemoryUtils *memutils = NULL;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMEHELPERS
-IGameHelpers *gamehelpers = NULL;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-ITimerSystem *timersys = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-IADTFactory *adtfactory = NULL;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-IThreader *threader = NULL;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-ILibrarySys *libsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-SourceMod::IPluginManager *plsys;
-#endif
-#if defined SMEXT_ENABLE_MENUS
-IMenuManager *menus = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-IAdminSystem *adminsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
-ITextParsers *textparsers = NULL;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-IUserMessages *usermsgs = NULL;
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-ITranslator *translator = NULL;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-SourceMod::IPluginManager *plsys;
-#endif
-#if defined SMEXT_ENABLE_MENUS
-IMenuManager *menus = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-IAdminSystem *adminsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
-ITextParsers *textparsers = NULL;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-IUserMessages *usermsgs = NULL;
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-ITranslator *translator = NULL;
-#endif
-
-/** Exports the main interface */
-PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
-{
- return g_pExtensionIface;
-}
-
-SDKExtension::SDKExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- m_SourceMMLoaded = false;
- m_WeAreUnloaded = false;
- m_WeGotPauseChange = false;
-#endif
-}
-
-bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late)
-{
- g_pShareSys = sharesys = sys;
- myself = me;
-
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-
- if (!m_SourceMMLoaded)
- {
- if (error)
- {
- snprintf(error, maxlength, "Metamod attach failed");
- }
- return false;
- }
-#endif
- SM_GET_IFACE(SOURCEMOD, g_pSM);
- smutils = g_pSM;
-#if defined SMEXT_ENABLE_HANDLESYS
- SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
- handlesys = g_pHandleSys;
-#endif
-#if defined SMEXT_ENABLE_FORWARDSYS
- SM_GET_IFACE(FORWARDMANAGER, g_pForwards);
- forwards = g_pForwards;
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
- SM_GET_IFACE(PLAYERMANAGER, playerhelpers);
-#endif
-#if defined SMEXT_ENABLE_DBMANAGER
- SM_GET_IFACE(DBI, dbi);
-#endif
-#if defined SMEXT_ENABLE_GAMECONF
- SM_GET_IFACE(GAMECONFIG, gameconfs);
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
- SM_GET_IFACE(MEMORYUTILS, memutils);
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
- SM_GET_IFACE(GAMEHELPERS, gamehelpers);
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
- SM_GET_IFACE(TIMERSYS, timersys);
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
- SM_GET_IFACE(ADTFACTORY, adtfactory);
-#endif
-#if defined SMEXT_ENABLE_THREADER
- SM_GET_IFACE(THREADER, threader);
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
- SM_GET_IFACE(LIBRARYSYS, libsys);
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
- SM_GET_IFACE(PLUGINSYSTEM, plsys);
-#endif
-#if defined SMEXT_ENABLE_MENUS
- SM_GET_IFACE(MENUMANAGER, menus);
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
- SM_GET_IFACE(ADMINSYS, adminsys);
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
- SM_GET_IFACE(TEXTPARSERS, textparsers);
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
- SM_GET_IFACE(USERMSGS, usermsgs);
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
- SM_GET_IFACE(TRANSLATOR, translator);
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
- SM_GET_IFACE(PLUGINSYSTEM, plsys);
-#endif
-#if defined SMEXT_ENABLE_MENUS
- SM_GET_IFACE(MENUMANAGER, menus);
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
- SM_GET_IFACE(ADMINSYS, adminsys);
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
- SM_GET_IFACE(TEXTPARSERS, textparsers);
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
- SM_GET_IFACE(USERMSGS, usermsgs);
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
- SM_GET_IFACE(TRANSLATOR, translator);
-#endif
-
- if (SDK_OnLoad(error, maxlength, late))
- {
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- return true;
- }
-
- return false;
-}
-
-bool SDKExtension::IsMetamodExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- return true;
-#else
- return false;
-#endif
-}
-
-void SDKExtension::OnExtensionPauseChange(bool state)
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeGotPauseChange = true;
-#endif
- SDK_OnPauseChange(state);
-}
-
-void SDKExtension::OnExtensionsAllLoaded()
-{
- SDK_OnAllLoaded();
-}
-
-void SDKExtension::OnExtensionUnload()
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- SDK_OnUnload();
-}
-
-const char *SDKExtension::GetExtensionAuthor()
-{
- return SMEXT_CONF_AUTHOR;
-}
-
-const char *SDKExtension::GetExtensionDateString()
-{
- return SMEXT_CONF_DATESTRING;
-}
-
-const char *SDKExtension::GetExtensionDescription()
-{
- return SMEXT_CONF_DESCRIPTION;
-}
-
-const char *SDKExtension::GetExtensionVerString()
-{
- return SMEXT_CONF_VERSION;
-}
-
-const char *SDKExtension::GetExtensionName()
-{
- return SMEXT_CONF_NAME;
-}
-
-const char *SDKExtension::GetExtensionTag()
-{
- return SMEXT_CONF_LOGTAG;
-}
-
-const char *SDKExtension::GetExtensionURL()
-{
- return SMEXT_CONF_URL;
-}
-
-bool SDKExtension::SDK_OnLoad(char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-void SDKExtension::SDK_OnUnload()
-{
-}
-
-void SDKExtension::SDK_OnPauseChange(bool paused)
-{
-}
-
-void SDKExtension::SDK_OnAllLoaded()
-{
-}
-
-#if defined SMEXT_CONF_METAMOD
-
-PluginId g_PLID = 0; /**< Metamod plugin ID */
-ISmmPlugin *g_PLAPI = NULL; /**< Metamod plugin API */
-SourceHook::ISourceHook *g_SHPtr = NULL; /**< SourceHook pointer */
-ISmmAPI *g_SMAPI = NULL; /**< SourceMM API pointer */
-
-IVEngineServer *engine = NULL; /**< IVEngineServer pointer */
-IServerGameDLL *gamedll = NULL; /**< IServerGameDLL pointer */
-
-/** Exposes the extension to Metamod */
-SMM_API void *PL_EXPOSURE(const char *name, int *code)
-{
-#if defined METAMOD_PLAPI_VERSION
- if (name && !strcmp(name, METAMOD_PLAPI_NAME))
-#else
- if (name && !strcmp(name, PLAPI_NAME))
-#endif
- {
- if (code)
- {
- *code = IFACE_OK;
- }
- return static_cast(g_pExtensionIface);
- }
-
- if (code)
- {
- *code = IFACE_FAILED;
- }
-
- return NULL;
-}
-
-bool SDKExtension::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
-{
- PLUGIN_SAVEVARS();
-
-#if !defined METAMOD_PLAPI_VERSION
- GET_V_IFACE_ANY(serverFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(engineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#else
- GET_V_IFACE_ANY(GetServerFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#endif
-
- m_SourceMMLoaded = true;
-
- return SDK_OnMetamodLoad(ismm, error, maxlen, late);
-}
-
-bool SDKExtension::Unload(char *error, size_t maxlen)
-{
- if (!m_WeAreUnloaded)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unloaded by SourceMod.");
- }
- return false;
- }
-
- return SDK_OnMetamodUnload(error, maxlen);
-}
-
-bool SDKExtension::Pause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be paused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(true, error, maxlen);
-}
-
-bool SDKExtension::Unpause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unpaused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(false, error, maxlen);
-}
-
-const char *SDKExtension::GetAuthor()
-{
- return GetExtensionAuthor();
-}
-
-const char *SDKExtension::GetDate()
-{
- return GetExtensionDateString();
-}
-
-const char *SDKExtension::GetDescription()
-{
- return GetExtensionDescription();
-}
-
-const char *SDKExtension::GetLicense()
-{
- return SMEXT_CONF_LICENSE;
-}
-
-const char *SDKExtension::GetLogTag()
-{
- return GetExtensionTag();
-}
-
-const char *SDKExtension::GetName()
-{
- return GetExtensionName();
-}
-
-const char *SDKExtension::GetURL()
-{
- return GetExtensionURL();
-}
-
-const char *SDKExtension::GetVersion()
-{
- return GetExtensionVerString();
-}
-
-bool SDKExtension::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodUnload(char *error, size_t maxlength)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength)
-{
- return true;
-}
-
-#endif
-
-/* Overload a few things to prevent libstdc++ linking */
-#if defined __linux__ || defined __APPLE__
-extern "C" void __cxa_pure_virtual(void)
-{
-}
-
-void *operator new(size_t size)
-{
- return malloc(size);
-}
-
-void *operator new[](size_t size)
-{
- return malloc(size);
-}
-
-void operator delete(void *ptr)
-{
- free(ptr);
-}
-
-void operator delete[](void * ptr)
-{
- free(ptr);
-}
-#endif
-
diff --git a/extensions/bintools/sdk/smsdk_ext.h b/extensions/bintools/sdk/smsdk_ext.h
deleted file mode 100644
index 115fc800..00000000
--- a/extensions/bintools/sdk/smsdk_ext.h
+++ /dev/null
@@ -1,333 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#ifndef _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-#define _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-
-/**
- * @file smsdk_ext.h
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-#include "smsdk_config.h"
-#include
-#include
-#include
-#include
-#include
-#if defined SMEXT_ENABLE_FORWARDSYS
-#include
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-#include
-#endif //SMEXT_ENABLE_PlAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-#include
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-#include
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
-#include
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-#include
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-#include
-#endif
-#if defined SMEXT_ENABLE_THREADER
-#include
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_MENUS
-#include
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
-#include
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-#include
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-#include
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-#include
-#include
-#endif
-
-using namespace SourceMod;
-using namespace SourcePawn;
-
-class SDKExtension :
-#if defined SMEXT_CONF_METAMOD
- public ISmmPlugin,
-#endif
- public IExtensionInterface
-{
-public:
- /** Constructor */
- SDKExtension();
-public:
- /**
- * @brief This is called after the initial loading sequence has been processed.
- *
- * @param error Error message buffer.
- * @param maxlength Size of error message buffer.
- * @param late Whether or not the module was loaded after map load.
- * @return True to succeed loading, false to fail.
- */
- virtual bool SDK_OnLoad(char *error, size_t maxlength, bool late);
-
- /**
- * @brief This is called right before the extension is unloaded.
- */
- virtual void SDK_OnUnload();
-
- /**
- * @brief This is called once all known extensions have been loaded.
- */
- virtual void SDK_OnAllLoaded();
-
- /**
- * @brief Called when the pause state is changed.
- */
- virtual void SDK_OnPauseChange(bool paused);
-
-#if defined SMEXT_CONF_METAMOD
- /**
- * @brief Called when Metamod is attached, before the extension version is called.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @param late Whether or not Metamod considers this a late load.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
-
- /**
- * @brief Called when Metamod is detaching, after the extension version is called.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodUnload(char *error, size_t maxlength);
-
- /**
- * @brief Called when Metamod's pause state is changing.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param paused Pause state being set.
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
-#endif
-
-public: //IExtensionInterface
- virtual bool OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late);
- virtual void OnExtensionUnload();
- virtual void OnExtensionsAllLoaded();
-
- /** Returns whether or not this is a Metamod-based extension */
- virtual bool IsMetamodExtension();
-
- /**
- * @brief Called when the pause state changes.
- *
- * @param state True if being paused, false if being unpaused.
- */
- virtual void OnExtensionPauseChange(bool state);
-
- /** Returns name */
- virtual const char *GetExtensionName();
- /** Returns URL */
- virtual const char *GetExtensionURL();
- /** Returns log tag */
- virtual const char *GetExtensionTag();
- /** Returns author */
- virtual const char *GetExtensionAuthor();
- /** Returns version string */
- virtual const char *GetExtensionVerString();
- /** Returns description string */
- virtual const char *GetExtensionDescription();
- /** Returns date string */
- virtual const char *GetExtensionDateString();
-#if defined SMEXT_CONF_METAMOD
-public: //ISmmPlugin
- /** Called when the extension is attached to Metamod. */
- virtual bool Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlength, bool late);
- /** Returns the author to MM */
- virtual const char *GetAuthor();
- /** Returns the name to MM */
- virtual const char *GetName();
- /** Returns the description to MM */
- virtual const char *GetDescription();
- /** Returns the URL to MM */
- virtual const char *GetURL();
- /** Returns the license to MM */
- virtual const char *GetLicense();
- /** Returns the version string to MM */
- virtual const char *GetVersion();
- /** Returns the date string to MM */
- virtual const char *GetDate();
- /** Returns the logtag to MM */
- virtual const char *GetLogTag();
- /** Called on unload */
- virtual bool Unload(char *error, size_t maxlength);
- /** Called on pause */
- virtual bool Pause(char *error, size_t maxlength);
- /** Called on unpause */
- virtual bool Unpause(char *error, size_t maxlength);
-private:
- bool m_SourceMMLoaded;
- bool m_WeAreUnloaded;
- bool m_WeGotPauseChange;
-#endif
-};
-
-extern SDKExtension *g_pExtensionIface;
-extern IExtension *myself;
-
-extern IShareSys *g_pShareSys;
-extern IShareSys *sharesys; /* Note: Newer name */
-extern ISourceMod *g_pSM;
-extern ISourceMod *smutils; /* Note: Newer name */
-
-/* Optional interfaces are below */
-#if defined SMEXT_ENABLE_FORWARDSYS
-extern IForwardManager *g_pForwards;
-extern IForwardManager *forwards; /* Note: Newer name */
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_HANDLESYS
-extern IHandleSys *g_pHandleSys;
-extern IHandleSys *handlesys; /* Note: Newer name */
-#endif //SMEXT_ENABLE_HANDLESYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-extern IPlayerManager *playerhelpers;
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-extern IDBManager *dbi;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-extern IGameConfigManager *gameconfs;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-extern IMemoryUtils *memutils;
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-extern IGameHelpers *gamehelpers;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-extern ITimerSystem *timersys;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-extern IADTFactory *adtfactory;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-extern IThreader *threader;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-extern ILibrarySys *libsys;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-extern SourceMod::IPluginManager *plsys;
-#endif
-#if defined SMEXT_ENABLE_MENUS
-extern IMenuManager *menus;
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-extern IAdminSystem *adminsys;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-extern IUserMessages *usermsgs;
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-extern ITranslator *translator;
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-PLUGIN_GLOBALVARS();
-extern IVEngineServer *engine;
-extern IServerGameDLL *gamedll;
-#endif
-
-/** Creates a SourceMod interface macro pair */
-#define SM_MKIFACE(name) SMINTERFACE_##name##_NAME, SMINTERFACE_##name##_VERSION
-/** Automates retrieving SourceMod interfaces */
-#define SM_GET_IFACE(prefix, addr) \
- if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-/** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */
-#define SM_GET_LATE_IFACE(prefix, addr) \
- g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)
-/** Validates a SourceMod interface pointer */
-#define SM_CHECK_IFACE(prefix, addr) \
- if (!addr) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-
-#endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
diff --git a/extensions/bintools/sdk/smsdk_config.h b/extensions/bintools/smsdk_config.h
similarity index 100%
rename from extensions/bintools/sdk/smsdk_config.h
rename to extensions/bintools/smsdk_config.h
diff --git a/extensions/clientprefs/AMBuilder b/extensions/clientprefs/AMBuilder
index d551f555..d7eac743 100644
--- a/extensions/clientprefs/AMBuilder
+++ b/extensions/clientprefs/AMBuilder
@@ -12,7 +12,7 @@ binary.sources += [
'menus.cpp',
'natives.cpp',
'query.cpp',
- 'sdk/smsdk_ext.cpp'
+ '../../public/smsdk_ext.cpp'
]
SM.extensions += [builder.Add(binary)]
diff --git a/extensions/clientprefs/sdk/smsdk_config.h b/extensions/clientprefs/smsdk_config.h
similarity index 100%
rename from extensions/clientprefs/sdk/smsdk_config.h
rename to extensions/clientprefs/smsdk_config.h
diff --git a/extensions/cstrike/AMBuilder b/extensions/cstrike/AMBuilder
index b85469f8..3ae695d4 100644
--- a/extensions/cstrike/AMBuilder
+++ b/extensions/cstrike/AMBuilder
@@ -14,8 +14,8 @@ for sdk_name in ['css', 'csgo']:
'timeleft.cpp',
'forwards.cpp',
'util_cstrike.cpp',
- 'sdk/smsdk_ext.cpp',
- 'CDetour/detours.cpp',
- 'asm/asm.c'
+ '../../public/smsdk_ext.cpp',
+ '../../public/CDetour/detours.cpp',
+ '../../public/asm/asm.c'
]
SM.extensions += [builder.Add(binary)]
diff --git a/extensions/cstrike/CDetour/detourhelpers.h b/extensions/cstrike/CDetour/detourhelpers.h
deleted file mode 100644
index 0d8a29f7..00000000
--- a/extensions/cstrike/CDetour/detourhelpers.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod
- * Copyright (C) 2004-2007 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id: detourhelpers.h 248 2008-08-27 00:56:22Z pred $
- */
-
-#ifndef _INCLUDE_SOURCEMOD_DETOURHELPERS_H_
-#define _INCLUDE_SOURCEMOD_DETOURHELPERS_H_
-
-#if defined PLATFORM_POSIX
-#include
-#ifndef PAGE_SIZE
-#define PAGE_SIZE 4096
-#endif
-#define ALIGN(ar) ((long)ar & ~(PAGE_SIZE-1))
-#define PAGE_EXECUTE_READWRITE PROT_READ|PROT_WRITE|PROT_EXEC
-#endif
-
-struct patch_t
-{
- patch_t()
- {
- patch[0] = 0;
- bytes = 0;
- }
- unsigned char patch[20];
- size_t bytes;
-};
-
-inline void ProtectMemory(void *addr, int length, int prot)
-{
-#if defined PLATFORM_POSIX
- void *addr2 = (void *)ALIGN(addr);
- mprotect(addr2, sysconf(_SC_PAGESIZE), prot);
-#elif defined PLATFORM_WINDOWS
- DWORD old_prot;
- VirtualProtect(addr, length, prot, &old_prot);
-#endif
-}
-
-inline void SetMemPatchable(void *address, size_t size)
-{
- ProtectMemory(address, (int)size, PAGE_EXECUTE_READWRITE);
-}
-
-inline void DoGatePatch(unsigned char *target, void *callback)
-{
- SetMemPatchable(target, 20);
-
- target[0] = 0xFF; /* JMP */
- target[1] = 0x25; /* MEM32 */
- *(void **)(&target[2]) = callback;
-}
-
-inline void ApplyPatch(void *address, int offset, const patch_t *patch, patch_t *restore)
-{
- ProtectMemory(address, 20, PAGE_EXECUTE_READWRITE);
-
- unsigned char *addr = (unsigned char *)address + offset;
- if (restore)
- {
- for (size_t i=0; ibytes; i++)
- {
- restore->patch[i] = addr[i];
- }
- restore->bytes = patch->bytes;
- }
-
- for (size_t i=0; ibytes; i++)
- {
- addr[i] = patch->patch[i];
- }
-}
-
-#endif //_INCLUDE_SOURCEMOD_DETOURHELPERS_H_
diff --git a/extensions/cstrike/CDetour/detours.cpp b/extensions/cstrike/CDetour/detours.cpp
deleted file mode 100644
index 71aba447..00000000
--- a/extensions/cstrike/CDetour/detours.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-/**
-* vim: set ts=4 :
-* =============================================================================
-* SourceMod
-* Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
-* =============================================================================
-*
-* This program is free software; you can redistribute it and/or modify it under
-* the terms of the GNU General Public License, version 3.0, as published by the
-* Free Software Foundation.
-*
-* This program is distributed in the hope that it will be useful, but WITHOUT
-* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-* details.
-*
-* You should have received a copy of the GNU General Public License along with
-* this program. If not, see .
-*
-* As a special exception, AlliedModders LLC gives you permission to link the
-* code of this program (as well as its derivative works) to "Half-Life 2," the
-* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
-* by the Valve Corporation. You must obey the GNU General Public License in
-* all respects for all other code used. Additionally, AlliedModders LLC grants
-* this exception to all derivative works. AlliedModders LLC defines further
-* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
-* or .
-*
-* Version: $Id: detours.cpp 248 2008-08-27 00:56:22Z pred $
-*/
-
-#include "detours.h"
-#include
-
-ISourcePawnEngine *CDetourManager::spengine = NULL;
-IGameConfig *CDetourManager::gameconf = NULL;
-
-void CDetourManager::Init(ISourcePawnEngine *spengine, IGameConfig *gameconf)
-{
- CDetourManager::spengine = spengine;
- CDetourManager::gameconf = gameconf;
-}
-
-CDetour *CDetourManager::CreateDetour(void *callbackfunction, void **trampoline, const char *signame)
-{
- CDetour *detour = new CDetour(callbackfunction, trampoline, signame);
- if (detour)
- {
- if (!detour->Init(spengine, gameconf))
- {
- delete detour;
- return NULL;
- }
-
- return detour;
- }
-
- return NULL;
-}
-
-CDetour::CDetour(void *callbackfunction, void **trampoline, const char *signame)
-{
- enabled = false;
- detoured = false;
- detour_address = NULL;
- detour_trampoline = NULL;
- this->signame = signame;
- this->detour_callback = callbackfunction;
- spengine = NULL;
- gameconf = NULL;
- this->trampoline = trampoline;
-}
-
-bool CDetour::Init(ISourcePawnEngine *spengine, IGameConfig *gameconf)
-{
- this->spengine = spengine;
- this->gameconf = gameconf;
-
- if (!CreateDetour())
- {
- enabled = false;
- return enabled;
- }
-
- enabled = true;
-
- return enabled;
-}
-
-void CDetour::Destroy()
-{
- DeleteDetour();
- delete this;
-}
-
-bool CDetour::IsEnabled()
-{
- return enabled;
-}
-
-bool CDetour::CreateDetour()
-{
- if (!gameconf->GetMemSig(signame, &detour_address))
- {
- g_pSM->LogError(myself, "Could not locate %s - Disabling detour", signame);
- return false;
- }
-
- if (!detour_address)
- {
- g_pSM->LogError(myself, "Sigscan for %s failed - Disabling detour to prevent crashes", signame);
- return false;
- }
-
- detour_restore.bytes = copy_bytes((unsigned char *)detour_address, NULL, OP_JMP_SIZE+1);
-
- /* First, save restore bits */
- for (size_t i=0; iAllocatePageMemory(CodeSize);
- spengine->SetReadWrite(wr.outbase);
- wr.outptr = wr.outbase;
- detour_trampoline = wr.outbase;
- goto jit_rewind;
- }
-
- spengine->SetReadExecute(wr.outbase);
-
- *trampoline = detour_trampoline;
-
- return true;
-}
-
-void CDetour::DeleteDetour()
-{
- if (detoured)
- {
- DisableDetour();
- }
-
- if (detour_trampoline)
- {
- /* Free the allocated trampoline memory */
- spengine->FreePageMemory(detour_trampoline);
- detour_trampoline = NULL;
- }
-}
-
-void CDetour::EnableDetour()
-{
- if (!detoured)
- {
- DoGatePatch((unsigned char *)detour_address, &detour_callback);
- detoured = true;
- }
-}
-
-void CDetour::DisableDetour()
-{
- if (detoured)
- {
- /* Remove the patch */
- ApplyPatch(detour_address, 0, &detour_restore, NULL);
- detoured = false;
- }
-}
diff --git a/extensions/cstrike/CDetour/detours.h b/extensions/cstrike/CDetour/detours.h
deleted file mode 100644
index e43b3ce0..00000000
--- a/extensions/cstrike/CDetour/detours.h
+++ /dev/null
@@ -1,241 +0,0 @@
-/**
-* vim: set ts=4 :
-* =============================================================================
-* SourceMod
-* Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
-* =============================================================================
-*
-* This program is free software; you can redistribute it and/or modify it under
-* the terms of the GNU General Public License, version 3.0, as published by the
-* Free Software Foundation.
-*
-* This program is distributed in the hope that it will be useful, but WITHOUT
-* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-* details.
-*
-* You should have received a copy of the GNU General Public License along with
-* this program. If not, see .
-*
-* As a special exception, AlliedModders LLC gives you permission to link the
-* code of this program (as well as its derivative works) to "Half-Life 2," the
-* "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
-* by the Valve Corporation. You must obey the GNU General Public License in
-* all respects for all other code used. Additionally, AlliedModders LLC grants
-* this exception to all derivative works. AlliedModders LLC defines further
-* exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
-* or .
-*
-* Version: $Id: detours.h 257 2008-09-23 03:12:13Z pred $
-*/
-
-#ifndef _INCLUDE_SOURCEMOD_DETOURS_H_
-#define _INCLUDE_SOURCEMOD_DETOURS_H_
-
-#include "extension.h"
-#include
-#include
-#include "detourhelpers.h"
-
-/**
- * CDetours class for SourceMod Extensions by pRED*
- * detourhelpers.h entirely stolen from CSS:DM and were written by BAILOPAN (I assume).
- * asm.h/c from devmaster.net (thanks cybermind) edited by pRED* to handle gcc -fPIC thunks correctly
- * Concept by Nephyrin Zey (http://www.doublezen.net/) and Windows Detour Library (http://research.microsoft.com/sn/detours/)
- * Member function pointer ideas by Don Clugston (http://www.codeproject.com/cpp/FastDelegate.asp)
- */
-
-#define DETOUR_MEMBER_CALL(name) (this->*name##_Actual)
-#define DETOUR_STATIC_CALL(name) (name##_Actual)
-
-#define DETOUR_DECL_STATIC0(name, ret) \
-ret (*name##_Actual)(void) = NULL; \
-ret name(void)
-
-#define DETOUR_DECL_STATIC1(name, ret, p1type, p1name) \
-ret (*name##_Actual)(p1type) = NULL; \
-ret name(p1type p1name)
-
-#define DETOUR_DECL_STATIC4(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name) \
-ret (*name##_Actual)(p1type, p2type, p3type, p4type) = NULL; \
-ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name)
-
-#define DETOUR_DECL_MEMBER0(name, ret) \
-class name##Class \
-{ \
-public: \
- ret name(); \
- static ret (name##Class::* name##_Actual)(void); \
-}; \
-ret (name##Class::* name##Class::name##_Actual)(void) = NULL; \
-ret name##Class::name()
-
-#define DETOUR_DECL_MEMBER1(name, ret, p1type, p1name) \
-class name##Class \
-{ \
-public: \
- ret name(p1type p1name); \
- static ret (name##Class::* name##_Actual)(p1type); \
-}; \
-ret (name##Class::* name##Class::name##_Actual)(p1type) = NULL; \
-ret name##Class::name(p1type p1name)
-
-#define DETOUR_DECL_MEMBER2(name, ret, p1type, p1name, p2type, p2name) \
-class name##Class \
-{ \
-public: \
- ret name(p1type p1name, p2type p2name); \
- static ret (name##Class::* name##_Actual)(p1type, p2type); \
-}; \
-ret (name##Class::* name##Class::name##_Actual)(p1type, p2type) = NULL; \
-ret name##Class::name(p1type p1name, p2type p2name)
-
-#define DETOUR_DECL_MEMBER3(name, ret, p1type, p1name, p2type, p2name, p3type, p3name) \
-class name##Class \
-{ \
-public: \
- ret name(p1type p1name, p2type p2name, p3type p3name); \
- static ret (name##Class::* name##_Actual)(p1type, p2type, p3type); \
-}; \
-ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type) = NULL; \
-ret name##Class::name(p1type p1name, p2type p2name, p3type p3name)
-
-#define DETOUR_DECL_MEMBER4(name, ret, p1type, p1name, p2type, p2name, p3type, p3name, p4type, p4name) \
-class name##Class \
-{ \
-public: \
- ret name(p1type p1name, p2type p2name, p3type p3name, p4type p4name); \
- static ret (name##Class::* name##_Actual)(p1type, p2type, p3type, p4type); \
-}; \
-ret (name##Class::* name##Class::name##_Actual)(p1type, p2type, p3type, p4type) = NULL; \
-ret name##Class::name(p1type p1name, p2type p2name, p3type p3name, p4type p4name)
-
-
-#define GET_MEMBER_CALLBACK(name) (void *)GetCodeAddress(&name##Class::name)
-#define GET_MEMBER_TRAMPOLINE(name) (void **)(&name##Class::name##_Actual)
-
-#define GET_STATIC_CALLBACK(name) (void *)&name
-#define GET_STATIC_TRAMPOLINE(name) (void **)&name##_Actual
-
-#define DETOUR_CREATE_MEMBER(name, gamedata) CDetourManager::CreateDetour(GET_MEMBER_CALLBACK(name), GET_MEMBER_TRAMPOLINE(name), gamedata);
-#define DETOUR_CREATE_STATIC(name, gamedata) CDetourManager::CreateDetour(GET_STATIC_CALLBACK(name), GET_STATIC_TRAMPOLINE(name), gamedata);
-
-
-class GenericClass {};
-typedef void (GenericClass::*VoidFunc)();
-
-inline void *GetCodeAddr(VoidFunc mfp)
-{
- return *(void **)&mfp;
-}
-
-/**
- * Converts a member function pointer to a void pointer.
- * This relies on the assumption that the code address lies at mfp+0
- * This is the case for both g++ and later MSVC versions on non virtual functions but may be different for other compilers
- * Based on research by Don Clugston : http://www.codeproject.com/cpp/FastDelegate.asp
- */
-#define GetCodeAddress(mfp) GetCodeAddr(reinterpret_cast(mfp))
-
-class CDetourManager;
-
-class CDetour
-{
-public:
-
- bool IsEnabled();
-
- /**
- * These would be somewhat self-explanatory I hope
- */
- void EnableDetour();
- void DisableDetour();
-
- void Destroy();
-
- friend class CDetourManager;
-
-protected:
- CDetour(void *callbackfunction, void **trampoline, const char *signame);
-
- bool Init(ISourcePawnEngine *spengine, IGameConfig *gameconf);
-private:
-
- /* These create/delete the allocated memory */
- bool CreateDetour();
- void DeleteDetour();
-
- bool enabled;
- bool detoured;
-
- patch_t detour_restore;
- /* Address of the detoured function */
- void *detour_address;
- /* Address of the allocated trampoline function */
- void *detour_trampoline;
- /* Address of the callback handler */
- void *detour_callback;
- /* The function pointer used to call our trampoline */
- void **trampoline;
-
- const char *signame;
- ISourcePawnEngine *spengine;
- IGameConfig *gameconf;
-};
-
-class CDetourManager
-{
-public:
-
- static void Init(ISourcePawnEngine *spengine, IGameConfig *gameconf);
-
- /**
- * Creates a new detour
- *
- * @param callbackfunction Void pointer to your detour callback function.
- * @param trampoline Address of the trampoline pointer
- * @param signame Section name containing a signature to fetch from the gamedata file.
- * @return A new CDetour pointer to control your detour.
- *
- * Example:
- *
- * CBaseServer::ConnectClient(netadr_s &, int, int, int, char const*, char const*, char const*, int)
- *
- * Define a new class with the required function and a member function pointer to the same type:
- *
- * class CBaseServerDetour
- * {
- * public:
- * bool ConnectClient(void *netaddr_s, int, int, int, char const*, char const*, char const*, int);
- * static bool (CBaseServerDetour::* ConnectClient_Actual)(void *netaddr_s, int, int, int, char const*, char const*, char const*, int);
- * }
- *
- * void *callbackfunc = GetCodeAddress(&CBaseServerDetour::ConnectClient);
- * void **trampoline = (void **)(&CBaseServerDetour::ConnectClient_Actual);
- *
- * Creation:
- * CDetourManager::CreateDetour(callbackfunc, trampoline, "ConnectClient");
- *
- * Usage:
- *
- * CBaseServerDetour::ConnectClient(void *netaddr_s, int, int, int, char const*, char const*, char const*, int)
- * {
- * //pre hook code
- * bool result = (this->*ConnectClient_Actual)(netaddr_s, rest of params);
- * //post hook code
- * return result;
- * }
- *
- * Note we changed the netadr_s reference into a void* to avoid needing to define the type
- */
- static CDetour *CreateDetour(void *callbackfunction, void **trampoline, const char *signame);
-
- friend class CBlocker;
- friend class CDetour;
-
-private:
- static ISourcePawnEngine *spengine;
- static IGameConfig *gameconf;
-};
-
-#endif // _INCLUDE_SOURCEMOD_DETOURS_H_
diff --git a/extensions/cstrike/sdk/smsdk_ext.cpp b/extensions/cstrike/sdk/smsdk_ext.cpp
deleted file mode 100644
index 6404a919..00000000
--- a/extensions/cstrike/sdk/smsdk_ext.cpp
+++ /dev/null
@@ -1,462 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#include
-#include
-#include "smsdk_ext.h"
-
-/**
- * @file smsdk_ext.cpp
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-IExtension *myself = NULL; /**< Ourself */
-IShareSys *g_pShareSys = NULL; /**< Share system */
-IShareSys *sharesys = NULL; /**< Share system */
-ISourceMod *g_pSM = NULL; /**< SourceMod helpers */
-ISourceMod *smutils = NULL; /**< SourceMod helpers */
-
-#if defined SMEXT_ENABLE_FORWARDSYS
-IForwardManager *g_pForwards = NULL; /**< Forward system */
-IForwardManager *forwards = NULL; /**< Forward system */
-#endif
-#if defined SMEXT_ENABLE_HANDLESYS
-IHandleSys *g_pHandleSys = NULL; /**< Handle system */
-IHandleSys *handlesys = NULL; /**< Handle system */
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-IPlayerManager *playerhelpers = NULL; /**< Player helpers */
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-IDBManager *dbi = NULL; /**< DB Manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-IGameConfigManager *gameconfs = NULL; /**< Game config manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-IMemoryUtils *memutils = NULL;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMEHELPERS
-IGameHelpers *gamehelpers = NULL;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-ITimerSystem *timersys = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-IADTFactory *adtfactory = NULL;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-IThreader *threader = NULL;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-ILibrarySys *libsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-SourceMod::IPluginManager *plsys;
-#endif
-#if defined SMEXT_ENABLE_MENUS
-IMenuManager *menus = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-IAdminSystem *adminsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
-ITextParsers *textparsers = NULL;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-IUserMessages *usermsgs = NULL;
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-ITranslator *translator = NULL;
-#endif
-
-/** Exports the main interface */
-PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
-{
- return g_pExtensionIface;
-}
-
-SDKExtension::SDKExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- m_SourceMMLoaded = false;
- m_WeAreUnloaded = false;
- m_WeGotPauseChange = false;
-#endif
-}
-
-bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late)
-{
- g_pShareSys = sharesys = sys;
- myself = me;
-
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-
- if (!m_SourceMMLoaded)
- {
- if (error)
- {
- snprintf(error, maxlength, "Metamod attach failed");
- }
- return false;
- }
-#endif
- SM_GET_IFACE(SOURCEMOD, g_pSM);
- smutils = g_pSM;
-#if defined SMEXT_ENABLE_HANDLESYS
- SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
- handlesys = g_pHandleSys;
-#endif
-#if defined SMEXT_ENABLE_FORWARDSYS
- SM_GET_IFACE(FORWARDMANAGER, g_pForwards);
- forwards = g_pForwards;
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
- SM_GET_IFACE(PLAYERMANAGER, playerhelpers);
-#endif
-#if defined SMEXT_ENABLE_DBMANAGER
- SM_GET_IFACE(DBI, dbi);
-#endif
-#if defined SMEXT_ENABLE_GAMECONF
- SM_GET_IFACE(GAMECONFIG, gameconfs);
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
- SM_GET_IFACE(MEMORYUTILS, memutils);
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
- SM_GET_IFACE(GAMEHELPERS, gamehelpers);
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
- SM_GET_IFACE(TIMERSYS, timersys);
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
- SM_GET_IFACE(ADTFACTORY, adtfactory);
-#endif
-#if defined SMEXT_ENABLE_THREADER
- SM_GET_IFACE(THREADER, threader);
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
- SM_GET_IFACE(LIBRARYSYS, libsys);
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
- SM_GET_IFACE(PLUGINSYSTEM, plsys);
-#endif
-#if defined SMEXT_ENABLE_MENUS
- SM_GET_IFACE(MENUMANAGER, menus);
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
- SM_GET_IFACE(ADMINSYS, adminsys);
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
- SM_GET_IFACE(TEXTPARSERS, textparsers);
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
- SM_GET_IFACE(USERMSGS, usermsgs);
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
- SM_GET_IFACE(TRANSLATOR, translator);
-#endif
-
- if (SDK_OnLoad(error, maxlength, late))
- {
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- return true;
- }
-
- return false;
-}
-
-bool SDKExtension::IsMetamodExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- return true;
-#else
- return false;
-#endif
-}
-
-void SDKExtension::OnExtensionPauseChange(bool state)
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeGotPauseChange = true;
-#endif
- SDK_OnPauseChange(state);
-}
-
-void SDKExtension::OnExtensionsAllLoaded()
-{
- SDK_OnAllLoaded();
-}
-
-void SDKExtension::OnExtensionUnload()
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- SDK_OnUnload();
-}
-
-const char *SDKExtension::GetExtensionAuthor()
-{
- return SMEXT_CONF_AUTHOR;
-}
-
-const char *SDKExtension::GetExtensionDateString()
-{
- return SMEXT_CONF_DATESTRING;
-}
-
-const char *SDKExtension::GetExtensionDescription()
-{
- return SMEXT_CONF_DESCRIPTION;
-}
-
-const char *SDKExtension::GetExtensionVerString()
-{
- return SMEXT_CONF_VERSION;
-}
-
-const char *SDKExtension::GetExtensionName()
-{
- return SMEXT_CONF_NAME;
-}
-
-const char *SDKExtension::GetExtensionTag()
-{
- return SMEXT_CONF_LOGTAG;
-}
-
-const char *SDKExtension::GetExtensionURL()
-{
- return SMEXT_CONF_URL;
-}
-
-bool SDKExtension::SDK_OnLoad(char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-void SDKExtension::SDK_OnUnload()
-{
-}
-
-void SDKExtension::SDK_OnPauseChange(bool paused)
-{
-}
-
-void SDKExtension::SDK_OnAllLoaded()
-{
-}
-
-#if defined SMEXT_CONF_METAMOD
-
-PluginId g_PLID = 0; /**< Metamod plugin ID */
-ISmmPlugin *g_PLAPI = NULL; /**< Metamod plugin API */
-SourceHook::ISourceHook *g_SHPtr = NULL; /**< SourceHook pointer */
-ISmmAPI *g_SMAPI = NULL; /**< SourceMM API pointer */
-
-IVEngineServer *engine = NULL; /**< IVEngineServer pointer */
-IServerGameDLL *gamedll = NULL; /**< IServerGameDLL pointer */
-
-/** Exposes the extension to Metamod */
-SMM_API void *PL_EXPOSURE(const char *name, int *code)
-{
-#if defined METAMOD_PLAPI_VERSION
- if (name && !strcmp(name, METAMOD_PLAPI_NAME))
-#else
- if (name && !strcmp(name, PLAPI_NAME))
-#endif
- {
- if (code)
- {
- *code = IFACE_OK;
- }
- return static_cast(g_pExtensionIface);
- }
-
- if (code)
- {
- *code = IFACE_FAILED;
- }
-
- return NULL;
-}
-
-bool SDKExtension::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
-{
- PLUGIN_SAVEVARS();
-
-#if !defined METAMOD_PLAPI_VERSION
- GET_V_IFACE_ANY(serverFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(engineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#else
- GET_V_IFACE_ANY(GetServerFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#endif
-
- m_SourceMMLoaded = true;
-
- return SDK_OnMetamodLoad(ismm, error, maxlen, late);
-}
-
-bool SDKExtension::Unload(char *error, size_t maxlen)
-{
- if (!m_WeAreUnloaded)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unloaded by SourceMod.");
- }
- return false;
- }
-
- return SDK_OnMetamodUnload(error, maxlen);
-}
-
-bool SDKExtension::Pause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be paused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(true, error, maxlen);
-}
-
-bool SDKExtension::Unpause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unpaused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(false, error, maxlen);
-}
-
-const char *SDKExtension::GetAuthor()
-{
- return GetExtensionAuthor();
-}
-
-const char *SDKExtension::GetDate()
-{
- return GetExtensionDateString();
-}
-
-const char *SDKExtension::GetDescription()
-{
- return GetExtensionDescription();
-}
-
-const char *SDKExtension::GetLicense()
-{
- return SMEXT_CONF_LICENSE;
-}
-
-const char *SDKExtension::GetLogTag()
-{
- return GetExtensionTag();
-}
-
-const char *SDKExtension::GetName()
-{
- return GetExtensionName();
-}
-
-const char *SDKExtension::GetURL()
-{
- return GetExtensionURL();
-}
-
-const char *SDKExtension::GetVersion()
-{
- return GetExtensionVerString();
-}
-
-bool SDKExtension::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodUnload(char *error, size_t maxlength)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength)
-{
- return true;
-}
-
-#endif
-
-/* Overload a few things to prevent libstdc++ linking */
-#if defined __linux__ || defined __APPLE__
-extern "C" void __cxa_pure_virtual(void)
-{
-}
-
-void *operator new(size_t size)
-{
- return malloc(size);
-}
-
-void *operator new[](size_t size)
-{
- return malloc(size);
-}
-
-void operator delete(void *ptr)
-{
- free(ptr);
-}
-
-void operator delete[](void * ptr)
-{
- free(ptr);
-}
-#endif
-
diff --git a/extensions/cstrike/sdk/smsdk_ext.h b/extensions/cstrike/sdk/smsdk_ext.h
deleted file mode 100644
index a31b65b0..00000000
--- a/extensions/cstrike/sdk/smsdk_ext.h
+++ /dev/null
@@ -1,317 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#ifndef _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-#define _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-
-/**
- * @file smsdk_ext.h
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-#include "smsdk_config.h"
-#include
-#include
-#include
-#include
-#include
-#if defined SMEXT_ENABLE_FORWARDSYS
-#include
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-#include
-#endif //SMEXT_ENABLE_PlAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-#include
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-#include
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
-#include
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-#include
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-#include
-#endif
-#if defined SMEXT_ENABLE_THREADER
-#include
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-#include
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-#include
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-#include
-#include
-#endif
-
-#if !defined METAMOD_PLAPI_VERSION
- #include
-#endif
-
-using namespace SourceMod;
-using namespace SourcePawn;
-
-class SDKExtension :
-#if defined SMEXT_CONF_METAMOD
- public ISmmPlugin,
-#endif
- public IExtensionInterface
-{
-public:
- /** Constructor */
- SDKExtension();
-public:
- /**
- * @brief This is called after the initial loading sequence has been processed.
- *
- * @param error Error message buffer.
- * @param maxlength Size of error message buffer.
- * @param late Whether or not the module was loaded after map load.
- * @return True to succeed loading, false to fail.
- */
- virtual bool SDK_OnLoad(char *error, size_t maxlength, bool late);
-
- /**
- * @brief This is called right before the extension is unloaded.
- */
- virtual void SDK_OnUnload();
-
- /**
- * @brief This is called once all known extensions have been loaded.
- */
- virtual void SDK_OnAllLoaded();
-
- /**
- * @brief Called when the pause state is changed.
- */
- virtual void SDK_OnPauseChange(bool paused);
-
-#if defined SMEXT_CONF_METAMOD
- /**
- * @brief Called when Metamod is attached, before the extension version is called.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @param late Whether or not Metamod considers this a late load.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
-
- /**
- * @brief Called when Metamod is detaching, after the extension version is called.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodUnload(char *error, size_t maxlength);
-
- /**
- * @brief Called when Metamod's pause state is changing.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param paused Pause state being set.
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
-#endif
-
-public: //IExtensionInterface
- virtual bool OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late);
- virtual void OnExtensionUnload();
- virtual void OnExtensionsAllLoaded();
-
- /** Returns whether or not this is a Metamod-based extension */
- virtual bool IsMetamodExtension();
-
- /**
- * @brief Called when the pause state changes.
- *
- * @param state True if being paused, false if being unpaused.
- */
- virtual void OnExtensionPauseChange(bool state);
-
- /** Returns name */
- virtual const char *GetExtensionName();
- /** Returns URL */
- virtual const char *GetExtensionURL();
- /** Returns log tag */
- virtual const char *GetExtensionTag();
- /** Returns author */
- virtual const char *GetExtensionAuthor();
- /** Returns version string */
- virtual const char *GetExtensionVerString();
- /** Returns description string */
- virtual const char *GetExtensionDescription();
- /** Returns date string */
- virtual const char *GetExtensionDateString();
-#if defined SMEXT_CONF_METAMOD
-public: //ISmmPlugin
- /** Called when the extension is attached to Metamod. */
- virtual bool Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlength, bool late);
- /** Returns the author to MM */
- virtual const char *GetAuthor();
- /** Returns the name to MM */
- virtual const char *GetName();
- /** Returns the description to MM */
- virtual const char *GetDescription();
- /** Returns the URL to MM */
- virtual const char *GetURL();
- /** Returns the license to MM */
- virtual const char *GetLicense();
- /** Returns the version string to MM */
- virtual const char *GetVersion();
- /** Returns the date string to MM */
- virtual const char *GetDate();
- /** Returns the logtag to MM */
- virtual const char *GetLogTag();
- /** Called on unload */
- virtual bool Unload(char *error, size_t maxlength);
- /** Called on pause */
- virtual bool Pause(char *error, size_t maxlength);
- /** Called on unpause */
- virtual bool Unpause(char *error, size_t maxlength);
-private:
- bool m_SourceMMLoaded;
- bool m_WeAreUnloaded;
- bool m_WeGotPauseChange;
-#endif
-};
-
-extern SDKExtension *g_pExtensionIface;
-extern IExtension *myself;
-
-extern IShareSys *g_pShareSys;
-extern IShareSys *sharesys; /* Note: Newer name */
-extern ISourceMod *g_pSM;
-extern ISourceMod *smutils; /* Note: Newer name */
-
-/* Optional interfaces are below */
-#if defined SMEXT_ENABLE_FORWARDSYS
-extern IForwardManager *g_pForwards;
-extern IForwardManager *forwards; /* Note: Newer name */
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_HANDLESYS
-extern IHandleSys *g_pHandleSys;
-extern IHandleSys *handlesys; /* Note: Newer name */
-#endif //SMEXT_ENABLE_HANDLESYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-extern IPlayerManager *playerhelpers;
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-extern IDBManager *dbi;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-extern IGameConfigManager *gameconfs;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-extern IMemoryUtils *memutils;
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-extern IGameHelpers *gamehelpers;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-extern ITimerSystem *timersys;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-extern IADTFactory *adtfactory;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-extern IThreader *threader;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-extern ILibrarySys *libsys;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-extern IUserMessages *usermsgs;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-extern IPluginManager *plsys;
-#endif
-
-
-#if defined SMEXT_CONF_METAMOD
-PLUGIN_GLOBALVARS();
-extern IVEngineServer *engine;
-extern IServerGameDLL *gamedll;
-#endif
-
-/** Creates a SourceMod interface macro pair */
-#define SM_MKIFACE(name) SMINTERFACE_##name##_NAME, SMINTERFACE_##name##_VERSION
-/** Automates retrieving SourceMod interfaces */
-#define SM_GET_IFACE(prefix, addr) \
- if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-/** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */
-#define SM_GET_LATE_IFACE(prefix, addr) \
- g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)
-/** Validates a SourceMod interface pointer */
-#define SM_CHECK_IFACE(prefix, addr) \
- if (!addr) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-
-#endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
diff --git a/extensions/cstrike/sdk/smsdk_config.h b/extensions/cstrike/smsdk_config.h
similarity index 100%
rename from extensions/cstrike/sdk/smsdk_config.h
rename to extensions/cstrike/smsdk_config.h
diff --git a/extensions/curl/AMBuilder b/extensions/curl/AMBuilder
index 1b15e5df..f877b833 100644
--- a/extensions/curl/AMBuilder
+++ b/extensions/curl/AMBuilder
@@ -17,7 +17,7 @@ elif builder.target_platform == 'windows':
binary.sources += [
'extension.cpp',
'curlapi.cpp',
- 'sdk/smsdk_ext.cpp',
+ '../../public/smsdk_ext.cpp'
]
SM.extensions += [builder.Add(binary)]
diff --git a/extensions/curl/sdk/smsdk_ext.cpp b/extensions/curl/sdk/smsdk_ext.cpp
deleted file mode 100644
index 6404a919..00000000
--- a/extensions/curl/sdk/smsdk_ext.cpp
+++ /dev/null
@@ -1,462 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#include
-#include
-#include "smsdk_ext.h"
-
-/**
- * @file smsdk_ext.cpp
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-IExtension *myself = NULL; /**< Ourself */
-IShareSys *g_pShareSys = NULL; /**< Share system */
-IShareSys *sharesys = NULL; /**< Share system */
-ISourceMod *g_pSM = NULL; /**< SourceMod helpers */
-ISourceMod *smutils = NULL; /**< SourceMod helpers */
-
-#if defined SMEXT_ENABLE_FORWARDSYS
-IForwardManager *g_pForwards = NULL; /**< Forward system */
-IForwardManager *forwards = NULL; /**< Forward system */
-#endif
-#if defined SMEXT_ENABLE_HANDLESYS
-IHandleSys *g_pHandleSys = NULL; /**< Handle system */
-IHandleSys *handlesys = NULL; /**< Handle system */
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-IPlayerManager *playerhelpers = NULL; /**< Player helpers */
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-IDBManager *dbi = NULL; /**< DB Manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-IGameConfigManager *gameconfs = NULL; /**< Game config manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-IMemoryUtils *memutils = NULL;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMEHELPERS
-IGameHelpers *gamehelpers = NULL;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-ITimerSystem *timersys = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-IADTFactory *adtfactory = NULL;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-IThreader *threader = NULL;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-ILibrarySys *libsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-SourceMod::IPluginManager *plsys;
-#endif
-#if defined SMEXT_ENABLE_MENUS
-IMenuManager *menus = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-IAdminSystem *adminsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
-ITextParsers *textparsers = NULL;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-IUserMessages *usermsgs = NULL;
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-ITranslator *translator = NULL;
-#endif
-
-/** Exports the main interface */
-PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
-{
- return g_pExtensionIface;
-}
-
-SDKExtension::SDKExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- m_SourceMMLoaded = false;
- m_WeAreUnloaded = false;
- m_WeGotPauseChange = false;
-#endif
-}
-
-bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late)
-{
- g_pShareSys = sharesys = sys;
- myself = me;
-
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-
- if (!m_SourceMMLoaded)
- {
- if (error)
- {
- snprintf(error, maxlength, "Metamod attach failed");
- }
- return false;
- }
-#endif
- SM_GET_IFACE(SOURCEMOD, g_pSM);
- smutils = g_pSM;
-#if defined SMEXT_ENABLE_HANDLESYS
- SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
- handlesys = g_pHandleSys;
-#endif
-#if defined SMEXT_ENABLE_FORWARDSYS
- SM_GET_IFACE(FORWARDMANAGER, g_pForwards);
- forwards = g_pForwards;
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
- SM_GET_IFACE(PLAYERMANAGER, playerhelpers);
-#endif
-#if defined SMEXT_ENABLE_DBMANAGER
- SM_GET_IFACE(DBI, dbi);
-#endif
-#if defined SMEXT_ENABLE_GAMECONF
- SM_GET_IFACE(GAMECONFIG, gameconfs);
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
- SM_GET_IFACE(MEMORYUTILS, memutils);
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
- SM_GET_IFACE(GAMEHELPERS, gamehelpers);
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
- SM_GET_IFACE(TIMERSYS, timersys);
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
- SM_GET_IFACE(ADTFACTORY, adtfactory);
-#endif
-#if defined SMEXT_ENABLE_THREADER
- SM_GET_IFACE(THREADER, threader);
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
- SM_GET_IFACE(LIBRARYSYS, libsys);
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
- SM_GET_IFACE(PLUGINSYSTEM, plsys);
-#endif
-#if defined SMEXT_ENABLE_MENUS
- SM_GET_IFACE(MENUMANAGER, menus);
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
- SM_GET_IFACE(ADMINSYS, adminsys);
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
- SM_GET_IFACE(TEXTPARSERS, textparsers);
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
- SM_GET_IFACE(USERMSGS, usermsgs);
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
- SM_GET_IFACE(TRANSLATOR, translator);
-#endif
-
- if (SDK_OnLoad(error, maxlength, late))
- {
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- return true;
- }
-
- return false;
-}
-
-bool SDKExtension::IsMetamodExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- return true;
-#else
- return false;
-#endif
-}
-
-void SDKExtension::OnExtensionPauseChange(bool state)
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeGotPauseChange = true;
-#endif
- SDK_OnPauseChange(state);
-}
-
-void SDKExtension::OnExtensionsAllLoaded()
-{
- SDK_OnAllLoaded();
-}
-
-void SDKExtension::OnExtensionUnload()
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- SDK_OnUnload();
-}
-
-const char *SDKExtension::GetExtensionAuthor()
-{
- return SMEXT_CONF_AUTHOR;
-}
-
-const char *SDKExtension::GetExtensionDateString()
-{
- return SMEXT_CONF_DATESTRING;
-}
-
-const char *SDKExtension::GetExtensionDescription()
-{
- return SMEXT_CONF_DESCRIPTION;
-}
-
-const char *SDKExtension::GetExtensionVerString()
-{
- return SMEXT_CONF_VERSION;
-}
-
-const char *SDKExtension::GetExtensionName()
-{
- return SMEXT_CONF_NAME;
-}
-
-const char *SDKExtension::GetExtensionTag()
-{
- return SMEXT_CONF_LOGTAG;
-}
-
-const char *SDKExtension::GetExtensionURL()
-{
- return SMEXT_CONF_URL;
-}
-
-bool SDKExtension::SDK_OnLoad(char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-void SDKExtension::SDK_OnUnload()
-{
-}
-
-void SDKExtension::SDK_OnPauseChange(bool paused)
-{
-}
-
-void SDKExtension::SDK_OnAllLoaded()
-{
-}
-
-#if defined SMEXT_CONF_METAMOD
-
-PluginId g_PLID = 0; /**< Metamod plugin ID */
-ISmmPlugin *g_PLAPI = NULL; /**< Metamod plugin API */
-SourceHook::ISourceHook *g_SHPtr = NULL; /**< SourceHook pointer */
-ISmmAPI *g_SMAPI = NULL; /**< SourceMM API pointer */
-
-IVEngineServer *engine = NULL; /**< IVEngineServer pointer */
-IServerGameDLL *gamedll = NULL; /**< IServerGameDLL pointer */
-
-/** Exposes the extension to Metamod */
-SMM_API void *PL_EXPOSURE(const char *name, int *code)
-{
-#if defined METAMOD_PLAPI_VERSION
- if (name && !strcmp(name, METAMOD_PLAPI_NAME))
-#else
- if (name && !strcmp(name, PLAPI_NAME))
-#endif
- {
- if (code)
- {
- *code = IFACE_OK;
- }
- return static_cast(g_pExtensionIface);
- }
-
- if (code)
- {
- *code = IFACE_FAILED;
- }
-
- return NULL;
-}
-
-bool SDKExtension::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
-{
- PLUGIN_SAVEVARS();
-
-#if !defined METAMOD_PLAPI_VERSION
- GET_V_IFACE_ANY(serverFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(engineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#else
- GET_V_IFACE_ANY(GetServerFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#endif
-
- m_SourceMMLoaded = true;
-
- return SDK_OnMetamodLoad(ismm, error, maxlen, late);
-}
-
-bool SDKExtension::Unload(char *error, size_t maxlen)
-{
- if (!m_WeAreUnloaded)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unloaded by SourceMod.");
- }
- return false;
- }
-
- return SDK_OnMetamodUnload(error, maxlen);
-}
-
-bool SDKExtension::Pause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be paused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(true, error, maxlen);
-}
-
-bool SDKExtension::Unpause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unpaused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(false, error, maxlen);
-}
-
-const char *SDKExtension::GetAuthor()
-{
- return GetExtensionAuthor();
-}
-
-const char *SDKExtension::GetDate()
-{
- return GetExtensionDateString();
-}
-
-const char *SDKExtension::GetDescription()
-{
- return GetExtensionDescription();
-}
-
-const char *SDKExtension::GetLicense()
-{
- return SMEXT_CONF_LICENSE;
-}
-
-const char *SDKExtension::GetLogTag()
-{
- return GetExtensionTag();
-}
-
-const char *SDKExtension::GetName()
-{
- return GetExtensionName();
-}
-
-const char *SDKExtension::GetURL()
-{
- return GetExtensionURL();
-}
-
-const char *SDKExtension::GetVersion()
-{
- return GetExtensionVerString();
-}
-
-bool SDKExtension::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodUnload(char *error, size_t maxlength)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength)
-{
- return true;
-}
-
-#endif
-
-/* Overload a few things to prevent libstdc++ linking */
-#if defined __linux__ || defined __APPLE__
-extern "C" void __cxa_pure_virtual(void)
-{
-}
-
-void *operator new(size_t size)
-{
- return malloc(size);
-}
-
-void *operator new[](size_t size)
-{
- return malloc(size);
-}
-
-void operator delete(void *ptr)
-{
- free(ptr);
-}
-
-void operator delete[](void * ptr)
-{
- free(ptr);
-}
-#endif
-
diff --git a/extensions/curl/sdk/smsdk_ext.h b/extensions/curl/sdk/smsdk_ext.h
deleted file mode 100644
index 115fc800..00000000
--- a/extensions/curl/sdk/smsdk_ext.h
+++ /dev/null
@@ -1,333 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#ifndef _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-#define _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-
-/**
- * @file smsdk_ext.h
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-#include "smsdk_config.h"
-#include
-#include
-#include
-#include
-#include
-#if defined SMEXT_ENABLE_FORWARDSYS
-#include
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-#include
-#endif //SMEXT_ENABLE_PlAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-#include
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-#include
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
-#include
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-#include
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-#include
-#endif
-#if defined SMEXT_ENABLE_THREADER
-#include
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_MENUS
-#include
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
-#include
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-#include
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-#include
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-#include
-#include
-#endif
-
-using namespace SourceMod;
-using namespace SourcePawn;
-
-class SDKExtension :
-#if defined SMEXT_CONF_METAMOD
- public ISmmPlugin,
-#endif
- public IExtensionInterface
-{
-public:
- /** Constructor */
- SDKExtension();
-public:
- /**
- * @brief This is called after the initial loading sequence has been processed.
- *
- * @param error Error message buffer.
- * @param maxlength Size of error message buffer.
- * @param late Whether or not the module was loaded after map load.
- * @return True to succeed loading, false to fail.
- */
- virtual bool SDK_OnLoad(char *error, size_t maxlength, bool late);
-
- /**
- * @brief This is called right before the extension is unloaded.
- */
- virtual void SDK_OnUnload();
-
- /**
- * @brief This is called once all known extensions have been loaded.
- */
- virtual void SDK_OnAllLoaded();
-
- /**
- * @brief Called when the pause state is changed.
- */
- virtual void SDK_OnPauseChange(bool paused);
-
-#if defined SMEXT_CONF_METAMOD
- /**
- * @brief Called when Metamod is attached, before the extension version is called.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @param late Whether or not Metamod considers this a late load.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
-
- /**
- * @brief Called when Metamod is detaching, after the extension version is called.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodUnload(char *error, size_t maxlength);
-
- /**
- * @brief Called when Metamod's pause state is changing.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param paused Pause state being set.
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
-#endif
-
-public: //IExtensionInterface
- virtual bool OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late);
- virtual void OnExtensionUnload();
- virtual void OnExtensionsAllLoaded();
-
- /** Returns whether or not this is a Metamod-based extension */
- virtual bool IsMetamodExtension();
-
- /**
- * @brief Called when the pause state changes.
- *
- * @param state True if being paused, false if being unpaused.
- */
- virtual void OnExtensionPauseChange(bool state);
-
- /** Returns name */
- virtual const char *GetExtensionName();
- /** Returns URL */
- virtual const char *GetExtensionURL();
- /** Returns log tag */
- virtual const char *GetExtensionTag();
- /** Returns author */
- virtual const char *GetExtensionAuthor();
- /** Returns version string */
- virtual const char *GetExtensionVerString();
- /** Returns description string */
- virtual const char *GetExtensionDescription();
- /** Returns date string */
- virtual const char *GetExtensionDateString();
-#if defined SMEXT_CONF_METAMOD
-public: //ISmmPlugin
- /** Called when the extension is attached to Metamod. */
- virtual bool Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlength, bool late);
- /** Returns the author to MM */
- virtual const char *GetAuthor();
- /** Returns the name to MM */
- virtual const char *GetName();
- /** Returns the description to MM */
- virtual const char *GetDescription();
- /** Returns the URL to MM */
- virtual const char *GetURL();
- /** Returns the license to MM */
- virtual const char *GetLicense();
- /** Returns the version string to MM */
- virtual const char *GetVersion();
- /** Returns the date string to MM */
- virtual const char *GetDate();
- /** Returns the logtag to MM */
- virtual const char *GetLogTag();
- /** Called on unload */
- virtual bool Unload(char *error, size_t maxlength);
- /** Called on pause */
- virtual bool Pause(char *error, size_t maxlength);
- /** Called on unpause */
- virtual bool Unpause(char *error, size_t maxlength);
-private:
- bool m_SourceMMLoaded;
- bool m_WeAreUnloaded;
- bool m_WeGotPauseChange;
-#endif
-};
-
-extern SDKExtension *g_pExtensionIface;
-extern IExtension *myself;
-
-extern IShareSys *g_pShareSys;
-extern IShareSys *sharesys; /* Note: Newer name */
-extern ISourceMod *g_pSM;
-extern ISourceMod *smutils; /* Note: Newer name */
-
-/* Optional interfaces are below */
-#if defined SMEXT_ENABLE_FORWARDSYS
-extern IForwardManager *g_pForwards;
-extern IForwardManager *forwards; /* Note: Newer name */
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_HANDLESYS
-extern IHandleSys *g_pHandleSys;
-extern IHandleSys *handlesys; /* Note: Newer name */
-#endif //SMEXT_ENABLE_HANDLESYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-extern IPlayerManager *playerhelpers;
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-extern IDBManager *dbi;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-extern IGameConfigManager *gameconfs;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-extern IMemoryUtils *memutils;
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-extern IGameHelpers *gamehelpers;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-extern ITimerSystem *timersys;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-extern IADTFactory *adtfactory;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-extern IThreader *threader;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-extern ILibrarySys *libsys;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-extern SourceMod::IPluginManager *plsys;
-#endif
-#if defined SMEXT_ENABLE_MENUS
-extern IMenuManager *menus;
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-extern IAdminSystem *adminsys;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-extern IUserMessages *usermsgs;
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-extern ITranslator *translator;
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-PLUGIN_GLOBALVARS();
-extern IVEngineServer *engine;
-extern IServerGameDLL *gamedll;
-#endif
-
-/** Creates a SourceMod interface macro pair */
-#define SM_MKIFACE(name) SMINTERFACE_##name##_NAME, SMINTERFACE_##name##_VERSION
-/** Automates retrieving SourceMod interfaces */
-#define SM_GET_IFACE(prefix, addr) \
- if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-/** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */
-#define SM_GET_LATE_IFACE(prefix, addr) \
- g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)
-/** Validates a SourceMod interface pointer */
-#define SM_CHECK_IFACE(prefix, addr) \
- if (!addr) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-
-#endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
diff --git a/extensions/curl/sdk/smsdk_config.h b/extensions/curl/smsdk_config.h
similarity index 100%
rename from extensions/curl/sdk/smsdk_config.h
rename to extensions/curl/smsdk_config.h
diff --git a/extensions/geoip/AMBuilder b/extensions/geoip/AMBuilder
index 69722034..36b6df91 100644
--- a/extensions/geoip/AMBuilder
+++ b/extensions/geoip/AMBuilder
@@ -8,7 +8,7 @@ if builder.target_platform == 'windows':
binary.sources += [
'extension.cpp',
'GeoIP.c',
- 'sdk/smsdk_ext.cpp'
+ '../../public/smsdk_ext.cpp'
]
SM.extensions += [builder.Add(binary)]
diff --git a/extensions/geoip/sdk/smsdk_ext.cpp b/extensions/geoip/sdk/smsdk_ext.cpp
deleted file mode 100644
index 6404a919..00000000
--- a/extensions/geoip/sdk/smsdk_ext.cpp
+++ /dev/null
@@ -1,462 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#include
-#include
-#include "smsdk_ext.h"
-
-/**
- * @file smsdk_ext.cpp
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-IExtension *myself = NULL; /**< Ourself */
-IShareSys *g_pShareSys = NULL; /**< Share system */
-IShareSys *sharesys = NULL; /**< Share system */
-ISourceMod *g_pSM = NULL; /**< SourceMod helpers */
-ISourceMod *smutils = NULL; /**< SourceMod helpers */
-
-#if defined SMEXT_ENABLE_FORWARDSYS
-IForwardManager *g_pForwards = NULL; /**< Forward system */
-IForwardManager *forwards = NULL; /**< Forward system */
-#endif
-#if defined SMEXT_ENABLE_HANDLESYS
-IHandleSys *g_pHandleSys = NULL; /**< Handle system */
-IHandleSys *handlesys = NULL; /**< Handle system */
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-IPlayerManager *playerhelpers = NULL; /**< Player helpers */
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-IDBManager *dbi = NULL; /**< DB Manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-IGameConfigManager *gameconfs = NULL; /**< Game config manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-IMemoryUtils *memutils = NULL;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMEHELPERS
-IGameHelpers *gamehelpers = NULL;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-ITimerSystem *timersys = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-IADTFactory *adtfactory = NULL;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-IThreader *threader = NULL;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-ILibrarySys *libsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-SourceMod::IPluginManager *plsys;
-#endif
-#if defined SMEXT_ENABLE_MENUS
-IMenuManager *menus = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-IAdminSystem *adminsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
-ITextParsers *textparsers = NULL;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-IUserMessages *usermsgs = NULL;
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-ITranslator *translator = NULL;
-#endif
-
-/** Exports the main interface */
-PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
-{
- return g_pExtensionIface;
-}
-
-SDKExtension::SDKExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- m_SourceMMLoaded = false;
- m_WeAreUnloaded = false;
- m_WeGotPauseChange = false;
-#endif
-}
-
-bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late)
-{
- g_pShareSys = sharesys = sys;
- myself = me;
-
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-
- if (!m_SourceMMLoaded)
- {
- if (error)
- {
- snprintf(error, maxlength, "Metamod attach failed");
- }
- return false;
- }
-#endif
- SM_GET_IFACE(SOURCEMOD, g_pSM);
- smutils = g_pSM;
-#if defined SMEXT_ENABLE_HANDLESYS
- SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
- handlesys = g_pHandleSys;
-#endif
-#if defined SMEXT_ENABLE_FORWARDSYS
- SM_GET_IFACE(FORWARDMANAGER, g_pForwards);
- forwards = g_pForwards;
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
- SM_GET_IFACE(PLAYERMANAGER, playerhelpers);
-#endif
-#if defined SMEXT_ENABLE_DBMANAGER
- SM_GET_IFACE(DBI, dbi);
-#endif
-#if defined SMEXT_ENABLE_GAMECONF
- SM_GET_IFACE(GAMECONFIG, gameconfs);
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
- SM_GET_IFACE(MEMORYUTILS, memutils);
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
- SM_GET_IFACE(GAMEHELPERS, gamehelpers);
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
- SM_GET_IFACE(TIMERSYS, timersys);
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
- SM_GET_IFACE(ADTFACTORY, adtfactory);
-#endif
-#if defined SMEXT_ENABLE_THREADER
- SM_GET_IFACE(THREADER, threader);
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
- SM_GET_IFACE(LIBRARYSYS, libsys);
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
- SM_GET_IFACE(PLUGINSYSTEM, plsys);
-#endif
-#if defined SMEXT_ENABLE_MENUS
- SM_GET_IFACE(MENUMANAGER, menus);
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
- SM_GET_IFACE(ADMINSYS, adminsys);
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
- SM_GET_IFACE(TEXTPARSERS, textparsers);
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
- SM_GET_IFACE(USERMSGS, usermsgs);
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
- SM_GET_IFACE(TRANSLATOR, translator);
-#endif
-
- if (SDK_OnLoad(error, maxlength, late))
- {
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- return true;
- }
-
- return false;
-}
-
-bool SDKExtension::IsMetamodExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- return true;
-#else
- return false;
-#endif
-}
-
-void SDKExtension::OnExtensionPauseChange(bool state)
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeGotPauseChange = true;
-#endif
- SDK_OnPauseChange(state);
-}
-
-void SDKExtension::OnExtensionsAllLoaded()
-{
- SDK_OnAllLoaded();
-}
-
-void SDKExtension::OnExtensionUnload()
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- SDK_OnUnload();
-}
-
-const char *SDKExtension::GetExtensionAuthor()
-{
- return SMEXT_CONF_AUTHOR;
-}
-
-const char *SDKExtension::GetExtensionDateString()
-{
- return SMEXT_CONF_DATESTRING;
-}
-
-const char *SDKExtension::GetExtensionDescription()
-{
- return SMEXT_CONF_DESCRIPTION;
-}
-
-const char *SDKExtension::GetExtensionVerString()
-{
- return SMEXT_CONF_VERSION;
-}
-
-const char *SDKExtension::GetExtensionName()
-{
- return SMEXT_CONF_NAME;
-}
-
-const char *SDKExtension::GetExtensionTag()
-{
- return SMEXT_CONF_LOGTAG;
-}
-
-const char *SDKExtension::GetExtensionURL()
-{
- return SMEXT_CONF_URL;
-}
-
-bool SDKExtension::SDK_OnLoad(char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-void SDKExtension::SDK_OnUnload()
-{
-}
-
-void SDKExtension::SDK_OnPauseChange(bool paused)
-{
-}
-
-void SDKExtension::SDK_OnAllLoaded()
-{
-}
-
-#if defined SMEXT_CONF_METAMOD
-
-PluginId g_PLID = 0; /**< Metamod plugin ID */
-ISmmPlugin *g_PLAPI = NULL; /**< Metamod plugin API */
-SourceHook::ISourceHook *g_SHPtr = NULL; /**< SourceHook pointer */
-ISmmAPI *g_SMAPI = NULL; /**< SourceMM API pointer */
-
-IVEngineServer *engine = NULL; /**< IVEngineServer pointer */
-IServerGameDLL *gamedll = NULL; /**< IServerGameDLL pointer */
-
-/** Exposes the extension to Metamod */
-SMM_API void *PL_EXPOSURE(const char *name, int *code)
-{
-#if defined METAMOD_PLAPI_VERSION
- if (name && !strcmp(name, METAMOD_PLAPI_NAME))
-#else
- if (name && !strcmp(name, PLAPI_NAME))
-#endif
- {
- if (code)
- {
- *code = IFACE_OK;
- }
- return static_cast(g_pExtensionIface);
- }
-
- if (code)
- {
- *code = IFACE_FAILED;
- }
-
- return NULL;
-}
-
-bool SDKExtension::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
-{
- PLUGIN_SAVEVARS();
-
-#if !defined METAMOD_PLAPI_VERSION
- GET_V_IFACE_ANY(serverFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(engineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#else
- GET_V_IFACE_ANY(GetServerFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#endif
-
- m_SourceMMLoaded = true;
-
- return SDK_OnMetamodLoad(ismm, error, maxlen, late);
-}
-
-bool SDKExtension::Unload(char *error, size_t maxlen)
-{
- if (!m_WeAreUnloaded)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unloaded by SourceMod.");
- }
- return false;
- }
-
- return SDK_OnMetamodUnload(error, maxlen);
-}
-
-bool SDKExtension::Pause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be paused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(true, error, maxlen);
-}
-
-bool SDKExtension::Unpause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unpaused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(false, error, maxlen);
-}
-
-const char *SDKExtension::GetAuthor()
-{
- return GetExtensionAuthor();
-}
-
-const char *SDKExtension::GetDate()
-{
- return GetExtensionDateString();
-}
-
-const char *SDKExtension::GetDescription()
-{
- return GetExtensionDescription();
-}
-
-const char *SDKExtension::GetLicense()
-{
- return SMEXT_CONF_LICENSE;
-}
-
-const char *SDKExtension::GetLogTag()
-{
- return GetExtensionTag();
-}
-
-const char *SDKExtension::GetName()
-{
- return GetExtensionName();
-}
-
-const char *SDKExtension::GetURL()
-{
- return GetExtensionURL();
-}
-
-const char *SDKExtension::GetVersion()
-{
- return GetExtensionVerString();
-}
-
-bool SDKExtension::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodUnload(char *error, size_t maxlength)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength)
-{
- return true;
-}
-
-#endif
-
-/* Overload a few things to prevent libstdc++ linking */
-#if defined __linux__ || defined __APPLE__
-extern "C" void __cxa_pure_virtual(void)
-{
-}
-
-void *operator new(size_t size)
-{
- return malloc(size);
-}
-
-void *operator new[](size_t size)
-{
- return malloc(size);
-}
-
-void operator delete(void *ptr)
-{
- free(ptr);
-}
-
-void operator delete[](void * ptr)
-{
- free(ptr);
-}
-#endif
-
diff --git a/extensions/geoip/sdk/smsdk_ext.h b/extensions/geoip/sdk/smsdk_ext.h
deleted file mode 100644
index d77d84db..00000000
--- a/extensions/geoip/sdk/smsdk_ext.h
+++ /dev/null
@@ -1,300 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#ifndef _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-#define _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-
-/**
- * @file smsdk_ext.h
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-#include "smsdk_config.h"
-#include
-#include
-#include
-#include
-#include
-#if defined SMEXT_ENABLE_FORWARDSYS
-#include
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-#include
-#endif //SMEXT_ENABLE_PlAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-#include
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-#include
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
-#include
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-#include
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-#include
-#endif
-#if defined SMEXT_ENABLE_THREADER
-#include
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-#include
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-#include
-#include
-#endif
-
-using namespace SourceMod;
-using namespace SourcePawn;
-
-class SDKExtension :
-#if defined SMEXT_CONF_METAMOD
- public ISmmPlugin,
-#endif
- public IExtensionInterface
-{
-public:
- /** Constructor */
- SDKExtension();
-public:
- /**
- * @brief This is called after the initial loading sequence has been processed.
- *
- * @param error Error message buffer.
- * @param maxlength Size of error message buffer.
- * @param late Whether or not the module was loaded after map load.
- * @return True to succeed loading, false to fail.
- */
- virtual bool SDK_OnLoad(char *error, size_t maxlength, bool late);
-
- /**
- * @brief This is called right before the extension is unloaded.
- */
- virtual void SDK_OnUnload();
-
- /**
- * @brief This is called once all known extensions have been loaded.
- */
- virtual void SDK_OnAllLoaded();
-
- /**
- * @brief Called when the pause state is changed.
- */
- virtual void SDK_OnPauseChange(bool paused);
-
-#if defined SMEXT_CONF_METAMOD
- /**
- * @brief Called when Metamod is attached, before the extension version is called.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @param late Whether or not Metamod considers this a late load.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
-
- /**
- * @brief Called when Metamod is detaching, after the extension version is called.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodUnload(char *error, size_t maxlength);
-
- /**
- * @brief Called when Metamod's pause state is changing.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param paused Pause state being set.
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
-#endif
-
-public: //IExtensionInterface
- virtual bool OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late);
- virtual void OnExtensionUnload();
- virtual void OnExtensionsAllLoaded();
-
- /** Returns whether or not this is a Metamod-based extension */
- virtual bool IsMetamodExtension();
-
- /**
- * @brief Called when the pause state changes.
- *
- * @param state True if being paused, false if being unpaused.
- */
- virtual void OnExtensionPauseChange(bool state);
-
- /** Returns name */
- virtual const char *GetExtensionName();
- /** Returns URL */
- virtual const char *GetExtensionURL();
- /** Returns log tag */
- virtual const char *GetExtensionTag();
- /** Returns author */
- virtual const char *GetExtensionAuthor();
- /** Returns version string */
- virtual const char *GetExtensionVerString();
- /** Returns description string */
- virtual const char *GetExtensionDescription();
- /** Returns date string */
- virtual const char *GetExtensionDateString();
-#if defined SMEXT_CONF_METAMOD
-public: //ISmmPlugin
- /** Called when the extension is attached to Metamod. */
- virtual bool Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlength, bool late);
- /** Returns the author to MM */
- virtual const char *GetAuthor();
- /** Returns the name to MM */
- virtual const char *GetName();
- /** Returns the description to MM */
- virtual const char *GetDescription();
- /** Returns the URL to MM */
- virtual const char *GetURL();
- /** Returns the license to MM */
- virtual const char *GetLicense();
- /** Returns the version string to MM */
- virtual const char *GetVersion();
- /** Returns the date string to MM */
- virtual const char *GetDate();
- /** Returns the logtag to MM */
- virtual const char *GetLogTag();
- /** Called on unload */
- virtual bool Unload(char *error, size_t maxlength);
- /** Called on pause */
- virtual bool Pause(char *error, size_t maxlength);
- /** Called on unpause */
- virtual bool Unpause(char *error, size_t maxlength);
-private:
- bool m_SourceMMLoaded;
- bool m_WeAreUnloaded;
- bool m_WeGotPauseChange;
-#endif
-};
-
-extern SDKExtension *g_pExtensionIface;
-extern IExtension *myself;
-
-extern IShareSys *g_pShareSys;
-extern IShareSys *sharesys; /* Note: Newer name */
-extern ISourceMod *g_pSM;
-extern ISourceMod *smutils; /* Note: Newer name */
-
-/* Optional interfaces are below */
-#if defined SMEXT_ENABLE_FORWARDSYS
-extern IForwardManager *g_pForwards;
-extern IForwardManager *forwards; /* Note: Newer name */
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_HANDLESYS
-extern IHandleSys *g_pHandleSys;
-extern IHandleSys *handlesys; /* Note: Newer name */
-#endif //SMEXT_ENABLE_HANDLESYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-extern IPlayerManager *playerhelpers;
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-extern IDBManager *dbi;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-extern IGameConfigManager *gameconfs;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-extern IMemoryUtils *memutils;
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-extern IGameHelpers *gamehelpers;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-extern ITimerSystem *timersys;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-extern IADTFactory *adtfactory;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-extern IThreader *threader;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-extern ILibrarySys *libsys;
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-PLUGIN_GLOBALVARS();
-extern IVEngineServer *engine;
-extern IServerGameDLL *gamedll;
-#endif
-
-/** Creates a SourceMod interface macro pair */
-#define SM_MKIFACE(name) SMINTERFACE_##name##_NAME, SMINTERFACE_##name##_VERSION
-/** Automates retrieving SourceMod interfaces */
-#define SM_GET_IFACE(prefix, addr) \
- if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-/** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */
-#define SM_GET_LATE_IFACE(prefix, addr) \
- g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)
-/** Validates a SourceMod interface pointer */
-#define SM_CHECK_IFACE(prefix, addr) \
- if (!addr) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-
-#endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
diff --git a/extensions/geoip/sdk/smsdk_config.h b/extensions/geoip/smsdk_config.h
similarity index 100%
rename from extensions/geoip/sdk/smsdk_config.h
rename to extensions/geoip/smsdk_config.h
diff --git a/extensions/mysql/AMBuilder b/extensions/mysql/AMBuilder
index 48a39c53..ab1e00a3 100644
--- a/extensions/mysql/AMBuilder
+++ b/extensions/mysql/AMBuilder
@@ -23,7 +23,7 @@ if SM.mysql_root:
]
binary.sources += [
- 'sdk/smsdk_ext.cpp',
+ '../../public/smsdk_ext.cpp',
'mysql/MyBasicResults.cpp',
'mysql/MyBoundResults.cpp',
'mysql/MyDatabase.cpp',
diff --git a/extensions/mysql/mysql/MyDriver.cpp b/extensions/mysql/mysql/MyDriver.cpp
index beb651e3..c6941821 100644
--- a/extensions/mysql/mysql/MyDriver.cpp
+++ b/extensions/mysql/mysql/MyDriver.cpp
@@ -31,7 +31,7 @@
#include "MyDriver.h"
#include "MyDatabase.h"
-#include "sdk/smsdk_ext.h"
+#include "smsdk_ext.h"
MyDriver g_MyDriver;
diff --git a/extensions/mysql/sdk/smsdk_ext.cpp b/extensions/mysql/sdk/smsdk_ext.cpp
deleted file mode 100644
index 6404a919..00000000
--- a/extensions/mysql/sdk/smsdk_ext.cpp
+++ /dev/null
@@ -1,462 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#include
-#include
-#include "smsdk_ext.h"
-
-/**
- * @file smsdk_ext.cpp
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-IExtension *myself = NULL; /**< Ourself */
-IShareSys *g_pShareSys = NULL; /**< Share system */
-IShareSys *sharesys = NULL; /**< Share system */
-ISourceMod *g_pSM = NULL; /**< SourceMod helpers */
-ISourceMod *smutils = NULL; /**< SourceMod helpers */
-
-#if defined SMEXT_ENABLE_FORWARDSYS
-IForwardManager *g_pForwards = NULL; /**< Forward system */
-IForwardManager *forwards = NULL; /**< Forward system */
-#endif
-#if defined SMEXT_ENABLE_HANDLESYS
-IHandleSys *g_pHandleSys = NULL; /**< Handle system */
-IHandleSys *handlesys = NULL; /**< Handle system */
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-IPlayerManager *playerhelpers = NULL; /**< Player helpers */
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-IDBManager *dbi = NULL; /**< DB Manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-IGameConfigManager *gameconfs = NULL; /**< Game config manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-IMemoryUtils *memutils = NULL;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMEHELPERS
-IGameHelpers *gamehelpers = NULL;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-ITimerSystem *timersys = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-IADTFactory *adtfactory = NULL;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-IThreader *threader = NULL;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-ILibrarySys *libsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-SourceMod::IPluginManager *plsys;
-#endif
-#if defined SMEXT_ENABLE_MENUS
-IMenuManager *menus = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-IAdminSystem *adminsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
-ITextParsers *textparsers = NULL;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-IUserMessages *usermsgs = NULL;
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-ITranslator *translator = NULL;
-#endif
-
-/** Exports the main interface */
-PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
-{
- return g_pExtensionIface;
-}
-
-SDKExtension::SDKExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- m_SourceMMLoaded = false;
- m_WeAreUnloaded = false;
- m_WeGotPauseChange = false;
-#endif
-}
-
-bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late)
-{
- g_pShareSys = sharesys = sys;
- myself = me;
-
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-
- if (!m_SourceMMLoaded)
- {
- if (error)
- {
- snprintf(error, maxlength, "Metamod attach failed");
- }
- return false;
- }
-#endif
- SM_GET_IFACE(SOURCEMOD, g_pSM);
- smutils = g_pSM;
-#if defined SMEXT_ENABLE_HANDLESYS
- SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
- handlesys = g_pHandleSys;
-#endif
-#if defined SMEXT_ENABLE_FORWARDSYS
- SM_GET_IFACE(FORWARDMANAGER, g_pForwards);
- forwards = g_pForwards;
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
- SM_GET_IFACE(PLAYERMANAGER, playerhelpers);
-#endif
-#if defined SMEXT_ENABLE_DBMANAGER
- SM_GET_IFACE(DBI, dbi);
-#endif
-#if defined SMEXT_ENABLE_GAMECONF
- SM_GET_IFACE(GAMECONFIG, gameconfs);
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
- SM_GET_IFACE(MEMORYUTILS, memutils);
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
- SM_GET_IFACE(GAMEHELPERS, gamehelpers);
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
- SM_GET_IFACE(TIMERSYS, timersys);
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
- SM_GET_IFACE(ADTFACTORY, adtfactory);
-#endif
-#if defined SMEXT_ENABLE_THREADER
- SM_GET_IFACE(THREADER, threader);
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
- SM_GET_IFACE(LIBRARYSYS, libsys);
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
- SM_GET_IFACE(PLUGINSYSTEM, plsys);
-#endif
-#if defined SMEXT_ENABLE_MENUS
- SM_GET_IFACE(MENUMANAGER, menus);
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
- SM_GET_IFACE(ADMINSYS, adminsys);
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
- SM_GET_IFACE(TEXTPARSERS, textparsers);
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
- SM_GET_IFACE(USERMSGS, usermsgs);
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
- SM_GET_IFACE(TRANSLATOR, translator);
-#endif
-
- if (SDK_OnLoad(error, maxlength, late))
- {
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- return true;
- }
-
- return false;
-}
-
-bool SDKExtension::IsMetamodExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- return true;
-#else
- return false;
-#endif
-}
-
-void SDKExtension::OnExtensionPauseChange(bool state)
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeGotPauseChange = true;
-#endif
- SDK_OnPauseChange(state);
-}
-
-void SDKExtension::OnExtensionsAllLoaded()
-{
- SDK_OnAllLoaded();
-}
-
-void SDKExtension::OnExtensionUnload()
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- SDK_OnUnload();
-}
-
-const char *SDKExtension::GetExtensionAuthor()
-{
- return SMEXT_CONF_AUTHOR;
-}
-
-const char *SDKExtension::GetExtensionDateString()
-{
- return SMEXT_CONF_DATESTRING;
-}
-
-const char *SDKExtension::GetExtensionDescription()
-{
- return SMEXT_CONF_DESCRIPTION;
-}
-
-const char *SDKExtension::GetExtensionVerString()
-{
- return SMEXT_CONF_VERSION;
-}
-
-const char *SDKExtension::GetExtensionName()
-{
- return SMEXT_CONF_NAME;
-}
-
-const char *SDKExtension::GetExtensionTag()
-{
- return SMEXT_CONF_LOGTAG;
-}
-
-const char *SDKExtension::GetExtensionURL()
-{
- return SMEXT_CONF_URL;
-}
-
-bool SDKExtension::SDK_OnLoad(char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-void SDKExtension::SDK_OnUnload()
-{
-}
-
-void SDKExtension::SDK_OnPauseChange(bool paused)
-{
-}
-
-void SDKExtension::SDK_OnAllLoaded()
-{
-}
-
-#if defined SMEXT_CONF_METAMOD
-
-PluginId g_PLID = 0; /**< Metamod plugin ID */
-ISmmPlugin *g_PLAPI = NULL; /**< Metamod plugin API */
-SourceHook::ISourceHook *g_SHPtr = NULL; /**< SourceHook pointer */
-ISmmAPI *g_SMAPI = NULL; /**< SourceMM API pointer */
-
-IVEngineServer *engine = NULL; /**< IVEngineServer pointer */
-IServerGameDLL *gamedll = NULL; /**< IServerGameDLL pointer */
-
-/** Exposes the extension to Metamod */
-SMM_API void *PL_EXPOSURE(const char *name, int *code)
-{
-#if defined METAMOD_PLAPI_VERSION
- if (name && !strcmp(name, METAMOD_PLAPI_NAME))
-#else
- if (name && !strcmp(name, PLAPI_NAME))
-#endif
- {
- if (code)
- {
- *code = IFACE_OK;
- }
- return static_cast(g_pExtensionIface);
- }
-
- if (code)
- {
- *code = IFACE_FAILED;
- }
-
- return NULL;
-}
-
-bool SDKExtension::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
-{
- PLUGIN_SAVEVARS();
-
-#if !defined METAMOD_PLAPI_VERSION
- GET_V_IFACE_ANY(serverFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(engineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#else
- GET_V_IFACE_ANY(GetServerFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#endif
-
- m_SourceMMLoaded = true;
-
- return SDK_OnMetamodLoad(ismm, error, maxlen, late);
-}
-
-bool SDKExtension::Unload(char *error, size_t maxlen)
-{
- if (!m_WeAreUnloaded)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unloaded by SourceMod.");
- }
- return false;
- }
-
- return SDK_OnMetamodUnload(error, maxlen);
-}
-
-bool SDKExtension::Pause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be paused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(true, error, maxlen);
-}
-
-bool SDKExtension::Unpause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unpaused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(false, error, maxlen);
-}
-
-const char *SDKExtension::GetAuthor()
-{
- return GetExtensionAuthor();
-}
-
-const char *SDKExtension::GetDate()
-{
- return GetExtensionDateString();
-}
-
-const char *SDKExtension::GetDescription()
-{
- return GetExtensionDescription();
-}
-
-const char *SDKExtension::GetLicense()
-{
- return SMEXT_CONF_LICENSE;
-}
-
-const char *SDKExtension::GetLogTag()
-{
- return GetExtensionTag();
-}
-
-const char *SDKExtension::GetName()
-{
- return GetExtensionName();
-}
-
-const char *SDKExtension::GetURL()
-{
- return GetExtensionURL();
-}
-
-const char *SDKExtension::GetVersion()
-{
- return GetExtensionVerString();
-}
-
-bool SDKExtension::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodUnload(char *error, size_t maxlength)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength)
-{
- return true;
-}
-
-#endif
-
-/* Overload a few things to prevent libstdc++ linking */
-#if defined __linux__ || defined __APPLE__
-extern "C" void __cxa_pure_virtual(void)
-{
-}
-
-void *operator new(size_t size)
-{
- return malloc(size);
-}
-
-void *operator new[](size_t size)
-{
- return malloc(size);
-}
-
-void operator delete(void *ptr)
-{
- free(ptr);
-}
-
-void operator delete[](void * ptr)
-{
- free(ptr);
-}
-#endif
-
diff --git a/extensions/mysql/sdk/smsdk_ext.h b/extensions/mysql/sdk/smsdk_ext.h
deleted file mode 100644
index d77d84db..00000000
--- a/extensions/mysql/sdk/smsdk_ext.h
+++ /dev/null
@@ -1,300 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#ifndef _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-#define _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-
-/**
- * @file smsdk_ext.h
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-#include "smsdk_config.h"
-#include
-#include
-#include
-#include
-#include
-#if defined SMEXT_ENABLE_FORWARDSYS
-#include
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-#include
-#endif //SMEXT_ENABLE_PlAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-#include
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-#include
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
-#include
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-#include
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-#include
-#endif
-#if defined SMEXT_ENABLE_THREADER
-#include
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-#include
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-#include
-#include
-#endif
-
-using namespace SourceMod;
-using namespace SourcePawn;
-
-class SDKExtension :
-#if defined SMEXT_CONF_METAMOD
- public ISmmPlugin,
-#endif
- public IExtensionInterface
-{
-public:
- /** Constructor */
- SDKExtension();
-public:
- /**
- * @brief This is called after the initial loading sequence has been processed.
- *
- * @param error Error message buffer.
- * @param maxlength Size of error message buffer.
- * @param late Whether or not the module was loaded after map load.
- * @return True to succeed loading, false to fail.
- */
- virtual bool SDK_OnLoad(char *error, size_t maxlength, bool late);
-
- /**
- * @brief This is called right before the extension is unloaded.
- */
- virtual void SDK_OnUnload();
-
- /**
- * @brief This is called once all known extensions have been loaded.
- */
- virtual void SDK_OnAllLoaded();
-
- /**
- * @brief Called when the pause state is changed.
- */
- virtual void SDK_OnPauseChange(bool paused);
-
-#if defined SMEXT_CONF_METAMOD
- /**
- * @brief Called when Metamod is attached, before the extension version is called.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @param late Whether or not Metamod considers this a late load.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
-
- /**
- * @brief Called when Metamod is detaching, after the extension version is called.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodUnload(char *error, size_t maxlength);
-
- /**
- * @brief Called when Metamod's pause state is changing.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param paused Pause state being set.
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
-#endif
-
-public: //IExtensionInterface
- virtual bool OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late);
- virtual void OnExtensionUnload();
- virtual void OnExtensionsAllLoaded();
-
- /** Returns whether or not this is a Metamod-based extension */
- virtual bool IsMetamodExtension();
-
- /**
- * @brief Called when the pause state changes.
- *
- * @param state True if being paused, false if being unpaused.
- */
- virtual void OnExtensionPauseChange(bool state);
-
- /** Returns name */
- virtual const char *GetExtensionName();
- /** Returns URL */
- virtual const char *GetExtensionURL();
- /** Returns log tag */
- virtual const char *GetExtensionTag();
- /** Returns author */
- virtual const char *GetExtensionAuthor();
- /** Returns version string */
- virtual const char *GetExtensionVerString();
- /** Returns description string */
- virtual const char *GetExtensionDescription();
- /** Returns date string */
- virtual const char *GetExtensionDateString();
-#if defined SMEXT_CONF_METAMOD
-public: //ISmmPlugin
- /** Called when the extension is attached to Metamod. */
- virtual bool Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlength, bool late);
- /** Returns the author to MM */
- virtual const char *GetAuthor();
- /** Returns the name to MM */
- virtual const char *GetName();
- /** Returns the description to MM */
- virtual const char *GetDescription();
- /** Returns the URL to MM */
- virtual const char *GetURL();
- /** Returns the license to MM */
- virtual const char *GetLicense();
- /** Returns the version string to MM */
- virtual const char *GetVersion();
- /** Returns the date string to MM */
- virtual const char *GetDate();
- /** Returns the logtag to MM */
- virtual const char *GetLogTag();
- /** Called on unload */
- virtual bool Unload(char *error, size_t maxlength);
- /** Called on pause */
- virtual bool Pause(char *error, size_t maxlength);
- /** Called on unpause */
- virtual bool Unpause(char *error, size_t maxlength);
-private:
- bool m_SourceMMLoaded;
- bool m_WeAreUnloaded;
- bool m_WeGotPauseChange;
-#endif
-};
-
-extern SDKExtension *g_pExtensionIface;
-extern IExtension *myself;
-
-extern IShareSys *g_pShareSys;
-extern IShareSys *sharesys; /* Note: Newer name */
-extern ISourceMod *g_pSM;
-extern ISourceMod *smutils; /* Note: Newer name */
-
-/* Optional interfaces are below */
-#if defined SMEXT_ENABLE_FORWARDSYS
-extern IForwardManager *g_pForwards;
-extern IForwardManager *forwards; /* Note: Newer name */
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_HANDLESYS
-extern IHandleSys *g_pHandleSys;
-extern IHandleSys *handlesys; /* Note: Newer name */
-#endif //SMEXT_ENABLE_HANDLESYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-extern IPlayerManager *playerhelpers;
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-extern IDBManager *dbi;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-extern IGameConfigManager *gameconfs;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-extern IMemoryUtils *memutils;
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-extern IGameHelpers *gamehelpers;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-extern ITimerSystem *timersys;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-extern IADTFactory *adtfactory;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-extern IThreader *threader;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-extern ILibrarySys *libsys;
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-PLUGIN_GLOBALVARS();
-extern IVEngineServer *engine;
-extern IServerGameDLL *gamedll;
-#endif
-
-/** Creates a SourceMod interface macro pair */
-#define SM_MKIFACE(name) SMINTERFACE_##name##_NAME, SMINTERFACE_##name##_VERSION
-/** Automates retrieving SourceMod interfaces */
-#define SM_GET_IFACE(prefix, addr) \
- if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-/** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */
-#define SM_GET_LATE_IFACE(prefix, addr) \
- g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)
-/** Validates a SourceMod interface pointer */
-#define SM_CHECK_IFACE(prefix, addr) \
- if (!addr) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-
-#endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
diff --git a/extensions/mysql/sdk/smsdk_config.h b/extensions/mysql/smsdk_config.h
similarity index 100%
rename from extensions/mysql/sdk/smsdk_config.h
rename to extensions/mysql/smsdk_config.h
diff --git a/extensions/regex/AMBuilder b/extensions/regex/AMBuilder
index 8d6ff4d9..696f450e 100644
--- a/extensions/regex/AMBuilder
+++ b/extensions/regex/AMBuilder
@@ -17,7 +17,7 @@ binary.compiler.postlink += [binary.Dep(path)]
binary.sources += [
'extension.cpp',
'CRegEx.cpp',
- 'sdk/smsdk_ext.cpp',
+ '../../public/smsdk_ext.cpp'
]
SM.extensions += [builder.Add(binary)]
diff --git a/extensions/regex/sdk/smsdk_ext.cpp b/extensions/regex/sdk/smsdk_ext.cpp
deleted file mode 100644
index 6404a919..00000000
--- a/extensions/regex/sdk/smsdk_ext.cpp
+++ /dev/null
@@ -1,462 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#include
-#include
-#include "smsdk_ext.h"
-
-/**
- * @file smsdk_ext.cpp
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-IExtension *myself = NULL; /**< Ourself */
-IShareSys *g_pShareSys = NULL; /**< Share system */
-IShareSys *sharesys = NULL; /**< Share system */
-ISourceMod *g_pSM = NULL; /**< SourceMod helpers */
-ISourceMod *smutils = NULL; /**< SourceMod helpers */
-
-#if defined SMEXT_ENABLE_FORWARDSYS
-IForwardManager *g_pForwards = NULL; /**< Forward system */
-IForwardManager *forwards = NULL; /**< Forward system */
-#endif
-#if defined SMEXT_ENABLE_HANDLESYS
-IHandleSys *g_pHandleSys = NULL; /**< Handle system */
-IHandleSys *handlesys = NULL; /**< Handle system */
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-IPlayerManager *playerhelpers = NULL; /**< Player helpers */
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-IDBManager *dbi = NULL; /**< DB Manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-IGameConfigManager *gameconfs = NULL; /**< Game config manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-IMemoryUtils *memutils = NULL;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMEHELPERS
-IGameHelpers *gamehelpers = NULL;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-ITimerSystem *timersys = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-IADTFactory *adtfactory = NULL;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-IThreader *threader = NULL;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-ILibrarySys *libsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-SourceMod::IPluginManager *plsys;
-#endif
-#if defined SMEXT_ENABLE_MENUS
-IMenuManager *menus = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-IAdminSystem *adminsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
-ITextParsers *textparsers = NULL;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-IUserMessages *usermsgs = NULL;
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-ITranslator *translator = NULL;
-#endif
-
-/** Exports the main interface */
-PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
-{
- return g_pExtensionIface;
-}
-
-SDKExtension::SDKExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- m_SourceMMLoaded = false;
- m_WeAreUnloaded = false;
- m_WeGotPauseChange = false;
-#endif
-}
-
-bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late)
-{
- g_pShareSys = sharesys = sys;
- myself = me;
-
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-
- if (!m_SourceMMLoaded)
- {
- if (error)
- {
- snprintf(error, maxlength, "Metamod attach failed");
- }
- return false;
- }
-#endif
- SM_GET_IFACE(SOURCEMOD, g_pSM);
- smutils = g_pSM;
-#if defined SMEXT_ENABLE_HANDLESYS
- SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
- handlesys = g_pHandleSys;
-#endif
-#if defined SMEXT_ENABLE_FORWARDSYS
- SM_GET_IFACE(FORWARDMANAGER, g_pForwards);
- forwards = g_pForwards;
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
- SM_GET_IFACE(PLAYERMANAGER, playerhelpers);
-#endif
-#if defined SMEXT_ENABLE_DBMANAGER
- SM_GET_IFACE(DBI, dbi);
-#endif
-#if defined SMEXT_ENABLE_GAMECONF
- SM_GET_IFACE(GAMECONFIG, gameconfs);
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
- SM_GET_IFACE(MEMORYUTILS, memutils);
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
- SM_GET_IFACE(GAMEHELPERS, gamehelpers);
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
- SM_GET_IFACE(TIMERSYS, timersys);
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
- SM_GET_IFACE(ADTFACTORY, adtfactory);
-#endif
-#if defined SMEXT_ENABLE_THREADER
- SM_GET_IFACE(THREADER, threader);
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
- SM_GET_IFACE(LIBRARYSYS, libsys);
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
- SM_GET_IFACE(PLUGINSYSTEM, plsys);
-#endif
-#if defined SMEXT_ENABLE_MENUS
- SM_GET_IFACE(MENUMANAGER, menus);
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
- SM_GET_IFACE(ADMINSYS, adminsys);
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
- SM_GET_IFACE(TEXTPARSERS, textparsers);
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
- SM_GET_IFACE(USERMSGS, usermsgs);
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
- SM_GET_IFACE(TRANSLATOR, translator);
-#endif
-
- if (SDK_OnLoad(error, maxlength, late))
- {
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- return true;
- }
-
- return false;
-}
-
-bool SDKExtension::IsMetamodExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- return true;
-#else
- return false;
-#endif
-}
-
-void SDKExtension::OnExtensionPauseChange(bool state)
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeGotPauseChange = true;
-#endif
- SDK_OnPauseChange(state);
-}
-
-void SDKExtension::OnExtensionsAllLoaded()
-{
- SDK_OnAllLoaded();
-}
-
-void SDKExtension::OnExtensionUnload()
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- SDK_OnUnload();
-}
-
-const char *SDKExtension::GetExtensionAuthor()
-{
- return SMEXT_CONF_AUTHOR;
-}
-
-const char *SDKExtension::GetExtensionDateString()
-{
- return SMEXT_CONF_DATESTRING;
-}
-
-const char *SDKExtension::GetExtensionDescription()
-{
- return SMEXT_CONF_DESCRIPTION;
-}
-
-const char *SDKExtension::GetExtensionVerString()
-{
- return SMEXT_CONF_VERSION;
-}
-
-const char *SDKExtension::GetExtensionName()
-{
- return SMEXT_CONF_NAME;
-}
-
-const char *SDKExtension::GetExtensionTag()
-{
- return SMEXT_CONF_LOGTAG;
-}
-
-const char *SDKExtension::GetExtensionURL()
-{
- return SMEXT_CONF_URL;
-}
-
-bool SDKExtension::SDK_OnLoad(char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-void SDKExtension::SDK_OnUnload()
-{
-}
-
-void SDKExtension::SDK_OnPauseChange(bool paused)
-{
-}
-
-void SDKExtension::SDK_OnAllLoaded()
-{
-}
-
-#if defined SMEXT_CONF_METAMOD
-
-PluginId g_PLID = 0; /**< Metamod plugin ID */
-ISmmPlugin *g_PLAPI = NULL; /**< Metamod plugin API */
-SourceHook::ISourceHook *g_SHPtr = NULL; /**< SourceHook pointer */
-ISmmAPI *g_SMAPI = NULL; /**< SourceMM API pointer */
-
-IVEngineServer *engine = NULL; /**< IVEngineServer pointer */
-IServerGameDLL *gamedll = NULL; /**< IServerGameDLL pointer */
-
-/** Exposes the extension to Metamod */
-SMM_API void *PL_EXPOSURE(const char *name, int *code)
-{
-#if defined METAMOD_PLAPI_VERSION
- if (name && !strcmp(name, METAMOD_PLAPI_NAME))
-#else
- if (name && !strcmp(name, PLAPI_NAME))
-#endif
- {
- if (code)
- {
- *code = IFACE_OK;
- }
- return static_cast(g_pExtensionIface);
- }
-
- if (code)
- {
- *code = IFACE_FAILED;
- }
-
- return NULL;
-}
-
-bool SDKExtension::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
-{
- PLUGIN_SAVEVARS();
-
-#if !defined METAMOD_PLAPI_VERSION
- GET_V_IFACE_ANY(serverFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(engineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#else
- GET_V_IFACE_ANY(GetServerFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#endif
-
- m_SourceMMLoaded = true;
-
- return SDK_OnMetamodLoad(ismm, error, maxlen, late);
-}
-
-bool SDKExtension::Unload(char *error, size_t maxlen)
-{
- if (!m_WeAreUnloaded)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unloaded by SourceMod.");
- }
- return false;
- }
-
- return SDK_OnMetamodUnload(error, maxlen);
-}
-
-bool SDKExtension::Pause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be paused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(true, error, maxlen);
-}
-
-bool SDKExtension::Unpause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unpaused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(false, error, maxlen);
-}
-
-const char *SDKExtension::GetAuthor()
-{
- return GetExtensionAuthor();
-}
-
-const char *SDKExtension::GetDate()
-{
- return GetExtensionDateString();
-}
-
-const char *SDKExtension::GetDescription()
-{
- return GetExtensionDescription();
-}
-
-const char *SDKExtension::GetLicense()
-{
- return SMEXT_CONF_LICENSE;
-}
-
-const char *SDKExtension::GetLogTag()
-{
- return GetExtensionTag();
-}
-
-const char *SDKExtension::GetName()
-{
- return GetExtensionName();
-}
-
-const char *SDKExtension::GetURL()
-{
- return GetExtensionURL();
-}
-
-const char *SDKExtension::GetVersion()
-{
- return GetExtensionVerString();
-}
-
-bool SDKExtension::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodUnload(char *error, size_t maxlength)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength)
-{
- return true;
-}
-
-#endif
-
-/* Overload a few things to prevent libstdc++ linking */
-#if defined __linux__ || defined __APPLE__
-extern "C" void __cxa_pure_virtual(void)
-{
-}
-
-void *operator new(size_t size)
-{
- return malloc(size);
-}
-
-void *operator new[](size_t size)
-{
- return malloc(size);
-}
-
-void operator delete(void *ptr)
-{
- free(ptr);
-}
-
-void operator delete[](void * ptr)
-{
- free(ptr);
-}
-#endif
-
diff --git a/extensions/regex/sdk/smsdk_ext.h b/extensions/regex/sdk/smsdk_ext.h
deleted file mode 100644
index 0ee0dfa2..00000000
--- a/extensions/regex/sdk/smsdk_ext.h
+++ /dev/null
@@ -1,327 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#ifndef _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-#define _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-
-/**
- * @file smsdk_ext.h
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-#include "smsdk_config.h"
-#include
-#include
-#include
-#include
-#include
-#if defined SMEXT_ENABLE_FORWARDSYS
-#include
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-#include
-#endif //SMEXT_ENABLE_PlAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-#include
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-#include
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
-#include
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-#include
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-#include
-#endif
-#if defined SMEXT_ENABLE_THREADER
-#include
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_MENUS
-#include
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
-#include
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-#include
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-#include
-#include
-#endif
-
-using namespace SourceMod;
-using namespace SourcePawn;
-
-class SDKExtension :
-#if defined SMEXT_CONF_METAMOD
- public ISmmPlugin,
-#endif
- public IExtensionInterface
-{
-public:
- /** Constructor */
- SDKExtension();
-public:
- /**
- * @brief This is called after the initial loading sequence has been processed.
- *
- * @param error Error message buffer.
- * @param maxlength Size of error message buffer.
- * @param late Whether or not the module was loaded after map load.
- * @return True to succeed loading, false to fail.
- */
- virtual bool SDK_OnLoad(char *error, size_t maxlength, bool late);
-
- /**
- * @brief This is called right before the extension is unloaded.
- */
- virtual void SDK_OnUnload();
-
- /**
- * @brief This is called once all known extensions have been loaded.
- */
- virtual void SDK_OnAllLoaded();
-
- /**
- * @brief Called when the pause state is changed.
- */
- virtual void SDK_OnPauseChange(bool paused);
-
-#if defined SMEXT_CONF_METAMOD
- /**
- * @brief Called when Metamod is attached, before the extension version is called.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @param late Whether or not Metamod considers this a late load.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
-
- /**
- * @brief Called when Metamod is detaching, after the extension version is called.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodUnload(char *error, size_t maxlength);
-
- /**
- * @brief Called when Metamod's pause state is changing.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param paused Pause state being set.
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
-#endif
-
-public: //IExtensionInterface
- virtual bool OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late);
- virtual void OnExtensionUnload();
- virtual void OnExtensionsAllLoaded();
-
- /** Returns whether or not this is a Metamod-based extension */
- virtual bool IsMetamodExtension();
-
- /**
- * @brief Called when the pause state changes.
- *
- * @param state True if being paused, false if being unpaused.
- */
- virtual void OnExtensionPauseChange(bool state);
-
- /** Returns name */
- virtual const char *GetExtensionName();
- /** Returns URL */
- virtual const char *GetExtensionURL();
- /** Returns log tag */
- virtual const char *GetExtensionTag();
- /** Returns author */
- virtual const char *GetExtensionAuthor();
- /** Returns version string */
- virtual const char *GetExtensionVerString();
- /** Returns description string */
- virtual const char *GetExtensionDescription();
- /** Returns date string */
- virtual const char *GetExtensionDateString();
-#if defined SMEXT_CONF_METAMOD
-public: //ISmmPlugin
- /** Called when the extension is attached to Metamod. */
- virtual bool Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlength, bool late);
- /** Returns the author to MM */
- virtual const char *GetAuthor();
- /** Returns the name to MM */
- virtual const char *GetName();
- /** Returns the description to MM */
- virtual const char *GetDescription();
- /** Returns the URL to MM */
- virtual const char *GetURL();
- /** Returns the license to MM */
- virtual const char *GetLicense();
- /** Returns the version string to MM */
- virtual const char *GetVersion();
- /** Returns the date string to MM */
- virtual const char *GetDate();
- /** Returns the logtag to MM */
- virtual const char *GetLogTag();
- /** Called on unload */
- virtual bool Unload(char *error, size_t maxlength);
- /** Called on pause */
- virtual bool Pause(char *error, size_t maxlength);
- /** Called on unpause */
- virtual bool Unpause(char *error, size_t maxlength);
-private:
- bool m_SourceMMLoaded;
- bool m_WeAreUnloaded;
- bool m_WeGotPauseChange;
-#endif
-};
-
-extern SDKExtension *g_pExtensionIface;
-extern IExtension *myself;
-
-extern IShareSys *g_pShareSys;
-extern IShareSys *sharesys; /* Note: Newer name */
-extern ISourceMod *g_pSM;
-extern ISourceMod *smutils; /* Note: Newer name */
-
-/* Optional interfaces are below */
-#if defined SMEXT_ENABLE_FORWARDSYS
-extern IForwardManager *g_pForwards;
-extern IForwardManager *forwards; /* Note: Newer name */
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_HANDLESYS
-extern IHandleSys *g_pHandleSys;
-extern IHandleSys *handlesys; /* Note: Newer name */
-#endif //SMEXT_ENABLE_HANDLESYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-extern IPlayerManager *playerhelpers;
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-extern IDBManager *dbi;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-extern IGameConfigManager *gameconfs;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-extern IMemoryUtils *memutils;
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-extern IGameHelpers *gamehelpers;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-extern ITimerSystem *timersys;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-extern IADTFactory *adtfactory;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-extern IThreader *threader;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-extern ILibrarySys *libsys;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-extern SourceMod::IPluginManager *plsys;
-#endif
-#if defined SMEXT_ENABLE_MENUS
-extern IMenuManager *menus;
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-extern IAdminSystem *adminsys;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-extern IUserMessages *usermsgs;
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-PLUGIN_GLOBALVARS();
-extern IVEngineServer *engine;
-extern IServerGameDLL *gamedll;
-#endif
-
-/** Creates a SourceMod interface macro pair */
-#define SM_MKIFACE(name) SMINTERFACE_##name##_NAME, SMINTERFACE_##name##_VERSION
-/** Automates retrieving SourceMod interfaces */
-#define SM_GET_IFACE(prefix, addr) \
- if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-/** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */
-#define SM_GET_LATE_IFACE(prefix, addr) \
- g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)
-/** Validates a SourceMod interface pointer */
-#define SM_CHECK_IFACE(prefix, addr) \
- if (!addr) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-
-#endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
diff --git a/extensions/regex/sdk/smsdk_config.h b/extensions/regex/smsdk_config.h
similarity index 100%
rename from extensions/regex/sdk/smsdk_config.h
rename to extensions/regex/smsdk_config.h
diff --git a/extensions/sdkhooks/AMBuilder b/extensions/sdkhooks/AMBuilder
index 061d3278..7faca983 100644
--- a/extensions/sdkhooks/AMBuilder
+++ b/extensions/sdkhooks/AMBuilder
@@ -16,6 +16,6 @@ for sdk_name in SM.sdks:
'natives.cpp',
'takedamageinfohack.cpp',
'util.cpp',
- 'sdk/smsdk_ext.cpp',
+ '../../public/smsdk_ext.cpp'
]
SM.extensions += [builder.Add(binary)]
diff --git a/extensions/sdkhooks/extension.cpp b/extensions/sdkhooks/extension.cpp
index e6be9de5..d9d764d6 100644
--- a/extensions/sdkhooks/extension.cpp
+++ b/extensions/sdkhooks/extension.cpp
@@ -101,6 +101,10 @@ CBitVec m_EntityExists;
IBinTools *g_pBinTools = NULL;
ICvar *icvar = NULL;
+#if SOURCE_ENGINE >= SE_ORANGEBOX
+IServerTools *servertools = NULL;
+#endif
+
// global hooks and forwards
IForward *g_pOnEntityCreated = NULL;
IForward *g_pOnEntityDestroyed = NULL;
@@ -349,6 +353,7 @@ bool SDKHooks::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlen, bool
GET_V_IFACE_CURRENT(GetEngineFactory, icvar, ICvar, CVAR_INTERFACE_VERSION);
#if SOURCE_ENGINE >= SE_ORANGEBOX
+ GET_V_IFACE_ANY(GetServerFactory, servertools, IServerTools, VSERVERTOOLS_INTERFACE_VERSION);
g_pCVar = icvar;
#endif
CONVAR_REGISTER(this);
diff --git a/extensions/sdkhooks/extension.h b/extensions/sdkhooks/extension.h
index 5961b2b2..0e8e2223 100644
--- a/extensions/sdkhooks/extension.h
+++ b/extensions/sdkhooks/extension.h
@@ -12,6 +12,10 @@
#include
#include
+#if SOURCE_ENGINE >= SE_ORANGEBOX
+#include
+#endif
+
#include "takedamageinfohack.h"
#ifndef METAMOD_PLAPI_VERSION
@@ -334,4 +338,9 @@ extern CGlobalVars *gpGlobals;
extern ke::Vector g_HookList[SDKHook_MAXHOOKS];
extern ICvar *icvar;
+
+#if SOURCE_ENGINE >= SE_ORANGEBOX
+extern IServerTools *servertools;
+#endif
+
#endif // _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
diff --git a/extensions/sdkhooks/sdk/smsdk_ext.cpp b/extensions/sdkhooks/sdk/smsdk_ext.cpp
deleted file mode 100644
index bc5e544e..00000000
--- a/extensions/sdkhooks/sdk/smsdk_ext.cpp
+++ /dev/null
@@ -1,473 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#include
-#include
-#include "smsdk_ext.h"
-
-/**
- * @file smsdk_ext.cpp
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-IExtension *myself = NULL; /**< Ourself */
-IShareSys *g_pShareSys = NULL; /**< Share system */
-IShareSys *sharesys = NULL; /**< Share system */
-ISourceMod *g_pSM = NULL; /**< SourceMod helpers */
-ISourceMod *smutils = NULL; /**< SourceMod helpers */
-
-#if defined SMEXT_ENABLE_FORWARDSYS
-IForwardManager *g_pForwards = NULL; /**< Forward system */
-IForwardManager *forwards = NULL; /**< Forward system */
-#endif
-#if defined SMEXT_ENABLE_HANDLESYS
-IHandleSys *g_pHandleSys = NULL; /**< Handle system */
-IHandleSys *handlesys = NULL; /**< Handle system */
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-IPlayerManager *playerhelpers = NULL; /**< Player helpers */
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-IDBManager *dbi = NULL; /**< DB Manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-IGameConfigManager *gameconfs = NULL; /**< Game config manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-IMemoryUtils *memutils = NULL;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMEHELPERS
-IGameHelpers *gamehelpers = NULL;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-ITimerSystem *timersys = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-IADTFactory *adtfactory = NULL;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-IThreader *threader = NULL;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-ILibrarySys *libsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-SourceMod::IPluginManager *plsys;
-#endif
-#if defined SMEXT_ENABLE_MENUS
-IMenuManager *menus = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-IAdminSystem *adminsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
-ITextParsers *textparsers = NULL;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-IUserMessages *usermsgs = NULL;
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-ITranslator *translator = NULL;
-#endif
-#if defined SMEXT_ENABLE_NINVOKE
-INativeInterface *ninvoke = NULL;
-#endif
-
-/** Exports the main interface */
-PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
-{
- return g_pExtensionIface;
-}
-
-SDKExtension::SDKExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- m_SourceMMLoaded = false;
- m_WeAreUnloaded = false;
- m_WeGotPauseChange = false;
-#endif
-}
-
-bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late)
-{
- g_pShareSys = sharesys = sys;
- myself = me;
-
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-
- if (!m_SourceMMLoaded)
- {
- if (error)
- {
- snprintf(error, maxlength, "Metamod attach failed");
- }
- return false;
- }
-#endif
- SM_GET_IFACE(SOURCEMOD, g_pSM);
- smutils = g_pSM;
-#if defined SMEXT_ENABLE_HANDLESYS
- SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
- handlesys = g_pHandleSys;
-#endif
-#if defined SMEXT_ENABLE_FORWARDSYS
- SM_GET_IFACE(FORWARDMANAGER, g_pForwards);
- forwards = g_pForwards;
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
- SM_GET_IFACE(PLAYERMANAGER, playerhelpers);
-#endif
-#if defined SMEXT_ENABLE_DBMANAGER
- SM_GET_IFACE(DBI, dbi);
-#endif
-#if defined SMEXT_ENABLE_GAMECONF
- SM_GET_IFACE(GAMECONFIG, gameconfs);
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
- SM_GET_IFACE(MEMORYUTILS, memutils);
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
- SM_GET_IFACE(GAMEHELPERS, gamehelpers);
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
- SM_GET_IFACE(TIMERSYS, timersys);
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
- SM_GET_IFACE(ADTFACTORY, adtfactory);
-#endif
-#if defined SMEXT_ENABLE_THREADER
- SM_GET_IFACE(THREADER, threader);
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
- SM_GET_IFACE(LIBRARYSYS, libsys);
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
- SM_GET_IFACE(PLUGINSYSTEM, plsys);
-#endif
-#if defined SMEXT_ENABLE_MENUS
- SM_GET_IFACE(MENUMANAGER, menus);
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
- SM_GET_IFACE(ADMINSYS, adminsys);
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
- SM_GET_IFACE(TEXTPARSERS, textparsers);
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
- SM_GET_IFACE(USERMSGS, usermsgs);
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
- SM_GET_IFACE(TRANSLATOR, translator);
-#endif
-
- if (SDK_OnLoad(error, maxlength, late))
- {
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- return true;
- }
-
- return false;
-}
-
-bool SDKExtension::IsMetamodExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- return true;
-#else
- return false;
-#endif
-}
-
-void SDKExtension::OnExtensionPauseChange(bool state)
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeGotPauseChange = true;
-#endif
- SDK_OnPauseChange(state);
-}
-
-void SDKExtension::OnExtensionsAllLoaded()
-{
- SDK_OnAllLoaded();
-}
-
-void SDKExtension::OnExtensionUnload()
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- SDK_OnUnload();
-}
-
-const char *SDKExtension::GetExtensionAuthor()
-{
- return SMEXT_CONF_AUTHOR;
-}
-
-const char *SDKExtension::GetExtensionDateString()
-{
- return SMEXT_CONF_DATESTRING;
-}
-
-const char *SDKExtension::GetExtensionDescription()
-{
- return SMEXT_CONF_DESCRIPTION;
-}
-
-const char *SDKExtension::GetExtensionVerString()
-{
- return SMEXT_CONF_VERSION;
-}
-
-const char *SDKExtension::GetExtensionName()
-{
- return SMEXT_CONF_NAME;
-}
-
-const char *SDKExtension::GetExtensionTag()
-{
- return SMEXT_CONF_LOGTAG;
-}
-
-const char *SDKExtension::GetExtensionURL()
-{
- return SMEXT_CONF_URL;
-}
-
-bool SDKExtension::SDK_OnLoad(char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-void SDKExtension::SDK_OnUnload()
-{
-}
-
-void SDKExtension::SDK_OnPauseChange(bool paused)
-{
-}
-
-void SDKExtension::SDK_OnAllLoaded()
-{
-}
-
-#if defined SMEXT_CONF_METAMOD
-
-PluginId g_PLID = 0; /**< Metamod plugin ID */
-ISmmPlugin *g_PLAPI = NULL; /**< Metamod plugin API */
-SourceHook::ISourceHook *g_SHPtr = NULL; /**< SourceHook pointer */
-ISmmAPI *g_SMAPI = NULL; /**< SourceMM API pointer */
-
-IVEngineServer *engine = NULL; /**< IVEngineServer pointer */
-IServerGameDLL *gamedll = NULL; /**< IServerGameDLL pointer */
-
-#if SOURCE_ENGINE >= SE_ORANGEBOX
-IServerTools *servertools = NULL; /**< IServerTools pointer */
-#endif
-
-/** Exposes the extension to Metamod */
-SMM_API void *PL_EXPOSURE(const char *name, int *code)
-{
-#if defined METAMOD_PLAPI_VERSION
- if (name && !strcmp(name, METAMOD_PLAPI_NAME))
-#else
- if (name && !strcmp(name, PLAPI_NAME))
-#endif
- {
- if (code)
- {
- *code = IFACE_OK;
- }
- return static_cast(g_pExtensionIface);
- }
-
- if (code)
- {
- *code = IFACE_FAILED;
- }
-
- return NULL;
-}
-
-bool SDKExtension::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
-{
- PLUGIN_SAVEVARS();
-
-#if !defined METAMOD_PLAPI_VERSION
- GET_V_IFACE_ANY(serverFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(engineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#else
- GET_V_IFACE_ANY(GetServerFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#endif
-
-#if SOURCE_ENGINE >= SE_ORANGEBOX
- GET_V_IFACE_CURRENT(GetServerFactory, servertools, IServerTools, VSERVERTOOLS_INTERFACE_VERSION);
-#endif
-
- m_SourceMMLoaded = true;
-
- return SDK_OnMetamodLoad(ismm, error, maxlen, late);
-}
-
-bool SDKExtension::Unload(char *error, size_t maxlen)
-{
- if (!m_WeAreUnloaded)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unloaded by SourceMod.");
- }
- return false;
- }
-
- return SDK_OnMetamodUnload(error, maxlen);
-}
-
-bool SDKExtension::Pause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be paused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(true, error, maxlen);
-}
-
-bool SDKExtension::Unpause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unpaused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(false, error, maxlen);
-}
-
-const char *SDKExtension::GetAuthor()
-{
- return GetExtensionAuthor();
-}
-
-const char *SDKExtension::GetDate()
-{
- return GetExtensionDateString();
-}
-
-const char *SDKExtension::GetDescription()
-{
- return GetExtensionDescription();
-}
-
-const char *SDKExtension::GetLicense()
-{
- return SMEXT_CONF_LICENSE;
-}
-
-const char *SDKExtension::GetLogTag()
-{
- return GetExtensionTag();
-}
-
-const char *SDKExtension::GetName()
-{
- return GetExtensionName();
-}
-
-const char *SDKExtension::GetURL()
-{
- return GetExtensionURL();
-}
-
-const char *SDKExtension::GetVersion()
-{
- return GetExtensionVerString();
-}
-
-bool SDKExtension::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodUnload(char *error, size_t maxlength)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength)
-{
- return true;
-}
-
-#endif
-
-/* Overload a few things to prevent libstdc++ linking */
-#if defined __linux__ || defined __APPLE__
-extern "C" void __cxa_pure_virtual(void)
-{
-}
-
-void *operator new(size_t size)
-{
- return malloc(size);
-}
-
-void *operator new[](size_t size)
-{
- return malloc(size);
-}
-
-void operator delete(void *ptr)
-{
- free(ptr);
-}
-
-void operator delete[](void * ptr)
-{
- free(ptr);
-}
-#endif
-
diff --git a/extensions/sdkhooks/sdk/smsdk_ext.h b/extensions/sdkhooks/sdk/smsdk_ext.h
deleted file mode 100644
index 55990333..00000000
--- a/extensions/sdkhooks/sdk/smsdk_ext.h
+++ /dev/null
@@ -1,343 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#ifndef _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-#define _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-
-/**
- * @file smsdk_ext.h
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-#include "smsdk_config.h"
-#include
-#include
-#include
-#include
-#include
-#if defined SMEXT_ENABLE_FORWARDSYS
-#include
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-#include
-#endif //SMEXT_ENABLE_PlAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-#include
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-#include
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
-#include
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-#include
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-#include
-#endif
-#if defined SMEXT_ENABLE_THREADER
-#include
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_MENUS
-#include
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
-#include
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-#include
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-#include
-#endif
-#if defined SMEXT_ENABLE_NINVOKE
-#include
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-#include
-#include
-#include
-#endif
-
-using namespace SourceMod;
-using namespace SourcePawn;
-
-class SDKExtension :
-#if defined SMEXT_CONF_METAMOD
- public ISmmPlugin,
-#endif
- public IExtensionInterface
-{
-public:
- /** Constructor */
- SDKExtension();
-public:
- /**
- * @brief This is called after the initial loading sequence has been processed.
- *
- * @param error Error message buffer.
- * @param maxlength Size of error message buffer.
- * @param late Whether or not the module was loaded after map load.
- * @return True to succeed loading, false to fail.
- */
- virtual bool SDK_OnLoad(char *error, size_t maxlength, bool late);
-
- /**
- * @brief This is called right before the extension is unloaded.
- */
- virtual void SDK_OnUnload();
-
- /**
- * @brief This is called once all known extensions have been loaded.
- */
- virtual void SDK_OnAllLoaded();
-
- /**
- * @brief Called when the pause state is changed.
- */
- virtual void SDK_OnPauseChange(bool paused);
-
-#if defined SMEXT_CONF_METAMOD
- /**
- * @brief Called when Metamod is attached, before the extension version is called.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @param late Whether or not Metamod considers this a late load.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
-
- /**
- * @brief Called when Metamod is detaching, after the extension version is called.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodUnload(char *error, size_t maxlength);
-
- /**
- * @brief Called when Metamod's pause state is changing.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param paused Pause state being set.
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
-#endif
-
-public: //IExtensionInterface
- virtual bool OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late);
- virtual void OnExtensionUnload();
- virtual void OnExtensionsAllLoaded();
-
- /** Returns whether or not this is a Metamod-based extension */
- virtual bool IsMetamodExtension();
-
- /**
- * @brief Called when the pause state changes.
- *
- * @param state True if being paused, false if being unpaused.
- */
- virtual void OnExtensionPauseChange(bool state);
-
- /** Returns name */
- virtual const char *GetExtensionName();
- /** Returns URL */
- virtual const char *GetExtensionURL();
- /** Returns log tag */
- virtual const char *GetExtensionTag();
- /** Returns author */
- virtual const char *GetExtensionAuthor();
- /** Returns version string */
- virtual const char *GetExtensionVerString();
- /** Returns description string */
- virtual const char *GetExtensionDescription();
- /** Returns date string */
- virtual const char *GetExtensionDateString();
-#if defined SMEXT_CONF_METAMOD
-public: //ISmmPlugin
- /** Called when the extension is attached to Metamod. */
- virtual bool Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlength, bool late);
- /** Returns the author to MM */
- virtual const char *GetAuthor();
- /** Returns the name to MM */
- virtual const char *GetName();
- /** Returns the description to MM */
- virtual const char *GetDescription();
- /** Returns the URL to MM */
- virtual const char *GetURL();
- /** Returns the license to MM */
- virtual const char *GetLicense();
- /** Returns the version string to MM */
- virtual const char *GetVersion();
- /** Returns the date string to MM */
- virtual const char *GetDate();
- /** Returns the logtag to MM */
- virtual const char *GetLogTag();
- /** Called on unload */
- virtual bool Unload(char *error, size_t maxlength);
- /** Called on pause */
- virtual bool Pause(char *error, size_t maxlength);
- /** Called on unpause */
- virtual bool Unpause(char *error, size_t maxlength);
-private:
- bool m_SourceMMLoaded;
- bool m_WeAreUnloaded;
- bool m_WeGotPauseChange;
-#endif
-};
-
-extern SDKExtension *g_pExtensionIface;
-extern IExtension *myself;
-
-extern IShareSys *g_pShareSys;
-extern IShareSys *sharesys; /* Note: Newer name */
-extern ISourceMod *g_pSM;
-extern ISourceMod *smutils; /* Note: Newer name */
-
-/* Optional interfaces are below */
-#if defined SMEXT_ENABLE_FORWARDSYS
-extern IForwardManager *g_pForwards;
-extern IForwardManager *forwards; /* Note: Newer name */
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_HANDLESYS
-extern IHandleSys *g_pHandleSys;
-extern IHandleSys *handlesys; /* Note: Newer name */
-#endif //SMEXT_ENABLE_HANDLESYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-extern IPlayerManager *playerhelpers;
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-extern IDBManager *dbi;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-extern IGameConfigManager *gameconfs;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-extern IMemoryUtils *memutils;
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-extern IGameHelpers *gamehelpers;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-extern ITimerSystem *timersys;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-extern IADTFactory *adtfactory;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-extern IThreader *threader;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-extern ILibrarySys *libsys;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-extern SourceMod::IPluginManager *plsys;
-#endif
-#if defined SMEXT_ENABLE_MENUS
-extern IMenuManager *menus;
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-extern IAdminSystem *adminsys;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-extern IUserMessages *usermsgs;
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-extern ITranslator *translator;
-#endif
-#if defined SMEXT_ENABLE_NINVOKE
-extern INativeInterface *ninvoke;
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-PLUGIN_GLOBALVARS();
-extern IVEngineServer *engine;
-extern IServerGameDLL *gamedll;
-#if SOURCE_ENGINE >= SE_ORANGEBOX
-extern IServerTools *servertools;
-#endif
-#endif
-
-/** Creates a SourceMod interface macro pair */
-#define SM_MKIFACE(name) SMINTERFACE_##name##_NAME, SMINTERFACE_##name##_VERSION
-/** Automates retrieving SourceMod interfaces */
-#define SM_GET_IFACE(prefix, addr) \
- if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-/** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */
-#define SM_GET_LATE_IFACE(prefix, addr) \
- g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)
-/** Validates a SourceMod interface pointer */
-#define SM_CHECK_IFACE(prefix, addr) \
- if (!addr) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-
-#endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
diff --git a/extensions/sdkhooks/sdk/smsdk_config.h b/extensions/sdkhooks/smsdk_config.h
similarity index 100%
rename from extensions/sdkhooks/sdk/smsdk_config.h
rename to extensions/sdkhooks/smsdk_config.h
diff --git a/extensions/sdktools/AMBuilder b/extensions/sdktools/AMBuilder
index 43291991..38093aa8 100644
--- a/extensions/sdktools/AMBuilder
+++ b/extensions/sdktools/AMBuilder
@@ -38,8 +38,8 @@ for sdk_name in SM.sdks:
'hooks.cpp',
'gamerulesnatives.cpp',
'vstringtable.cpp',
- 'CDetour/detours.cpp',
- 'sdk/smsdk_ext.cpp',
- 'asm/asm.c'
+ '../../public/smsdk_ext.cpp',
+ '../../public/CDetour/detours.cpp',
+ '../../public/asm/asm.c'
]
SM.extensions += [builder.Add(binary)]
diff --git a/extensions/sdktools/asm/asm.c b/extensions/sdktools/asm/asm.c
deleted file mode 100644
index 2facf8d9..00000000
--- a/extensions/sdktools/asm/asm.c
+++ /dev/null
@@ -1,421 +0,0 @@
-#include "asm.h"
-
-#ifndef WIN32
-#define _GNU_SOURCE
-#include
-#include
-
-#define REG_EAX 0
-#define REG_ECX 1
-#define REG_EDX 2
-#define REG_EBX 3
-
-#define IA32_MOV_REG_IMM 0xB8 // encoding is +r
-#endif
-
-extern void Msg( const char *, ... );
-
-/**
-* Checks if a call to a fpic thunk has just been written into dest.
-* If found replaces it with a direct mov that sets the required register to the value of pc.
-*
-* @param dest Destination buffer where a call opcode + addr (5 bytes) has just been written.
-* @param pc The program counter value that needs to be set (usually the next address from the source).
-* @noreturn
-*/
-void check_thunks(unsigned char *dest, unsigned char *pc)
-{
-#if defined WIN32
- return;
-#else
- /* Step write address back 4 to the start of the function address */
- unsigned char *writeaddr = dest - 4;
- unsigned char *calloffset = *(unsigned char **)writeaddr;
- unsigned char *calladdr = (unsigned char *)(dest + (unsigned int)calloffset);
-
- /* Lookup name of function being called */
- if ((*calladdr == 0x8B) && (*(calladdr+2) == 0x24) && (*(calladdr+3) == 0xC3))
- {
- //a thunk maybe?
- char movByte = IA32_MOV_REG_IMM;
-
- /* Calculate the correct mov opcode */
- switch (*(calladdr+1))
- {
- case 0x04:
- {
- movByte += REG_EAX;
- break;
- }
- case 0x1C:
- {
- movByte += REG_EBX;
- break;
- }
- case 0x0C:
- {
- movByte += REG_ECX;
- break;
- }
- case 0x14:
- {
- movByte += REG_EDX;
- break;
- }
- default:
- {
- Msg("Unknown thunk: %c\n", *(calladdr+1));
- break;
- }
- }
-
- /* Move our write address back one to where the call opcode was */
- writeaddr--;
-
-
- /* Write our mov */
- *writeaddr = movByte;
- writeaddr++;
-
- /* Write the value - The provided program counter value */
- *(void **)writeaddr = (void *)pc;
- writeaddr += 4;
- }
-
- return;
-#endif
-}
-
-//if dest is NULL, returns minimum number of bytes needed to be copied
-//if dest is not NULL, it will copy the bytes to dest as well as fix CALLs and JMPs
-//http://www.devmaster.net/forums/showthread.php?t=2311
-int copy_bytes(unsigned char *func, unsigned char* dest, int required_len) {
- int bytecount = 0;
-
- while(bytecount < required_len && *func != 0xCC)
- {
- // prefixes F0h, F2h, F3h, 66h, 67h, D8h-DFh, 2Eh, 36h, 3Eh, 26h, 64h and 65h
- int operandSize = 4;
- int FPU = 0;
- int twoByte = 0;
- unsigned char opcode = 0x90;
- unsigned char modRM = 0xFF;
- while(*func == 0xF0 ||
- *func == 0xF2 ||
- *func == 0xF3 ||
- (*func & 0xFC) == 0x64 ||
- (*func & 0xF8) == 0xD8 ||
- (*func & 0x7E) == 0x62)
- {
- if(*func == 0x66)
- {
- operandSize = 2;
- }
- else if((*func & 0xF8) == 0xD8)
- {
- FPU = *func;
- if (dest)
- *dest++ = *func++;
- else
- func++;
- bytecount++;
- break;
- }
-
- if (dest)
- *dest++ = *func++;
- else
- func++;
- bytecount++;
- }
-
- // two-byte opcode byte
- if(*func == 0x0F)
- {
- twoByte = 1;
- if (dest)
- *dest++ = *func++;
- else
- func++;
- bytecount++;
- }
-
- // opcode byte
- opcode = *func++;
- if (dest) *dest++ = opcode;
- bytecount++;
-
- // mod R/M byte
- modRM = 0xFF;
- if(FPU)
- {
- if((opcode & 0xC0) != 0xC0)
- {
- modRM = opcode;
- }
- }
- else if(!twoByte)
- {
- if((opcode & 0xC4) == 0x00 ||
- ((opcode & 0xF4) == 0x60 && ((opcode & 0x0A) == 0x02 || (opcode & 0x09) == 0x09)) ||
- (opcode & 0xF0) == 0x80 ||
- ((opcode & 0xF8) == 0xC0 && (opcode & 0x0E) != 0x02) ||
- (opcode & 0xFC) == 0xD0 ||
- (opcode & 0xF6) == 0xF6)
- {
- modRM = *func++;
- if (dest) *dest++ = modRM;
- bytecount++;
- }
- }
- else
- {
- if(((opcode & 0xF0) == 0x00 && (opcode & 0x0F) >= 0x04 && (opcode & 0x0D) != 0x0D) ||
- (opcode & 0xF0) == 0x30 ||
- opcode == 0x77 ||
- (opcode & 0xF0) == 0x80 ||
- ((opcode & 0xF0) == 0xA0 && (opcode & 0x07) <= 0x02) ||
- (opcode & 0xF8) == 0xC8)
- {
- // No mod R/M byte
- }
- else
- {
- modRM = *func++;
- if (dest) *dest++ = modRM;
- bytecount++;
- }
- }
-
- // SIB
- if((modRM & 0x07) == 0x04 &&
- (modRM & 0xC0) != 0xC0)
- {
- if (dest)
- *dest++ = *func++; //SIB
- else
- func++;
- bytecount++;
- }
-
- // mod R/M displacement
-
- // Dword displacement, no base
- if((modRM & 0xC5) == 0x05) {
- if (dest) {
- *(unsigned int*)dest = *(unsigned int*)func;
- dest += 4;
- }
- func += 4;
- bytecount += 4;
- }
-
- // Byte displacement
- if((modRM & 0xC0) == 0x40) {
- if (dest)
- *dest++ = *func++;
- else
- func++;
- bytecount++;
- }
-
- // Dword displacement
- if((modRM & 0xC0) == 0x80) {
- if (dest) {
- *(unsigned int*)dest = *(unsigned int*)func;
- dest += 4;
- }
- func += 4;
- bytecount += 4;
- }
-
- // immediate
- if(FPU)
- {
- // Can't have immediate operand
- }
- else if(!twoByte)
- {
- if((opcode & 0xC7) == 0x04 ||
- (opcode & 0xFE) == 0x6A || // PUSH/POP/IMUL
- (opcode & 0xF0) == 0x70 || // Jcc
- opcode == 0x80 ||
- opcode == 0x83 ||
- (opcode & 0xFD) == 0xA0 || // MOV
- opcode == 0xA8 || // TEST
- (opcode & 0xF8) == 0xB0 || // MOV
- (opcode & 0xFE) == 0xC0 || // RCL
- opcode == 0xC6 || // MOV
- opcode == 0xCD || // INT
- (opcode & 0xFE) == 0xD4 || // AAD/AAM
- (opcode & 0xF8) == 0xE0 || // LOOP/JCXZ
- opcode == 0xEB ||
- (opcode == 0xF6 && (modRM & 0x30) == 0x00)) // TEST
- {
- if (dest)
- *dest++ = *func++;
- else
- func++;
- bytecount++;
- }
- else if((opcode & 0xF7) == 0xC2) // RET
- {
- if (dest) {
- *(unsigned short*)dest = *(unsigned short*)func;
- dest += 2;
- }
- func += 2;
- bytecount += 2;
- }
- else if((opcode & 0xFC) == 0x80 ||
- (opcode & 0xC7) == 0x05 ||
- (opcode & 0xF8) == 0xB8 ||
- (opcode & 0xFE) == 0xE8 || // CALL/Jcc
- (opcode & 0xFE) == 0x68 ||
- (opcode & 0xFC) == 0xA0 ||
- (opcode & 0xEE) == 0xA8 ||
- opcode == 0xC7 ||
- (opcode == 0xF7 && (modRM & 0x30) == 0x00))
- {
- if (dest) {
- //Fix CALL/JMP offset
- if ((opcode & 0xFE) == 0xE8) {
- if (operandSize == 4)
- {
- *(long*)dest = ((func + *(long*)func) - dest);
-
- //pRED* edit. func is the current address of the call address, +4 is the next instruction, so the value of $pc
- check_thunks(dest+4, func+4);
- }
- else
- *(short*)dest = ((func + *(short*)func) - dest);
-
- } else {
- if (operandSize == 4)
- *(unsigned long*)dest = *(unsigned long*)func;
- else
- *(unsigned short*)dest = *(unsigned short*)func;
- }
- dest += operandSize;
- }
- func += operandSize;
- bytecount += operandSize;
-
- }
- }
- else
- {
- if(opcode == 0xBA || // BT
- opcode == 0x0F || // 3DNow!
- (opcode & 0xFC) == 0x70 || // PSLLW
- (opcode & 0xF7) == 0xA4 || // SHLD
- opcode == 0xC2 ||
- opcode == 0xC4 ||
- opcode == 0xC5 ||
- opcode == 0xC6)
- {
- if (dest)
- *dest++ = *func++;
- else
- func++;
- }
- else if((opcode & 0xF0) == 0x80) // Jcc -i
- {
- if (dest) {
- if (operandSize == 4)
- *(unsigned long*)dest = *(unsigned long*)func;
- else
- *(unsigned short*)dest = *(unsigned short*)func;
-
- dest += operandSize;
- }
- func += operandSize;
- bytecount += operandSize;
- }
- }
- }
-
- return bytecount;
-}
-
-//insert a specific JMP instruction at the given location
-void inject_jmp(void* src, void* dest) {
- *(unsigned char*)src = OP_JMP;
- *(long*)((unsigned char*)src+1) = (long)((unsigned char*)dest - ((unsigned char*)src + OP_JMP_SIZE));
-}
-
-//fill a given block with NOPs
-void fill_nop(void* src, unsigned int len) {
- unsigned char* src2 = (unsigned char*)src;
- while (len) {
- *src2++ = OP_NOP;
- --len;
- }
-}
-
-void* eval_jump(void* src) {
- unsigned char* addr = (unsigned char*)src;
-
- if (!addr) return 0;
-
- //import table jump
- if (addr[0] == OP_PREFIX && addr[1] == OP_JMP_SEG) {
- addr += 2;
- addr = *(unsigned char**)addr;
- //TODO: if addr points into the IAT
- return *(void**)addr;
- }
-
- //8bit offset
- else if (addr[0] == OP_JMP_BYTE) {
- addr = &addr[OP_JMP_BYTE_SIZE] + *(char*)&addr[1];
- //mangled 32bit jump?
- if (addr[0] == OP_JMP) {
- addr = addr + *(int*)&addr[1];
- }
- return addr;
- }
- /*
- //32bit offset
- else if (addr[0] == OP_JMP) {
- addr = &addr[OP_JMP_SIZE] + *(int*)&addr[1];
- }
- */
-
- return addr;
-}
-/*
-from ms detours package
-static bool detour_is_imported(PBYTE pbCode, PBYTE pbAddress)
-{
- MEMORY_BASIC_INFORMATION mbi;
- VirtualQuery((PVOID)pbCode, &mbi, sizeof(mbi));
- __try {
- PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)mbi.AllocationBase;
- if (pDosHeader->e_magic != IMAGE_DOS_SIGNATURE) {
- return false;
- }
-
- PIMAGE_NT_HEADERS pNtHeader = (PIMAGE_NT_HEADERS)((PBYTE)pDosHeader +
- pDosHeader->e_lfanew);
- if (pNtHeader->Signature != IMAGE_NT_SIGNATURE) {
- return false;
- }
-
- if (pbAddress >= ((PBYTE)pDosHeader +
- pNtHeader->OptionalHeader
- .DataDirectory[IMAGE_DIRECTORY_ENTRY_IAT].VirtualAddress) &&
- pbAddress < ((PBYTE)pDosHeader +
- pNtHeader->OptionalHeader
- .DataDirectory[IMAGE_DIRECTORY_ENTRY_IAT].VirtualAddress +
- pNtHeader->OptionalHeader
- .DataDirectory[IMAGE_DIRECTORY_ENTRY_IAT].Size)) {
- return true;
- }
- return false;
- }
- __except(EXCEPTION_EXECUTE_HANDLER) {
- return false;
- }
-}
-*/
diff --git a/extensions/sdktools/asm/asm.h b/extensions/sdktools/asm/asm.h
deleted file mode 100644
index 60862323..00000000
--- a/extensions/sdktools/asm/asm.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef __ASM_H__
-#define __ASM_H__
-
-#define OP_JMP 0xE9
-#define OP_JMP_SIZE 5
-
-#define OP_NOP 0x90
-#define OP_NOP_SIZE 1
-
-#define OP_PREFIX 0xFF
-#define OP_JMP_SEG 0x25
-
-#define OP_JMP_BYTE 0xEB
-#define OP_JMP_BYTE_SIZE 2
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void check_thunks(unsigned char *dest, unsigned char *pc);
-
-//if dest is NULL, returns minimum number of bytes needed to be copied
-//if dest is not NULL, it will copy the bytes to dest as well as fix CALLs and JMPs
-//http://www.devmaster.net/forums/showthread.php?t=2311
-int copy_bytes(unsigned char *func, unsigned char* dest, int required_len);
-
-//insert a specific JMP instruction at the given location
-void inject_jmp(void* src, void* dest);
-
-//fill a given block with NOPs
-void fill_nop(void* src, unsigned int len);
-
-//evaluate a JMP at the target
-void* eval_jump(void* src);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif //__ASM_H__
diff --git a/extensions/sdktools/sdk/smsdk_ext.cpp b/extensions/sdktools/sdk/smsdk_ext.cpp
deleted file mode 100644
index 6404a919..00000000
--- a/extensions/sdktools/sdk/smsdk_ext.cpp
+++ /dev/null
@@ -1,462 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#include
-#include
-#include "smsdk_ext.h"
-
-/**
- * @file smsdk_ext.cpp
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-IExtension *myself = NULL; /**< Ourself */
-IShareSys *g_pShareSys = NULL; /**< Share system */
-IShareSys *sharesys = NULL; /**< Share system */
-ISourceMod *g_pSM = NULL; /**< SourceMod helpers */
-ISourceMod *smutils = NULL; /**< SourceMod helpers */
-
-#if defined SMEXT_ENABLE_FORWARDSYS
-IForwardManager *g_pForwards = NULL; /**< Forward system */
-IForwardManager *forwards = NULL; /**< Forward system */
-#endif
-#if defined SMEXT_ENABLE_HANDLESYS
-IHandleSys *g_pHandleSys = NULL; /**< Handle system */
-IHandleSys *handlesys = NULL; /**< Handle system */
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-IPlayerManager *playerhelpers = NULL; /**< Player helpers */
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-IDBManager *dbi = NULL; /**< DB Manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-IGameConfigManager *gameconfs = NULL; /**< Game config manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-IMemoryUtils *memutils = NULL;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMEHELPERS
-IGameHelpers *gamehelpers = NULL;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-ITimerSystem *timersys = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-IADTFactory *adtfactory = NULL;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-IThreader *threader = NULL;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-ILibrarySys *libsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-SourceMod::IPluginManager *plsys;
-#endif
-#if defined SMEXT_ENABLE_MENUS
-IMenuManager *menus = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-IAdminSystem *adminsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
-ITextParsers *textparsers = NULL;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-IUserMessages *usermsgs = NULL;
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-ITranslator *translator = NULL;
-#endif
-
-/** Exports the main interface */
-PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
-{
- return g_pExtensionIface;
-}
-
-SDKExtension::SDKExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- m_SourceMMLoaded = false;
- m_WeAreUnloaded = false;
- m_WeGotPauseChange = false;
-#endif
-}
-
-bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late)
-{
- g_pShareSys = sharesys = sys;
- myself = me;
-
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-
- if (!m_SourceMMLoaded)
- {
- if (error)
- {
- snprintf(error, maxlength, "Metamod attach failed");
- }
- return false;
- }
-#endif
- SM_GET_IFACE(SOURCEMOD, g_pSM);
- smutils = g_pSM;
-#if defined SMEXT_ENABLE_HANDLESYS
- SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
- handlesys = g_pHandleSys;
-#endif
-#if defined SMEXT_ENABLE_FORWARDSYS
- SM_GET_IFACE(FORWARDMANAGER, g_pForwards);
- forwards = g_pForwards;
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
- SM_GET_IFACE(PLAYERMANAGER, playerhelpers);
-#endif
-#if defined SMEXT_ENABLE_DBMANAGER
- SM_GET_IFACE(DBI, dbi);
-#endif
-#if defined SMEXT_ENABLE_GAMECONF
- SM_GET_IFACE(GAMECONFIG, gameconfs);
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
- SM_GET_IFACE(MEMORYUTILS, memutils);
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
- SM_GET_IFACE(GAMEHELPERS, gamehelpers);
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
- SM_GET_IFACE(TIMERSYS, timersys);
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
- SM_GET_IFACE(ADTFACTORY, adtfactory);
-#endif
-#if defined SMEXT_ENABLE_THREADER
- SM_GET_IFACE(THREADER, threader);
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
- SM_GET_IFACE(LIBRARYSYS, libsys);
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
- SM_GET_IFACE(PLUGINSYSTEM, plsys);
-#endif
-#if defined SMEXT_ENABLE_MENUS
- SM_GET_IFACE(MENUMANAGER, menus);
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
- SM_GET_IFACE(ADMINSYS, adminsys);
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
- SM_GET_IFACE(TEXTPARSERS, textparsers);
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
- SM_GET_IFACE(USERMSGS, usermsgs);
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
- SM_GET_IFACE(TRANSLATOR, translator);
-#endif
-
- if (SDK_OnLoad(error, maxlength, late))
- {
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- return true;
- }
-
- return false;
-}
-
-bool SDKExtension::IsMetamodExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- return true;
-#else
- return false;
-#endif
-}
-
-void SDKExtension::OnExtensionPauseChange(bool state)
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeGotPauseChange = true;
-#endif
- SDK_OnPauseChange(state);
-}
-
-void SDKExtension::OnExtensionsAllLoaded()
-{
- SDK_OnAllLoaded();
-}
-
-void SDKExtension::OnExtensionUnload()
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- SDK_OnUnload();
-}
-
-const char *SDKExtension::GetExtensionAuthor()
-{
- return SMEXT_CONF_AUTHOR;
-}
-
-const char *SDKExtension::GetExtensionDateString()
-{
- return SMEXT_CONF_DATESTRING;
-}
-
-const char *SDKExtension::GetExtensionDescription()
-{
- return SMEXT_CONF_DESCRIPTION;
-}
-
-const char *SDKExtension::GetExtensionVerString()
-{
- return SMEXT_CONF_VERSION;
-}
-
-const char *SDKExtension::GetExtensionName()
-{
- return SMEXT_CONF_NAME;
-}
-
-const char *SDKExtension::GetExtensionTag()
-{
- return SMEXT_CONF_LOGTAG;
-}
-
-const char *SDKExtension::GetExtensionURL()
-{
- return SMEXT_CONF_URL;
-}
-
-bool SDKExtension::SDK_OnLoad(char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-void SDKExtension::SDK_OnUnload()
-{
-}
-
-void SDKExtension::SDK_OnPauseChange(bool paused)
-{
-}
-
-void SDKExtension::SDK_OnAllLoaded()
-{
-}
-
-#if defined SMEXT_CONF_METAMOD
-
-PluginId g_PLID = 0; /**< Metamod plugin ID */
-ISmmPlugin *g_PLAPI = NULL; /**< Metamod plugin API */
-SourceHook::ISourceHook *g_SHPtr = NULL; /**< SourceHook pointer */
-ISmmAPI *g_SMAPI = NULL; /**< SourceMM API pointer */
-
-IVEngineServer *engine = NULL; /**< IVEngineServer pointer */
-IServerGameDLL *gamedll = NULL; /**< IServerGameDLL pointer */
-
-/** Exposes the extension to Metamod */
-SMM_API void *PL_EXPOSURE(const char *name, int *code)
-{
-#if defined METAMOD_PLAPI_VERSION
- if (name && !strcmp(name, METAMOD_PLAPI_NAME))
-#else
- if (name && !strcmp(name, PLAPI_NAME))
-#endif
- {
- if (code)
- {
- *code = IFACE_OK;
- }
- return static_cast(g_pExtensionIface);
- }
-
- if (code)
- {
- *code = IFACE_FAILED;
- }
-
- return NULL;
-}
-
-bool SDKExtension::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
-{
- PLUGIN_SAVEVARS();
-
-#if !defined METAMOD_PLAPI_VERSION
- GET_V_IFACE_ANY(serverFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(engineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#else
- GET_V_IFACE_ANY(GetServerFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#endif
-
- m_SourceMMLoaded = true;
-
- return SDK_OnMetamodLoad(ismm, error, maxlen, late);
-}
-
-bool SDKExtension::Unload(char *error, size_t maxlen)
-{
- if (!m_WeAreUnloaded)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unloaded by SourceMod.");
- }
- return false;
- }
-
- return SDK_OnMetamodUnload(error, maxlen);
-}
-
-bool SDKExtension::Pause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be paused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(true, error, maxlen);
-}
-
-bool SDKExtension::Unpause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unpaused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(false, error, maxlen);
-}
-
-const char *SDKExtension::GetAuthor()
-{
- return GetExtensionAuthor();
-}
-
-const char *SDKExtension::GetDate()
-{
- return GetExtensionDateString();
-}
-
-const char *SDKExtension::GetDescription()
-{
- return GetExtensionDescription();
-}
-
-const char *SDKExtension::GetLicense()
-{
- return SMEXT_CONF_LICENSE;
-}
-
-const char *SDKExtension::GetLogTag()
-{
- return GetExtensionTag();
-}
-
-const char *SDKExtension::GetName()
-{
- return GetExtensionName();
-}
-
-const char *SDKExtension::GetURL()
-{
- return GetExtensionURL();
-}
-
-const char *SDKExtension::GetVersion()
-{
- return GetExtensionVerString();
-}
-
-bool SDKExtension::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodUnload(char *error, size_t maxlength)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength)
-{
- return true;
-}
-
-#endif
-
-/* Overload a few things to prevent libstdc++ linking */
-#if defined __linux__ || defined __APPLE__
-extern "C" void __cxa_pure_virtual(void)
-{
-}
-
-void *operator new(size_t size)
-{
- return malloc(size);
-}
-
-void *operator new[](size_t size)
-{
- return malloc(size);
-}
-
-void operator delete(void *ptr)
-{
- free(ptr);
-}
-
-void operator delete[](void * ptr)
-{
- free(ptr);
-}
-#endif
-
diff --git a/extensions/sdktools/sdk/smsdk_ext.h b/extensions/sdktools/sdk/smsdk_ext.h
deleted file mode 100644
index aec87f98..00000000
--- a/extensions/sdktools/sdk/smsdk_ext.h
+++ /dev/null
@@ -1,310 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#ifndef _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-#define _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-
-/**
- * @file smsdk_ext.h
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-#include "smsdk_config.h"
-#include
-#include
-#include
-#include
-#include
-#if defined SMEXT_ENABLE_FORWARDSYS
-#include
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-#include
-#endif //SMEXT_ENABLE_PlAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-#include
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-#include
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
-#include
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-#include
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-#include
-#endif
-#if defined SMEXT_ENABLE_THREADER
-#include
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-#include
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-#include
-#include
-#endif
-
-#if !defined METAMOD_PLAPI_VERSION
-#include
-#endif
-
-using namespace SourceMod;
-using namespace SourcePawn;
-
-class SDKExtension :
-#if defined SMEXT_CONF_METAMOD
- public ISmmPlugin,
-#endif
- public IExtensionInterface
-{
-public:
- /** Constructor */
- SDKExtension();
-public:
- /**
- * @brief This is called after the initial loading sequence has been processed.
- *
- * @param error Error message buffer.
- * @param maxlength Size of error message buffer.
- * @param late Whether or not the module was loaded after map load.
- * @return True to succeed loading, false to fail.
- */
- virtual bool SDK_OnLoad(char *error, size_t maxlength, bool late);
-
- /**
- * @brief This is called right before the extension is unloaded.
- */
- virtual void SDK_OnUnload();
-
- /**
- * @brief This is called once all known extensions have been loaded.
- */
- virtual void SDK_OnAllLoaded();
-
- /**
- * @brief Called when the pause state is changed.
- */
- virtual void SDK_OnPauseChange(bool paused);
-
-#if defined SMEXT_CONF_METAMOD
- /**
- * @brief Called when Metamod is attached, before the extension version is called.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @param late Whether or not Metamod considers this a late load.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
-
- /**
- * @brief Called when Metamod is detaching, after the extension version is called.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodUnload(char *error, size_t maxlength);
-
- /**
- * @brief Called when Metamod's pause state is changing.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param paused Pause state being set.
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
-#endif
-
-public: //IExtensionInterface
- virtual bool OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late);
- virtual void OnExtensionUnload();
- virtual void OnExtensionsAllLoaded();
-
- /** Returns whether or not this is a Metamod-based extension */
- virtual bool IsMetamodExtension();
-
- /**
- * @brief Called when the pause state changes.
- *
- * @param state True if being paused, false if being unpaused.
- */
- virtual void OnExtensionPauseChange(bool state);
-
- /** Returns name */
- virtual const char *GetExtensionName();
- /** Returns URL */
- virtual const char *GetExtensionURL();
- /** Returns log tag */
- virtual const char *GetExtensionTag();
- /** Returns author */
- virtual const char *GetExtensionAuthor();
- /** Returns version string */
- virtual const char *GetExtensionVerString();
- /** Returns description string */
- virtual const char *GetExtensionDescription();
- /** Returns date string */
- virtual const char *GetExtensionDateString();
-#if defined SMEXT_CONF_METAMOD
-public: //ISmmPlugin
- /** Called when the extension is attached to Metamod. */
- virtual bool Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlength, bool late);
- /** Returns the author to MM */
- virtual const char *GetAuthor();
- /** Returns the name to MM */
- virtual const char *GetName();
- /** Returns the description to MM */
- virtual const char *GetDescription();
- /** Returns the URL to MM */
- virtual const char *GetURL();
- /** Returns the license to MM */
- virtual const char *GetLicense();
- /** Returns the version string to MM */
- virtual const char *GetVersion();
- /** Returns the date string to MM */
- virtual const char *GetDate();
- /** Returns the logtag to MM */
- virtual const char *GetLogTag();
- /** Called on unload */
- virtual bool Unload(char *error, size_t maxlength);
- /** Called on pause */
- virtual bool Pause(char *error, size_t maxlength);
- /** Called on unpause */
- virtual bool Unpause(char *error, size_t maxlength);
-private:
- bool m_SourceMMLoaded;
- bool m_WeAreUnloaded;
- bool m_WeGotPauseChange;
-#endif
-};
-
-extern SDKExtension *g_pExtensionIface;
-extern IExtension *myself;
-
-extern IShareSys *g_pShareSys;
-extern IShareSys *sharesys; /* Note: Newer name */
-extern ISourceMod *g_pSM;
-extern ISourceMod *smutils; /* Note: Newer name */
-
-/* Optional interfaces are below */
-#if defined SMEXT_ENABLE_FORWARDSYS
-extern IForwardManager *g_pForwards;
-extern IForwardManager *forwards; /* Note: Newer name */
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_HANDLESYS
-extern IHandleSys *g_pHandleSys;
-extern IHandleSys *handlesys; /* Note: Newer name */
-#endif //SMEXT_ENABLE_HANDLESYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-extern IPlayerManager *playerhelpers;
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-extern IDBManager *dbi;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-extern IGameConfigManager *gameconfs;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-extern IMemoryUtils *memutils;
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-extern IGameHelpers *gamehelpers;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-extern ITimerSystem *timersys;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-extern IADTFactory *adtfactory;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-extern IThreader *threader;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-extern ILibrarySys *libsys;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-extern SourceMod::IPluginManager *plsys;
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-PLUGIN_GLOBALVARS();
-extern IVEngineServer *engine;
-extern IServerGameDLL *gamedll;
-#endif
-
-/** Creates a SourceMod interface macro pair */
-#define SM_MKIFACE(name) SMINTERFACE_##name##_NAME, SMINTERFACE_##name##_VERSION
-/** Automates retrieving SourceMod interfaces */
-#define SM_GET_IFACE(prefix, addr) \
- if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-/** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */
-#define SM_GET_LATE_IFACE(prefix, addr) \
- g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)
-/** Validates a SourceMod interface pointer */
-#define SM_CHECK_IFACE(prefix, addr) \
- if (!addr) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-
-#endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
diff --git a/extensions/sdktools/sdk/smsdk_config.h b/extensions/sdktools/smsdk_config.h
similarity index 100%
rename from extensions/sdktools/sdk/smsdk_config.h
rename to extensions/sdktools/smsdk_config.h
diff --git a/extensions/sqlite/AMBuilder b/extensions/sqlite/AMBuilder
index e9c567dd..84584b08 100644
--- a/extensions/sqlite/AMBuilder
+++ b/extensions/sqlite/AMBuilder
@@ -14,8 +14,7 @@ if builder.target_platform == 'linux':
binary.compiler.postlink += ['-ldl', '-lpthread']
binary.sources += [
- 'sdk/smsdk_ext.cpp',
- 'sdk/sm_memtable.cpp',
+ '../../public/smsdk_ext.cpp',
'extension.cpp',
'driver/SqDatabase.cpp',
'driver/SqDriver.cpp',
diff --git a/extensions/sqlite/sdk/sm_memtable.cpp b/extensions/sqlite/sdk/sm_memtable.cpp
deleted file mode 100644
index e13cd891..00000000
--- a/extensions/sqlite/sdk/sm_memtable.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#include
-#include
-#include "sm_memtable.h"
-
-BaseMemTable::BaseMemTable(unsigned int init_size)
-{
- membase = (unsigned char *)malloc(init_size);
- size = init_size;
- tail = 0;
-}
-
-BaseMemTable::~BaseMemTable()
-{
- free(membase);
- membase = NULL;
-}
-
-int BaseMemTable::CreateMem(unsigned int addsize, void **addr)
-{
- int idx = (int)tail;
-
- while (tail + addsize >= size)
- {
- size *= 2;
- membase = (unsigned char *)realloc(membase, size);
- }
-
- tail += addsize;
-
- if (addr)
- {
- *addr = (void *)&membase[idx];
- }
-
- return idx;
-}
-
-void *BaseMemTable::GetAddress(int index)
-{
- if (index < 0 || (unsigned int)index >= tail)
- {
- return NULL;
- }
-
- return &membase[index];
-}
-
-void BaseMemTable::Reset()
-{
- tail = 0;
-}
-
-BaseStringTable::BaseStringTable(unsigned int init_size) : m_table(init_size)
-{
-}
-
-BaseStringTable::~BaseStringTable()
-{
-}
-
-int BaseStringTable::AddString(const char *string)
-{
- size_t len = strlen(string) + 1;
- int idx;
- char *addr;
-
- idx = m_table.CreateMem(len, (void **)&addr);
- strcpy(addr, string);
-
- return idx;
-}
-
-/*const char *BaseStringTable::GetString(int str)
-{
- return (const char *)m_table.GetAddress(str);
-}*/
-
-void BaseStringTable::Reset()
-{
- m_table.Reset();
-}
diff --git a/extensions/sqlite/sdk/sm_memtable.h b/extensions/sqlite/sdk/sm_memtable.h
deleted file mode 100644
index 53ba5ff8..00000000
--- a/extensions/sqlite/sdk/sm_memtable.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#ifndef _INCLUDE_SOURCEMOD_CORE_STRINGTABLE_H_
-#define _INCLUDE_SOURCEMOD_CORE_STRINGTABLE_H_
-
-class BaseMemTable
-{
-public:
- BaseMemTable(unsigned int init_size);
- ~BaseMemTable();
-public:
- /**
- * Allocates 'size' bytes of memory.
- * Optionally outputs the address through 'addr'.
- * Returns an index >= 0 on success, < 0 on failure.
- */
- int CreateMem(unsigned int size, void **addr);
-
- /**
- * Given an index into the memory table, returns its address.
- * Returns NULL if invalid.
- */
- void *GetAddress(int index);
-
- /**
- * Scraps the memory table. For caching purposes, the memory
- * is not freed, however subsequent calls to CreateMem() will
- * begin at the first index again.
- */
- void Reset();
-
-
-private:
- unsigned char *membase;
- unsigned int size;
- unsigned int tail;
-};
-
-class BaseStringTable
-{
-public:
- BaseStringTable(unsigned int init_size);
- ~BaseStringTable();
-public:
- /**
- * Adds a string to the string table and returns its index.
- */
- int AddString(const char *string);
-
- /**
- * Given an index into the string table, returns the associated string.
- */
- inline const char *GetString(int str)
- {
- return (const char *)m_table.GetAddress(str);
- }
-
- /**
- * Scraps the string table. For caching purposes, the memory
- * is not freed, however subsequent calls to AddString() will
- * begin at the first index again.
- */
- void Reset();
-
- /**
- * Returns the parent BaseMemTable that this string table uses.
- */
- inline BaseMemTable *GetMemTable()
- {
- return &m_table;
- }
-private:
- BaseMemTable m_table;
-};
-
-#endif //_INCLUDE_SOURCEMOD_CORE_STRINGTABLE_H_
diff --git a/extensions/sqlite/sdk/smsdk_ext.cpp b/extensions/sqlite/sdk/smsdk_ext.cpp
deleted file mode 100644
index 6404a919..00000000
--- a/extensions/sqlite/sdk/smsdk_ext.cpp
+++ /dev/null
@@ -1,462 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#include
-#include
-#include "smsdk_ext.h"
-
-/**
- * @file smsdk_ext.cpp
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-IExtension *myself = NULL; /**< Ourself */
-IShareSys *g_pShareSys = NULL; /**< Share system */
-IShareSys *sharesys = NULL; /**< Share system */
-ISourceMod *g_pSM = NULL; /**< SourceMod helpers */
-ISourceMod *smutils = NULL; /**< SourceMod helpers */
-
-#if defined SMEXT_ENABLE_FORWARDSYS
-IForwardManager *g_pForwards = NULL; /**< Forward system */
-IForwardManager *forwards = NULL; /**< Forward system */
-#endif
-#if defined SMEXT_ENABLE_HANDLESYS
-IHandleSys *g_pHandleSys = NULL; /**< Handle system */
-IHandleSys *handlesys = NULL; /**< Handle system */
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-IPlayerManager *playerhelpers = NULL; /**< Player helpers */
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-IDBManager *dbi = NULL; /**< DB Manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-IGameConfigManager *gameconfs = NULL; /**< Game config manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-IMemoryUtils *memutils = NULL;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMEHELPERS
-IGameHelpers *gamehelpers = NULL;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-ITimerSystem *timersys = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-IADTFactory *adtfactory = NULL;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-IThreader *threader = NULL;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-ILibrarySys *libsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-SourceMod::IPluginManager *plsys;
-#endif
-#if defined SMEXT_ENABLE_MENUS
-IMenuManager *menus = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-IAdminSystem *adminsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
-ITextParsers *textparsers = NULL;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-IUserMessages *usermsgs = NULL;
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-ITranslator *translator = NULL;
-#endif
-
-/** Exports the main interface */
-PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
-{
- return g_pExtensionIface;
-}
-
-SDKExtension::SDKExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- m_SourceMMLoaded = false;
- m_WeAreUnloaded = false;
- m_WeGotPauseChange = false;
-#endif
-}
-
-bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late)
-{
- g_pShareSys = sharesys = sys;
- myself = me;
-
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-
- if (!m_SourceMMLoaded)
- {
- if (error)
- {
- snprintf(error, maxlength, "Metamod attach failed");
- }
- return false;
- }
-#endif
- SM_GET_IFACE(SOURCEMOD, g_pSM);
- smutils = g_pSM;
-#if defined SMEXT_ENABLE_HANDLESYS
- SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
- handlesys = g_pHandleSys;
-#endif
-#if defined SMEXT_ENABLE_FORWARDSYS
- SM_GET_IFACE(FORWARDMANAGER, g_pForwards);
- forwards = g_pForwards;
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
- SM_GET_IFACE(PLAYERMANAGER, playerhelpers);
-#endif
-#if defined SMEXT_ENABLE_DBMANAGER
- SM_GET_IFACE(DBI, dbi);
-#endif
-#if defined SMEXT_ENABLE_GAMECONF
- SM_GET_IFACE(GAMECONFIG, gameconfs);
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
- SM_GET_IFACE(MEMORYUTILS, memutils);
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
- SM_GET_IFACE(GAMEHELPERS, gamehelpers);
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
- SM_GET_IFACE(TIMERSYS, timersys);
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
- SM_GET_IFACE(ADTFACTORY, adtfactory);
-#endif
-#if defined SMEXT_ENABLE_THREADER
- SM_GET_IFACE(THREADER, threader);
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
- SM_GET_IFACE(LIBRARYSYS, libsys);
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
- SM_GET_IFACE(PLUGINSYSTEM, plsys);
-#endif
-#if defined SMEXT_ENABLE_MENUS
- SM_GET_IFACE(MENUMANAGER, menus);
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
- SM_GET_IFACE(ADMINSYS, adminsys);
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
- SM_GET_IFACE(TEXTPARSERS, textparsers);
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
- SM_GET_IFACE(USERMSGS, usermsgs);
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
- SM_GET_IFACE(TRANSLATOR, translator);
-#endif
-
- if (SDK_OnLoad(error, maxlength, late))
- {
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- return true;
- }
-
- return false;
-}
-
-bool SDKExtension::IsMetamodExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- return true;
-#else
- return false;
-#endif
-}
-
-void SDKExtension::OnExtensionPauseChange(bool state)
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeGotPauseChange = true;
-#endif
- SDK_OnPauseChange(state);
-}
-
-void SDKExtension::OnExtensionsAllLoaded()
-{
- SDK_OnAllLoaded();
-}
-
-void SDKExtension::OnExtensionUnload()
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- SDK_OnUnload();
-}
-
-const char *SDKExtension::GetExtensionAuthor()
-{
- return SMEXT_CONF_AUTHOR;
-}
-
-const char *SDKExtension::GetExtensionDateString()
-{
- return SMEXT_CONF_DATESTRING;
-}
-
-const char *SDKExtension::GetExtensionDescription()
-{
- return SMEXT_CONF_DESCRIPTION;
-}
-
-const char *SDKExtension::GetExtensionVerString()
-{
- return SMEXT_CONF_VERSION;
-}
-
-const char *SDKExtension::GetExtensionName()
-{
- return SMEXT_CONF_NAME;
-}
-
-const char *SDKExtension::GetExtensionTag()
-{
- return SMEXT_CONF_LOGTAG;
-}
-
-const char *SDKExtension::GetExtensionURL()
-{
- return SMEXT_CONF_URL;
-}
-
-bool SDKExtension::SDK_OnLoad(char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-void SDKExtension::SDK_OnUnload()
-{
-}
-
-void SDKExtension::SDK_OnPauseChange(bool paused)
-{
-}
-
-void SDKExtension::SDK_OnAllLoaded()
-{
-}
-
-#if defined SMEXT_CONF_METAMOD
-
-PluginId g_PLID = 0; /**< Metamod plugin ID */
-ISmmPlugin *g_PLAPI = NULL; /**< Metamod plugin API */
-SourceHook::ISourceHook *g_SHPtr = NULL; /**< SourceHook pointer */
-ISmmAPI *g_SMAPI = NULL; /**< SourceMM API pointer */
-
-IVEngineServer *engine = NULL; /**< IVEngineServer pointer */
-IServerGameDLL *gamedll = NULL; /**< IServerGameDLL pointer */
-
-/** Exposes the extension to Metamod */
-SMM_API void *PL_EXPOSURE(const char *name, int *code)
-{
-#if defined METAMOD_PLAPI_VERSION
- if (name && !strcmp(name, METAMOD_PLAPI_NAME))
-#else
- if (name && !strcmp(name, PLAPI_NAME))
-#endif
- {
- if (code)
- {
- *code = IFACE_OK;
- }
- return static_cast(g_pExtensionIface);
- }
-
- if (code)
- {
- *code = IFACE_FAILED;
- }
-
- return NULL;
-}
-
-bool SDKExtension::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
-{
- PLUGIN_SAVEVARS();
-
-#if !defined METAMOD_PLAPI_VERSION
- GET_V_IFACE_ANY(serverFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(engineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#else
- GET_V_IFACE_ANY(GetServerFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
- GET_V_IFACE_CURRENT(GetEngineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
-#endif
-
- m_SourceMMLoaded = true;
-
- return SDK_OnMetamodLoad(ismm, error, maxlen, late);
-}
-
-bool SDKExtension::Unload(char *error, size_t maxlen)
-{
- if (!m_WeAreUnloaded)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unloaded by SourceMod.");
- }
- return false;
- }
-
- return SDK_OnMetamodUnload(error, maxlen);
-}
-
-bool SDKExtension::Pause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be paused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(true, error, maxlen);
-}
-
-bool SDKExtension::Unpause(char *error, size_t maxlen)
-{
- if (!m_WeGotPauseChange)
- {
- if (error)
- {
- snprintf(error, maxlen, "This extension must be unpaused by SourceMod.");
- }
- return false;
- }
-
- m_WeGotPauseChange = false;
-
- return SDK_OnMetamodPauseChange(false, error, maxlen);
-}
-
-const char *SDKExtension::GetAuthor()
-{
- return GetExtensionAuthor();
-}
-
-const char *SDKExtension::GetDate()
-{
- return GetExtensionDateString();
-}
-
-const char *SDKExtension::GetDescription()
-{
- return GetExtensionDescription();
-}
-
-const char *SDKExtension::GetLicense()
-{
- return SMEXT_CONF_LICENSE;
-}
-
-const char *SDKExtension::GetLogTag()
-{
- return GetExtensionTag();
-}
-
-const char *SDKExtension::GetName()
-{
- return GetExtensionName();
-}
-
-const char *SDKExtension::GetURL()
-{
- return GetExtensionURL();
-}
-
-const char *SDKExtension::GetVersion()
-{
- return GetExtensionVerString();
-}
-
-bool SDKExtension::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodUnload(char *error, size_t maxlength)
-{
- return true;
-}
-
-bool SDKExtension::SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength)
-{
- return true;
-}
-
-#endif
-
-/* Overload a few things to prevent libstdc++ linking */
-#if defined __linux__ || defined __APPLE__
-extern "C" void __cxa_pure_virtual(void)
-{
-}
-
-void *operator new(size_t size)
-{
- return malloc(size);
-}
-
-void *operator new[](size_t size)
-{
- return malloc(size);
-}
-
-void operator delete(void *ptr)
-{
- free(ptr);
-}
-
-void operator delete[](void * ptr)
-{
- free(ptr);
-}
-#endif
-
diff --git a/extensions/sqlite/sdk/smsdk_ext.h b/extensions/sqlite/sdk/smsdk_ext.h
deleted file mode 100644
index d77d84db..00000000
--- a/extensions/sqlite/sdk/smsdk_ext.h
+++ /dev/null
@@ -1,300 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#ifndef _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-#define _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
-
-/**
- * @file smsdk_ext.h
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-#include "smsdk_config.h"
-#include
-#include
-#include
-#include
-#include
-#if defined SMEXT_ENABLE_FORWARDSYS
-#include
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-#include
-#endif //SMEXT_ENABLE_PlAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-#include
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-#include
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
-#include
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-#include
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-#include
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-#include
-#endif
-#if defined SMEXT_ENABLE_THREADER
-#include
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-#include
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-#include
-#include
-#endif
-
-using namespace SourceMod;
-using namespace SourcePawn;
-
-class SDKExtension :
-#if defined SMEXT_CONF_METAMOD
- public ISmmPlugin,
-#endif
- public IExtensionInterface
-{
-public:
- /** Constructor */
- SDKExtension();
-public:
- /**
- * @brief This is called after the initial loading sequence has been processed.
- *
- * @param error Error message buffer.
- * @param maxlength Size of error message buffer.
- * @param late Whether or not the module was loaded after map load.
- * @return True to succeed loading, false to fail.
- */
- virtual bool SDK_OnLoad(char *error, size_t maxlength, bool late);
-
- /**
- * @brief This is called right before the extension is unloaded.
- */
- virtual void SDK_OnUnload();
-
- /**
- * @brief This is called once all known extensions have been loaded.
- */
- virtual void SDK_OnAllLoaded();
-
- /**
- * @brief Called when the pause state is changed.
- */
- virtual void SDK_OnPauseChange(bool paused);
-
-#if defined SMEXT_CONF_METAMOD
- /**
- * @brief Called when Metamod is attached, before the extension version is called.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @param late Whether or not Metamod considers this a late load.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late);
-
- /**
- * @brief Called when Metamod is detaching, after the extension version is called.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodUnload(char *error, size_t maxlength);
-
- /**
- * @brief Called when Metamod's pause state is changing.
- * NOTE: By default this is blocked unless sent from SourceMod.
- *
- * @param paused Pause state being set.
- * @param error Error buffer.
- * @param maxlength Maximum size of error buffer.
- * @return True to succeed, false to fail.
- */
- virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength);
-#endif
-
-public: //IExtensionInterface
- virtual bool OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late);
- virtual void OnExtensionUnload();
- virtual void OnExtensionsAllLoaded();
-
- /** Returns whether or not this is a Metamod-based extension */
- virtual bool IsMetamodExtension();
-
- /**
- * @brief Called when the pause state changes.
- *
- * @param state True if being paused, false if being unpaused.
- */
- virtual void OnExtensionPauseChange(bool state);
-
- /** Returns name */
- virtual const char *GetExtensionName();
- /** Returns URL */
- virtual const char *GetExtensionURL();
- /** Returns log tag */
- virtual const char *GetExtensionTag();
- /** Returns author */
- virtual const char *GetExtensionAuthor();
- /** Returns version string */
- virtual const char *GetExtensionVerString();
- /** Returns description string */
- virtual const char *GetExtensionDescription();
- /** Returns date string */
- virtual const char *GetExtensionDateString();
-#if defined SMEXT_CONF_METAMOD
-public: //ISmmPlugin
- /** Called when the extension is attached to Metamod. */
- virtual bool Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlength, bool late);
- /** Returns the author to MM */
- virtual const char *GetAuthor();
- /** Returns the name to MM */
- virtual const char *GetName();
- /** Returns the description to MM */
- virtual const char *GetDescription();
- /** Returns the URL to MM */
- virtual const char *GetURL();
- /** Returns the license to MM */
- virtual const char *GetLicense();
- /** Returns the version string to MM */
- virtual const char *GetVersion();
- /** Returns the date string to MM */
- virtual const char *GetDate();
- /** Returns the logtag to MM */
- virtual const char *GetLogTag();
- /** Called on unload */
- virtual bool Unload(char *error, size_t maxlength);
- /** Called on pause */
- virtual bool Pause(char *error, size_t maxlength);
- /** Called on unpause */
- virtual bool Unpause(char *error, size_t maxlength);
-private:
- bool m_SourceMMLoaded;
- bool m_WeAreUnloaded;
- bool m_WeGotPauseChange;
-#endif
-};
-
-extern SDKExtension *g_pExtensionIface;
-extern IExtension *myself;
-
-extern IShareSys *g_pShareSys;
-extern IShareSys *sharesys; /* Note: Newer name */
-extern ISourceMod *g_pSM;
-extern ISourceMod *smutils; /* Note: Newer name */
-
-/* Optional interfaces are below */
-#if defined SMEXT_ENABLE_FORWARDSYS
-extern IForwardManager *g_pForwards;
-extern IForwardManager *forwards; /* Note: Newer name */
-#endif //SMEXT_ENABLE_FORWARDSYS
-#if defined SMEXT_ENABLE_HANDLESYS
-extern IHandleSys *g_pHandleSys;
-extern IHandleSys *handlesys; /* Note: Newer name */
-#endif //SMEXT_ENABLE_HANDLESYS
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-extern IPlayerManager *playerhelpers;
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-extern IDBManager *dbi;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-extern IGameConfigManager *gameconfs;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-extern IMemoryUtils *memutils;
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
-extern IGameHelpers *gamehelpers;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-extern ITimerSystem *timersys;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-extern IADTFactory *adtfactory;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-extern IThreader *threader;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-extern ILibrarySys *libsys;
-#endif
-
-#if defined SMEXT_CONF_METAMOD
-PLUGIN_GLOBALVARS();
-extern IVEngineServer *engine;
-extern IServerGameDLL *gamedll;
-#endif
-
-/** Creates a SourceMod interface macro pair */
-#define SM_MKIFACE(name) SMINTERFACE_##name##_NAME, SMINTERFACE_##name##_VERSION
-/** Automates retrieving SourceMod interfaces */
-#define SM_GET_IFACE(prefix, addr) \
- if (!g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-/** Automates retrieving SourceMod interfaces when needed outside of SDK_OnLoad() */
-#define SM_GET_LATE_IFACE(prefix, addr) \
- g_pShareSys->RequestInterface(SM_MKIFACE(prefix), myself, (SMInterface **)&addr)
-/** Validates a SourceMod interface pointer */
-#define SM_CHECK_IFACE(prefix, addr) \
- if (!addr) \
- { \
- if (error != NULL && maxlength) \
- { \
- size_t len = snprintf(error, maxlength, "Could not find interface: %s", SMINTERFACE_##prefix##_NAME); \
- if (len >= maxlength) \
- { \
- error[maxlength - 1] = '\0'; \
- } \
- } \
- return false; \
- }
-
-#endif // _INCLUDE_SOURCEMOD_EXTENSION_BASESDK_H_
diff --git a/extensions/sqlite/sdk/smsdk_config.h b/extensions/sqlite/smsdk_config.h
similarity index 100%
rename from extensions/sqlite/sdk/smsdk_config.h
rename to extensions/sqlite/smsdk_config.h
diff --git a/extensions/structs/sdk/smsdk_ext.cpp b/extensions/structs/sdk/smsdk_ext.cpp
deleted file mode 100644
index 865f536e..00000000
--- a/extensions/structs/sdk/smsdk_ext.cpp
+++ /dev/null
@@ -1,461 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Base Extension Code
- * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-#include
-#include
-#include "smsdk_ext.h"
-
-/**
- * @file smsdk_ext.cpp
- * @brief Contains wrappers for making Extensions easier to write.
- */
-
-IExtension *myself = NULL; /**< Ourself */
-IShareSys *g_pShareSys = NULL; /**< Share system */
-IShareSys *sharesys = NULL; /**< Share system */
-ISourceMod *g_pSM = NULL; /**< SourceMod helpers */
-ISourceMod *smutils = NULL; /**< SourceMod helpers */
-
-#if defined SMEXT_ENABLE_FORWARDSYS
-IForwardManager *g_pForwards = NULL; /**< Forward system */
-IForwardManager *forwards = NULL; /**< Forward system */
-#endif
-#if defined SMEXT_ENABLE_HANDLESYS
-IHandleSys *g_pHandleSys = NULL; /**< Handle system */
-IHandleSys *handlesys = NULL; /**< Handle system */
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
-IPlayerManager *playerhelpers = NULL; /**< Player helpers */
-#endif //SMEXT_ENABLE_PLAYERHELPERS
-#if defined SMEXT_ENABLE_DBMANAGER
-IDBManager *dbi = NULL; /**< DB Manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMECONF
-IGameConfigManager *gameconfs = NULL; /**< Game config manager */
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_MEMUTILS
-IMemoryUtils *memutils = NULL;
-#endif //SMEXT_ENABLE_DBMANAGER
-#if defined SMEXT_ENABLE_GAMEHELPERS
-IGameHelpers *gamehelpers = NULL;
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
-ITimerSystem *timersys = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
-IADTFactory *adtfactory = NULL;
-#endif
-#if defined SMEXT_ENABLE_THREADER
-IThreader *threader = NULL;
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
-ILibrarySys *libsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
-SourceMod::IPluginManager *plsys;
-#endif
-#if defined SMEXT_ENABLE_MENUS
-IMenuManager *menus = NULL;
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
-IAdminSystem *adminsys = NULL;
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
-ITextParsers *textparsers = NULL;
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
-IUserMessages *usermsgs = NULL;
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
-ITranslator *translator = NULL;
-#endif
-
-/** Exports the main interface */
-PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
-{
- return g_pExtensionIface;
-}
-
-SDKExtension::SDKExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- m_SourceMMLoaded = false;
- m_WeAreUnloaded = false;
- m_WeGotPauseChange = false;
-#endif
-}
-
-bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late)
-{
- g_pShareSys = sharesys = sys;
- myself = me;
-
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-
- if (!m_SourceMMLoaded)
- {
- if (error)
- {
- snprintf(error, maxlength, "Metamod attach failed");
- }
- return false;
- }
-#endif
- SM_GET_IFACE(SOURCEMOD, g_pSM);
- smutils = g_pSM;
-#if defined SMEXT_ENABLE_HANDLESYS
- SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
- handlesys = g_pHandleSys;
-#endif
-#if defined SMEXT_ENABLE_FORWARDSYS
- SM_GET_IFACE(FORWARDMANAGER, g_pForwards);
- forwards = g_pForwards;
-#endif
-#if defined SMEXT_ENABLE_PLAYERHELPERS
- SM_GET_IFACE(PLAYERMANAGER, playerhelpers);
-#endif
-#if defined SMEXT_ENABLE_DBMANAGER
- SM_GET_IFACE(DBI, dbi);
-#endif
-#if defined SMEXT_ENABLE_GAMECONF
- SM_GET_IFACE(GAMECONFIG, gameconfs);
-#endif
-#if defined SMEXT_ENABLE_MEMUTILS
- SM_GET_IFACE(MEMORYUTILS, memutils);
-#endif
-#if defined SMEXT_ENABLE_GAMEHELPERS
- SM_GET_IFACE(GAMEHELPERS, gamehelpers);
-#endif
-#if defined SMEXT_ENABLE_TIMERSYS
- SM_GET_IFACE(TIMERSYS, timersys);
-#endif
-#if defined SMEXT_ENABLE_ADTFACTORY
- SM_GET_IFACE(ADTFACTORY, adtfactory);
-#endif
-#if defined SMEXT_ENABLE_THREADER
- SM_GET_IFACE(THREADER, threader);
-#endif
-#if defined SMEXT_ENABLE_LIBSYS
- SM_GET_IFACE(LIBRARYSYS, libsys);
-#endif
-#if defined SMEXT_ENABLE_PLUGINSYS
- SM_GET_IFACE(PLUGINSYSTEM, plsys);
-#endif
-#if defined SMEXT_ENABLE_MENUS
- SM_GET_IFACE(MENUMANAGER, menus);
-#endif
-#if defined SMEXT_ENABLE_ADMINSYS
- SM_GET_IFACE(ADMINSYS, adminsys);
-#endif
-#if defined SMEXT_ENABLE_TEXTPARSERS
- SM_GET_IFACE(TEXTPARSERS, textparsers);
-#endif
-#if defined SMEXT_ENABLE_USERMSGS
- SM_GET_IFACE(USERMSGS, usermsgs);
-#endif
-#if defined SMEXT_ENABLE_TRANSLATOR
- SM_GET_IFACE(TRANSLATOR, translator);
-#endif
-
- if (SDK_OnLoad(error, maxlength, late))
- {
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- return true;
- }
-
- return false;
-}
-
-bool SDKExtension::IsMetamodExtension()
-{
-#if defined SMEXT_CONF_METAMOD
- return true;
-#else
- return false;
-#endif
-}
-
-void SDKExtension::OnExtensionPauseChange(bool state)
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeGotPauseChange = true;
-#endif
- SDK_OnPauseChange(state);
-}
-
-void SDKExtension::OnExtensionsAllLoaded()
-{
- SDK_OnAllLoaded();
-}
-
-void SDKExtension::OnExtensionUnload()
-{
-#if defined SMEXT_CONF_METAMOD
- m_WeAreUnloaded = true;
-#endif
- SDK_OnUnload();
-}
-
-const char *SDKExtension::GetExtensionAuthor()
-{
- return SMEXT_CONF_AUTHOR;
-}
-
-const char *SDKExtension::GetExtensionDateString()
-{
- return SMEXT_CONF_DATESTRING;
-}
-
-const char *SDKExtension::GetExtensionDescription()
-{
- return SMEXT_CONF_DESCRIPTION;
-}
-
-const char *SDKExtension::GetExtensionVerString()
-{
- return SMEXT_CONF_VERSION;
-}
-
-const char *SDKExtension::GetExtensionName()
-{
- return SMEXT_CONF_NAME;
-}
-
-const char *SDKExtension::GetExtensionTag()
-{
- return SMEXT_CONF_LOGTAG;
-}
-
-const char *SDKExtension::GetExtensionURL()
-{
- return SMEXT_CONF_URL;
-}
-
-bool SDKExtension::SDK_OnLoad(char *error, size_t maxlength, bool late)
-{
- return true;
-}
-
-void SDKExtension::SDK_OnUnload()
-{
-}
-
-void SDKExtension::SDK_OnPauseChange(bool paused)
-{
-}
-
-void SDKExtension::SDK_OnAllLoaded()
-{
-}
-
-#if defined SMEXT_CONF_METAMOD
-
-PluginId g_PLID = 0; /**< Metamod plugin ID */
-ISmmPlugin *g_PLAPI = NULL; /**< Metamod plugin API */
-SourceHook::ISourceHook *g_SHPtr = NULL; /**< SourceHook pointer */
-ISmmAPI *g_SMAPI = NULL; /**< SourceMM API pointer */
-
-IVEngineServer *engine = NULL; /**< IVEngineServer pointer */
-IServerGameDLL *gamedll = NULL; /**< IServerGameDLL pointer */
-
-/** Exposes the extension to Metamod */
-SMM_API void *PL_EXPOSURE(const char *name, int *code)
-{
-#if defined METAMOD_PLAPI_VERSION
- if (name && !strcmp(name, METAMOD_PLAPI_NAME))
-#else
- if (name && !strcmp(name, PLAPI_NAME))
-#endif
- {
- if (code)
- {
- *code = IFACE_OK;
- }
- return static_cast