1 #ifndef _INCLUDE_SOURCEMOD_SHARESYSTEM_H_
2 #define _INCLUDE_SOURCEMOD_SHARESYSTEM_H_
5 #include <IHandleSys.h>
7 #include "sm_globals.h"
10 using namespace SourceHook;
14 struct IdentityToken_t
29 public IHandleTypeDispatch
34 bool AddInterface(IExtension *myself, SMInterface *pIface);
35 bool RequestInterface(const char *iface_name,
36 unsigned int iface_vers,
38 SMInterface **pIface);
39 void AddNatives(IdentityToken_t *token, const sp_nativeinfo_t *natives[]);
40 IdentityType_t CreateIdentType(const char *name);
41 IdentityType_t FindIdentType(const char *name);
42 IdentityToken_t *CreateIdentity(IdentityType_t type);
43 void DestroyIdentType(IdentityType_t type);
44 void DestroyIdentity(IdentityToken_t *identity);
45 public: //SMGlobalClass
46 /* Pre-empt in case anything tries to register idents early */
47 void OnSourceModStartup(bool late);
48 void OnSourceModShutdown();
49 public: //IHandleTypeDispatch
50 void OnHandleDestroy(HandleType_t type, void *object);
52 IdentityToken_t *CreateCoreIdentity();
53 void RemoveInterfaces(IExtension *pExtension);
55 inline IdentityToken_t *GetIdentRoot()
60 List<IfaceInfo> m_Interfaces;
61 HandleType_t m_TypeRoot;
62 IdentityToken_t m_IdentRoot;
63 HandleType_t m_IfaceType;
64 IdentityType_t m_CoreType;
67 extern ShareSystem g_ShareSys;
69 #endif //_INCLUDE_SOURCEMOD_SHARESYSTEM_H_