diff options
author | Li Jin <dragon-fly@qq.com> | 2022-10-31 11:32:33 +0800 |
---|---|---|
committer | Li Jin <dragon-fly@qq.com> | 2022-11-09 11:29:32 +0800 |
commit | 417ec1a37922c6178900adfec70628cad46731ff (patch) | |
tree | a5a2d74927ad2c41b5a16264a78409e1c0334b72 /win-build/Lua53/lfunc.h | |
parent | 3dd607c8887d2fe0186668aabca31bb84a41e2da (diff) | |
download | yuescript-417ec1a37922c6178900adfec70628cad46731ff.tar.gz yuescript-417ec1a37922c6178900adfec70628cad46731ff.tar.bz2 yuescript-417ec1a37922c6178900adfec70628cad46731ff.zip |
fix issue #112 and issue #113.
Diffstat (limited to 'win-build/Lua53/lfunc.h')
-rw-r--r-- | win-build/Lua53/lfunc.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/win-build/Lua53/lfunc.h b/win-build/Lua53/lfunc.h new file mode 100644 index 0000000..c916e98 --- /dev/null +++ b/win-build/Lua53/lfunc.h | |||
@@ -0,0 +1,61 @@ | |||
1 | /* | ||
2 | ** $Id: lfunc.h,v 2.15.1.1 2017/04/19 17:39:34 roberto Exp $ | ||
3 | ** Auxiliary functions to manipulate prototypes and closures | ||
4 | ** See Copyright Notice in lua.h | ||
5 | */ | ||
6 | |||
7 | #ifndef lfunc_h | ||
8 | #define lfunc_h | ||
9 | |||
10 | |||
11 | #include "lobject.h" | ||
12 | |||
13 | |||
14 | #define sizeCclosure(n) (cast(int, sizeof(CClosure)) + \ | ||
15 | cast(int, sizeof(TValue)*((n)-1))) | ||
16 | |||
17 | #define sizeLclosure(n) (cast(int, sizeof(LClosure)) + \ | ||
18 | cast(int, sizeof(TValue *)*((n)-1))) | ||
19 | |||
20 | |||
21 | /* test whether thread is in 'twups' list */ | ||
22 | #define isintwups(L) (L->twups != L) | ||
23 | |||
24 | |||
25 | /* | ||
26 | ** maximum number of upvalues in a closure (both C and Lua). (Value | ||
27 | ** must fit in a VM register.) | ||
28 | */ | ||
29 | #define MAXUPVAL 255 | ||
30 | |||
31 | |||
32 | /* | ||
33 | ** Upvalues for Lua closures | ||
34 | */ | ||
35 | struct UpVal { | ||
36 | TValue *v; /* points to stack or to its own value */ | ||
37 | lu_mem refcount; /* reference counter */ | ||
38 | union { | ||
39 | struct { /* (when open) */ | ||
40 | UpVal *next; /* linked list */ | ||
41 | int touched; /* mark to avoid cycles with dead threads */ | ||
42 | } open; | ||
43 | TValue value; /* the value (when closed) */ | ||
44 | } u; | ||
45 | }; | ||
46 | |||
47 | #define upisopen(up) ((up)->v != &(up)->u.value) | ||
48 | |||
49 | |||
50 | LUAI_FUNC Proto *luaF_newproto (lua_State *L); | ||
51 | LUAI_FUNC CClosure *luaF_newCclosure (lua_State *L, int nelems); | ||
52 | LUAI_FUNC LClosure *luaF_newLclosure (lua_State *L, int nelems); | ||
53 | LUAI_FUNC void luaF_initupvals (lua_State *L, LClosure *cl); | ||
54 | LUAI_FUNC UpVal *luaF_findupval (lua_State *L, StkId level); | ||
55 | LUAI_FUNC void luaF_close (lua_State *L, StkId level); | ||
56 | LUAI_FUNC void luaF_freeproto (lua_State *L, Proto *f); | ||
57 | LUAI_FUNC const char *luaF_getlocalname (const Proto *func, int local_number, | ||
58 | int pc); | ||
59 | |||
60 | |||
61 | #endif | ||