/
LuaShared.h
80 lines (71 loc) · 1.85 KB
/
LuaShared.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#pragma once
#define GMOD_LUASHARED_INTERFACE "LUASHARED003"
#include <string>
#include <vector>
class LuaClientDatatableHook;
class IGet;
class CSteamAPIContext;
namespace Bootil
{
struct AutoBuffer
{
void *m_pData;
unsigned int m_iSize;
unsigned int m_iPos;
unsigned int m_iWritten;
};
}
namespace GarrysMod
{
namespace Lua
{
class ILuaInterface;
namespace State
{
enum
{
CLIENT = 0,
SERVER,
MENU
};
static const char *Name[] = {
"client",
"server",
"menu",
nullptr
};
}
struct File
{
int time;
std::string name;
std::string source;
std::string contents;
Bootil::AutoBuffer compressed;
unsigned int timesloadedserver;
unsigned int timesloadedclient;
};
class ILuaShared
{
public:
virtual ~ILuaShared( ) = 0;
virtual void Init( void *( * )( const char *, int * ), bool, CSteamAPIContext *, IGet * ) = 0;
virtual void Shutdown( ) = 0;
virtual void DumpStats( ) = 0;
virtual ILuaInterface *CreateLuaInterface( unsigned char, bool ) = 0;
virtual void CloseLuaInterface( ILuaInterface * ) = 0;
virtual ILuaInterface *GetLuaInterface( unsigned char ) = 0;
virtual File *LoadFile( const std::string &path, const std::string &pathId, bool fromDatatable, bool fromFile ) = 0;
virtual File *GetCache( const std::string & );
virtual void MountLua( const char * ) = 0;
virtual void MountLuaAdd( const char *, const char * ) = 0;
virtual void UnMountLua( const char * ) = 0;
virtual void SetFileContents( const char *, const char * ) = 0;
virtual void SetLuaFindHook( LuaClientDatatableHook * ) = 0;
virtual void FindScripts( const std::string &, const std::string &, std::vector<std::string> & ) = 0;
virtual const char *GetStackTraces( ) = 0;
virtual void InvalidateCache( const std::string & ) = 0;
virtual void EmptyCache( ) = 0;
};
}
}