-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathlua.hpp
88 lines (81 loc) · 2.68 KB
/
lua.hpp
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
81
82
83
84
85
86
87
88
#pragma once
#include <cstdint>
#include "Interface.hpp"
namespace lua
{
using number_t = double;
enum class special
{
glob,
env,
reg
};
enum class type
{
client,
server,
menu
};
class Interface
{
public:
virtual int Top(void) = 0;
virtual void Push(int iStackPos) = 0;
virtual void Pop(int iAmt = 1) = 0;
virtual void GetTable(int iStackPos) = 0;
virtual void GetField(int iStackPos, const char* strName) = 0;
virtual void SetField(int iStackPos, const char* strName) = 0;
virtual void CreateTable() = 0;
virtual void SetTable(int i) = 0;
virtual void SetMetaTable(int i) = 0;
virtual bool GetMetaTable(int i) = 0;
virtual void Call(int iArgs, int iResults) = 0;
virtual int PCall(int iArgs, int iResults, int iErrorFunc) = 0;
virtual int Equal(int iA, int iB) = 0;
virtual int RawEqual(int iA, int iB) = 0;
virtual void Insert(int iStackPos) = 0;
virtual void Remove(int iStackPos) = 0;
virtual int Next(int iStackPos) = 0;
virtual void* NewUserdata(unsigned int iSize) = 0;
virtual void ThrowError(const char* strError) = 0;
virtual void CheckType(int iStackPos, int iType) = 0;
virtual void ArgError(int iArgNum, const char* strMessage) = 0;
virtual void RawGet(int iStackPos) = 0;
virtual void RawSet(int iStackPos) = 0;
virtual const char* GetString(int iStackPos = -1, unsigned int* iOutLen = nullptr) = 0;
virtual double GetNumber(int iStackPos = -1) = 0;
virtual bool GetBool(int iStackPos = -1) = 0;
virtual void* GetCFunction(int iStackPos = -1) = 0;
virtual void* GetUserdata(int iStackPos = -1) = 0;
virtual void PushNil() = 0;
virtual void PushString(const char* val, unsigned int iLen = 0) = 0;
virtual void PushNumber(double val) = 0;
virtual void PushBool(bool val) = 0;
virtual void PushCFunction(void* val) = 0;
virtual void PushCClosure(void* val, int iVars) = 0;
virtual void PushUserdata(void*) = 0;
virtual int ReferenceCreate() = 0;
virtual void ReferenceFree(int i) = 0;
virtual void ReferencePush(int i) = 0;
virtual void PushSpecial(special iType) = 0;
virtual bool IsType(int iStackPos, int iType) = 0;
virtual int GetType(int iStackPos) = 0;
virtual const char* GetTypeName(int iType) = 0;
virtual void CreateMetaTableType(const char* strName, int iType) = 0;
virtual const char* CheckString(int iStackPos = -1) = 0;
virtual double CheckNumber(int iStackPos = -1) = 0;
};
class Shared
{
public:
inline Interface* create_interface(type state)
{
using create_interface_t = Interface * (__thiscall*)(void*, type);
return method<create_interface_t>(6, this)(this, state);
}
};
}
namespace globals
{
inline lua::Shared* lua = nullptr;
}