Removed gEntList failure notify on Windows. (
bug 4832, r=fyren).
3 * =============================================================================
5 * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
6 * =============================================================================
8 * This program is free software; you can redistribute it and/or modify it under
9 * the terms of the GNU General Public License, version 3.0, as published by the
10 * Free Software Foundation.
12 * This program is distributed in the hope that it will be useful, but WITHOUT
13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
17 * You should have received a copy of the GNU General Public License along with
18 * this program. If not, see <http://www.gnu.org/licenses/>.
20 * As a special exception, AlliedModders LLC gives you permission to link the
21 * code of this program (as well as its derivative works) to "Half-Life 2," the
22 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
23 * by the Valve Corporation. You must obey the GNU General Public License in
24 * all respects for all other code used. Additionally, AlliedModders LLC grants
25 * this exception to all derivative works. AlliedModders LLC defines further
26 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
27 * or <http://www.sourcemod.net/license.php>.
32 #ifndef _INCLUDE_SOURCEMOD_SHARESYSTEM_H_
33 #define _INCLUDE_SOURCEMOD_SHARESYSTEM_H_
35 #include <IShareSys.h>
36 #include <IHandleSys.h>
38 #include <sm_trie_tpl.h>
39 #include "sm_globals.h"
40 #include "sourcemod.h"
42 using namespace SourceHook;
46 struct IdentityToken_t
56 bool operator ==(const IfaceInfo &info)
58 return (info.iface == iface && info.owner == owner);
71 SPVM_NATIVE_FUNC func;
78 IPluginFunction *call;
84 SPVM_NATIVE_FUNC func;
86 ReplaceNative replacement;
93 IFeatureProvider *provider;
99 public IHandleTypeDispatch
101 friend class CNativeOwner;
105 bool AddInterface(IExtension *myself, SMInterface *pIface);
106 bool RequestInterface(const char *iface_name,
107 unsigned int iface_vers,
109 SMInterface **pIface);
110 void AddNatives(IExtension *myself, const sp_nativeinfo_t *natives);
111 IdentityType_t CreateIdentType(const char *name);
112 IdentityType_t FindIdentType(const char *name);
113 IdentityToken_t *CreateIdentity(IdentityType_t type, void *ptr);
114 void DestroyIdentType(IdentityType_t type);
115 void DestroyIdentity(IdentityToken_t *identity);
116 void AddDependency(IExtension *myself, const char *filename, bool require, bool autoload);
117 void RegisterLibrary(IExtension *myself, const char *name);
118 void OverrideNatives(IExtension *myself, const sp_nativeinfo_t *natives);
119 void AddCapabilityProvider(IExtension *myself, IFeatureProvider *provider,
121 void DropCapabilityProvider(IExtension *myself, IFeatureProvider *provider,
123 public: //SMGlobalClass
124 /* Pre-empt in case anything tries to register idents early */
126 void OnSourceModShutdown();
127 public: //IHandleTypeDispatch
128 void OnHandleDestroy(HandleType_t type, void *object);
130 IdentityToken_t *CreateCoreIdentity();
131 void RemoveInterfaces(IExtension *pExtension);
132 FeatureStatus TestFeature(IPluginRuntime *pRuntime, FeatureType feature, const char *name);
133 FeatureStatus TestNative(IPluginRuntime *pRuntime, const char *name);
134 FeatureStatus TestCap(const char *name);
136 inline IdentityToken_t *GetIdentRoot()
141 void BindNativesToPlugin(CPlugin *pPlugin, bool bCoreOnly);
142 void BindNativeToPlugin(CPlugin *pPlugin, NativeEntry *pEntry);
143 NativeEntry *AddFakeNative(IPluginFunction *pFunc, const char *name, SPVM_FAKENATIVE_FUNC func);
144 NativeEntry *FindNative(const char *name);
146 NativeEntry *AddNativeToCache(CNativeOwner *pOwner, const sp_nativeinfo_t *ntv);
147 void ClearNativeFromCache(CNativeOwner *pOwner, const char *name);
148 void BindNativeToPlugin(CPlugin *pPlugin,
151 NativeEntry *pEntry);
153 List<IfaceInfo> m_Interfaces;
154 HandleType_t m_TypeRoot;
155 IdentityToken_t m_IdentRoot;
156 HandleType_t m_IfaceType;
157 IdentityType_t m_CoreType;
158 KTrie<NativeEntry *> m_NtvCache;
159 KTrie<Capability> m_caps;
162 extern ShareSystem g_ShareSys;
164 #endif //_INCLUDE_SOURCEMOD_SHARESYSTEM_H_