#ifndef lfunc_h
#define lfunc_h
#include "lobject.h"
#define sizeCclosure(n) (cast(int, sizeof(CClosure)) + \
cast(
int
,
sizeof
(TValue)*((n)-1)))
#define sizeLclosure(n) (cast(int, sizeof(LClosure)) + \
cast(
int
,
sizeof
(TValue *)*((n)-1)))
#define isintwups(L) (L->twups != L)
#define MAXUPVAL 255
struct
UpVal {
TValue *v;
lu_mem refcount;
union
{
struct
{
UpVal *next;
int
touched;
} open;
TValue value;
} u;
};
#define upisopen(up) ((up)->v != &(up)->u.value)
LUAI_FUNC Proto *luaF_newproto (lua_State *L);
LUAI_FUNC CClosure *luaF_newCclosure (lua_State *L,
int
nelems);
LUAI_FUNC LClosure *luaF_newLclosure (lua_State *L,
int
nelems);
LUAI_FUNC
void
luaF_initupvals (lua_State *L, LClosure *cl);
LUAI_FUNC UpVal *luaF_findupval (lua_State *L, StkId level);
LUAI_FUNC
void
luaF_close (lua_State *L, StkId level);
LUAI_FUNC
void
luaF_freeproto (lua_State *L, Proto *f);
LUAI_FUNC
const
char
*luaF_getlocalname (
const
Proto *func,
int
local_number,
int
pc);
#endif