1.1 --- a/extensions/sqlite/sdk/smsdk_ext.cpp Fri Mar 28 06:21:34 2008 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,415 +0,0 @@
1.4 -/**
1.5 - * vim: set ts=4 :
1.6 - * =============================================================================
1.7 - * SourceMod Base Extension Code
1.8 - * Copyright (C) 2004-2007 AlliedModders LLC. All rights reserved.
1.9 - * =============================================================================
1.10 - *
1.11 - * This program is free software; you can redistribute it and/or modify it under
1.12 - * the terms of the GNU General Public License, version 3.0, as published by the
1.13 - * Free Software Foundation.
1.14 - *
1.15 - * This program is distributed in the hope that it will be useful, but WITHOUT
1.16 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
1.17 - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
1.18 - * details.
1.19 - *
1.20 - * You should have received a copy of the GNU General Public License along with
1.21 - * this program. If not, see <http://www.gnu.org/licenses/>.
1.22 - *
1.23 - * As a special exception, AlliedModders LLC gives you permission to link the
1.24 - * code of this program (as well as its derivative works) to "Half-Life 2," the
1.25 - * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
1.26 - * by the Valve Corporation. You must obey the GNU General Public License in
1.27 - * all respects for all other code used. Additionally, AlliedModders LLC grants
1.28 - * this exception to all derivative works. AlliedModders LLC defines further
1.29 - * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
1.30 - * or <http://www.sourcemod.net/license.php>.
1.31 - *
1.32 - * Version: $Id$
1.33 - */
1.34 -#include <stdio.h>
1.35 -#include <malloc.h>
1.36 -#include "smsdk_ext.h"
1.37 -
1.38 -/**
1.39 - * @file smsdk_ext.cpp
1.40 - * @brief Contains wrappers for making Extensions easier to write.
1.41 - */
1.42 -
1.43 -IExtension *myself = NULL; /**< Ourself */
1.44 -IShareSys *g_pShareSys = NULL; /**< Share system */
1.45 -IShareSys *sharesys = NULL; /**< Share system */
1.46 -ISourceMod *g_pSM = NULL; /**< SourceMod helpers */
1.47 -ISourceMod *smutils = NULL; /**< SourceMod helpers */
1.48 -
1.49 -#if defined SMEXT_ENABLE_FORWARDSYS
1.50 -IForwardManager *g_pForwards = NULL; /**< Forward system */
1.51 -IForwardManager *forwards = NULL; /**< Forward system */
1.52 -#endif
1.53 -#if defined SMEXT_ENABLE_HANDLESYS
1.54 -IHandleSys *g_pHandleSys = NULL; /**< Handle system */
1.55 -IHandleSys *handlesys = NULL; /**< Handle system */
1.56 -#endif
1.57 -#if defined SMEXT_ENABLE_PLAYERHELPERS
1.58 -IPlayerManager *playerhelpers = NULL; /**< Player helpers */
1.59 -#endif //SMEXT_ENABLE_PLAYERHELPERS
1.60 -#if defined SMEXT_ENABLE_DBMANAGER
1.61 -IDBManager *dbi = NULL; /**< DB Manager */
1.62 -#endif //SMEXT_ENABLE_DBMANAGER
1.63 -#if defined SMEXT_ENABLE_GAMECONF
1.64 -IGameConfigManager *gameconfs = NULL; /**< Game config manager */
1.65 -#endif //SMEXT_ENABLE_DBMANAGER
1.66 -#if defined SMEXT_ENABLE_MEMUTILS
1.67 -IMemoryUtils *memutils = NULL;
1.68 -#endif //SMEXT_ENABLE_DBMANAGER
1.69 -#if defined SMEXT_ENABLE_GAMEHELPERS
1.70 -IGameHelpers *gamehelpers = NULL;
1.71 -#endif
1.72 -#if defined SMEXT_ENABLE_TIMERSYS
1.73 -ITimerSystem *timersys = NULL;
1.74 -#endif
1.75 -#if defined SMEXT_ENABLE_ADTFACTORY
1.76 -IADTFactory *adtfactory = NULL;
1.77 -#endif
1.78 -#if defined SMEXT_ENABLE_THREADER
1.79 -IThreader *threader = NULL;
1.80 -#endif
1.81 -#if defined SMEXT_ENABLE_LIBSYS
1.82 -ILibrarySys *libsys = NULL;
1.83 -#endif
1.84 -
1.85 -/** Exports the main interface */
1.86 -PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
1.87 -{
1.88 - return g_pExtensionIface;
1.89 -}
1.90 -
1.91 -SDKExtension::SDKExtension()
1.92 -{
1.93 -#if defined SMEXT_CONF_METAMOD
1.94 - m_SourceMMLoaded = false;
1.95 - m_WeAreUnloaded = false;
1.96 - m_WeGotPauseChange = false;
1.97 -#endif
1.98 -}
1.99 -
1.100 -bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error, size_t maxlength, bool late)
1.101 -{
1.102 - g_pShareSys = sharesys = sys;
1.103 - myself = me;
1.104 -
1.105 -#if defined SMEXT_CONF_METAMOD
1.106 - m_WeAreUnloaded = true;
1.107 -
1.108 - if (!m_SourceMMLoaded)
1.109 - {
1.110 - if (error)
1.111 - {
1.112 - snprintf(error, maxlength, "Metamod attach failed");
1.113 - }
1.114 - return false;
1.115 - }
1.116 -#endif
1.117 - SM_GET_IFACE(SOURCEMOD, g_pSM);
1.118 - smutils = g_pSM;
1.119 -#if defined SMEXT_ENABLE_HANDLESYS
1.120 - SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
1.121 - handlesys = g_pHandleSys;
1.122 -#endif
1.123 -#if defined SMEXT_ENABLE_FORWARDSYS
1.124 - SM_GET_IFACE(FORWARDMANAGER, g_pForwards);
1.125 - forwards = g_pForwards;
1.126 -#endif
1.127 -#if defined SMEXT_ENABLE_PLAYERHELPERS
1.128 - SM_GET_IFACE(PLAYERMANAGER, playerhelpers);
1.129 -#endif
1.130 -#if defined SMEXT_ENABLE_DBMANAGER
1.131 - SM_GET_IFACE(DBI, dbi);
1.132 -#endif
1.133 -#if defined SMEXT_ENABLE_GAMECONF
1.134 - SM_GET_IFACE(GAMECONFIG, gameconfs);
1.135 -#endif
1.136 -#if defined SMEXT_ENABLE_MEMUTILS
1.137 - SM_GET_IFACE(MEMORYUTILS, memutils);
1.138 -#endif
1.139 -#if defined SMEXT_ENABLE_GAMEHELPERS
1.140 - SM_GET_IFACE(GAMEHELPERS, gamehelpers);
1.141 -#endif
1.142 -#if defined SMEXT_ENABLE_TIMERSYS
1.143 - SM_GET_IFACE(TIMERSYS, timersys);
1.144 -#endif
1.145 -#if defined SMEXT_ENABLE_ADTFACTORY
1.146 - SM_GET_IFACE(ADTFACTORY, adtfactory);
1.147 -#endif
1.148 -#if defined SMEXT_ENABLE_THREADER
1.149 - SM_GET_IFACE(THREADER, threader);
1.150 -#endif
1.151 -#if defined SMEXT_ENABLE_LIBSYS
1.152 - SM_GET_IFACE(LIBRARYSYS, libsys);
1.153 -#endif
1.154 -
1.155 - if (SDK_OnLoad(error, maxlength, late))
1.156 - {
1.157 -#if defined SMEXT_CONF_METAMOD
1.158 - m_WeAreUnloaded = true;
1.159 -#endif
1.160 - return true;
1.161 - }
1.162 -
1.163 - return false;
1.164 -}
1.165 -
1.166 -bool SDKExtension::IsMetamodExtension()
1.167 -{
1.168 -#if defined SMEXT_CONF_METAMOD
1.169 - return true;
1.170 -#else
1.171 - return false;
1.172 -#endif
1.173 -}
1.174 -
1.175 -void SDKExtension::OnExtensionPauseChange(bool state)
1.176 -{
1.177 -#if defined SMEXT_CONF_METAMOD
1.178 - m_WeGotPauseChange = true;
1.179 -#endif
1.180 - SDK_OnPauseChange(state);
1.181 -}
1.182 -
1.183 -void SDKExtension::OnExtensionsAllLoaded()
1.184 -{
1.185 - SDK_OnAllLoaded();
1.186 -}
1.187 -
1.188 -void SDKExtension::OnExtensionUnload()
1.189 -{
1.190 -#if defined SMEXT_CONF_METAMOD
1.191 - m_WeAreUnloaded = true;
1.192 -#endif
1.193 - SDK_OnUnload();
1.194 -}
1.195 -
1.196 -const char *SDKExtension::GetExtensionAuthor()
1.197 -{
1.198 - return SMEXT_CONF_AUTHOR;
1.199 -}
1.200 -
1.201 -const char *SDKExtension::GetExtensionDateString()
1.202 -{
1.203 - return SMEXT_CONF_DATESTRING;
1.204 -}
1.205 -
1.206 -const char *SDKExtension::GetExtensionDescription()
1.207 -{
1.208 - return SMEXT_CONF_DESCRIPTION;
1.209 -}
1.210 -
1.211 -const char *SDKExtension::GetExtensionVerString()
1.212 -{
1.213 - return SMEXT_CONF_VERSION;
1.214 -}
1.215 -
1.216 -const char *SDKExtension::GetExtensionName()
1.217 -{
1.218 - return SMEXT_CONF_NAME;
1.219 -}
1.220 -
1.221 -const char *SDKExtension::GetExtensionTag()
1.222 -{
1.223 - return SMEXT_CONF_LOGTAG;
1.224 -}
1.225 -
1.226 -const char *SDKExtension::GetExtensionURL()
1.227 -{
1.228 - return SMEXT_CONF_URL;
1.229 -}
1.230 -
1.231 -bool SDKExtension::SDK_OnLoad(char *error, size_t maxlength, bool late)
1.232 -{
1.233 - return true;
1.234 -}
1.235 -
1.236 -void SDKExtension::SDK_OnUnload()
1.237 -{
1.238 -}
1.239 -
1.240 -void SDKExtension::SDK_OnPauseChange(bool paused)
1.241 -{
1.242 -}
1.243 -
1.244 -void SDKExtension::SDK_OnAllLoaded()
1.245 -{
1.246 -}
1.247 -
1.248 -#if defined SMEXT_CONF_METAMOD
1.249 -
1.250 -PluginId g_PLID = 0; /**< Metamod plugin ID */
1.251 -ISmmPlugin *g_PLAPI = NULL; /**< Metamod plugin API */
1.252 -SourceHook::ISourceHook *g_SHPtr = NULL; /**< SourceHook pointer */
1.253 -ISmmAPI *g_SMAPI = NULL; /**< SourceMM API pointer */
1.254 -
1.255 -IVEngineServer *engine = NULL; /**< IVEngineServer pointer */
1.256 -IServerGameDLL *gamedll = NULL; /**< IServerGameDLL pointer */
1.257 -
1.258 -/** Exposes the extension to Metamod */
1.259 -SMM_API void *PL_EXPOSURE(const char *name, int *code)
1.260 -{
1.261 - if (name && !strcmp(name, PLAPI_NAME))
1.262 - {
1.263 - if (code)
1.264 - {
1.265 - *code = IFACE_OK;
1.266 - }
1.267 - return static_cast<void *>(g_pExtensionIface);
1.268 - }
1.269 -
1.270 - if (code)
1.271 - {
1.272 - *code = IFACE_FAILED;
1.273 - }
1.274 -
1.275 - return NULL;
1.276 -}
1.277 -
1.278 -bool SDKExtension::Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late)
1.279 -{
1.280 - PLUGIN_SAVEVARS();
1.281 -
1.282 - GET_V_IFACE_ANY(serverFactory, gamedll, IServerGameDLL, INTERFACEVERSION_SERVERGAMEDLL);
1.283 - GET_V_IFACE_CURRENT(engineFactory, engine, IVEngineServer, INTERFACEVERSION_VENGINESERVER);
1.284 -
1.285 - m_SourceMMLoaded = true;
1.286 -
1.287 - return SDK_OnMetamodLoad(ismm, error, maxlen, late);
1.288 -}
1.289 -
1.290 -bool SDKExtension::Unload(char *error, size_t maxlen)
1.291 -{
1.292 - if (!m_WeAreUnloaded)
1.293 - {
1.294 - if (error)
1.295 - {
1.296 - snprintf(error, maxlen, "This extension must be unloaded by SourceMod.");
1.297 - }
1.298 - return false;
1.299 - }
1.300 -
1.301 - return SDK_OnMetamodUnload(error, maxlen);
1.302 -}
1.303 -
1.304 -bool SDKExtension::Pause(char *error, size_t maxlen)
1.305 -{
1.306 - if (!m_WeGotPauseChange)
1.307 - {
1.308 - if (error)
1.309 - {
1.310 - snprintf(error, maxlen, "This extension must be paused by SourceMod.");
1.311 - }
1.312 - return false;
1.313 - }
1.314 -
1.315 - m_WeGotPauseChange = false;
1.316 -
1.317 - return SDK_OnMetamodPauseChange(true, error, maxlen);
1.318 -}
1.319 -
1.320 -bool SDKExtension::Unpause(char *error, size_t maxlen)
1.321 -{
1.322 - if (!m_WeGotPauseChange)
1.323 - {
1.324 - if (error)
1.325 - {
1.326 - snprintf(error, maxlen, "This extension must be unpaused by SourceMod.");
1.327 - }
1.328 - return false;
1.329 - }
1.330 -
1.331 - m_WeGotPauseChange = false;
1.332 -
1.333 - return SDK_OnMetamodPauseChange(false, error, maxlen);
1.334 -}
1.335 -
1.336 -const char *SDKExtension::GetAuthor()
1.337 -{
1.338 - return GetExtensionAuthor();
1.339 -}
1.340 -
1.341 -const char *SDKExtension::GetDate()
1.342 -{
1.343 - return GetExtensionDateString();
1.344 -}
1.345 -
1.346 -const char *SDKExtension::GetDescription()
1.347 -{
1.348 - return GetExtensionDescription();
1.349 -}
1.350 -
1.351 -const char *SDKExtension::GetLicense()
1.352 -{
1.353 - return SMEXT_CONF_LICENSE;
1.354 -}
1.355 -
1.356 -const char *SDKExtension::GetLogTag()
1.357 -{
1.358 - return GetExtensionTag();
1.359 -}
1.360 -
1.361 -const char *SDKExtension::GetName()
1.362 -{
1.363 - return GetExtensionName();
1.364 -}
1.365 -
1.366 -const char *SDKExtension::GetURL()
1.367 -{
1.368 - return GetExtensionURL();
1.369 -}
1.370 -
1.371 -const char *SDKExtension::GetVersion()
1.372 -{
1.373 - return GetExtensionVerString();
1.374 -}
1.375 -
1.376 -bool SDKExtension::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late)
1.377 -{
1.378 - return true;
1.379 -}
1.380 -
1.381 -bool SDKExtension::SDK_OnMetamodUnload(char *error, size_t maxlength)
1.382 -{
1.383 - return true;
1.384 -}
1.385 -
1.386 -bool SDKExtension::SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength)
1.387 -{
1.388 - return true;
1.389 -}
1.390 -
1.391 -#endif
1.392 -
1.393 -/* Overload a few things to prevent libstdc++ linking */
1.394 -#if defined __linux__
1.395 -extern "C" void __cxa_pure_virtual(void)
1.396 -{
1.397 -}
1.398 -
1.399 -void *operator new(size_t size)
1.400 -{
1.401 - return malloc(size);
1.402 -}
1.403 -
1.404 -void *operator new[](size_t size)
1.405 -{
1.406 - return malloc(size);
1.407 -}
1.408 -
1.409 -void operator delete(void *ptr)
1.410 -{
1.411 - free(ptr);
1.412 -}
1.413 -
1.414 -void operator delete[](void * ptr)
1.415 -{
1.416 - free(ptr);
1.417 -}
1.418 -#endif