6d10698cda508a0362671e212e71851e7364cf86
[olsrd.git] / lib / tas / src / lua / ldo.h
1
2 /*
3 ** $Id: ldo.h,v 1.56 2002/12/04 17:29:32 roberto Exp $
4 ** Stack and Call structure of Lua
5 ** See Copyright Notice in lua.h
6 */
7
8 #ifndef ldo_h
9 #define ldo_h
10
11
12 #include "lobject.h"
13 #include "lstate.h"
14 #include "lzio.h"
15
16 #include "defs.h"               /* ARM_NOWARN_ALIGN */
17
18 /*
19 ** macro to control inclusion of some hard tests on stack reallocation
20 */
21 #ifndef HARDSTACKTESTS
22 #define condhardstacktests(x)   { /* empty */ }
23 #else
24 #define condhardstacktests(x)   x
25 #endif
26
27
28 #define luaD_checkstack(L,n)    \
29   if ((char *)L->stack_last - (char *)L->top <= (n)*(int)sizeof(TObject)) \
30     luaD_growstack(L, n); \
31   else condhardstacktests(luaD_reallocstack(L, L->stacksize));
32
33
34 #define incr_top(L) {luaD_checkstack(L,1); L->top++;}
35
36 #define savestack(L,p)          ((char *)(p) - (char *)L->stack)
37 #define restorestack(L,n)       ((TObject *)ARM_NOWARN_ALIGN((char *)L->stack + (n)))
38
39 #define saveci(L,p)             ((char *)(p) - (char *)L->base_ci)
40 #define restoreci(L,n)          ((CallInfo *)ARM_NOWARN_ALIGN((char *)L->base_ci + (n)))
41
42
43 /* type of protected functions, to be ran by `runprotected' */
44 typedef void (*Pfunc) (lua_State * L, void *ud);
45
46 void luaD_resetprotection(lua_State * L);
47 int luaD_protectedparser(lua_State * L, ZIO * z, int bin);
48 void luaD_callhook(lua_State * L, int event, int line);
49 StkId luaD_precall(lua_State * L, StkId func);
50 void luaD_call(lua_State * L, StkId func, int nResults);
51 int luaD_pcall(lua_State * L, Pfunc func, void *u, ptrdiff_t oldtop, ptrdiff_t ef);
52 void luaD_poscall(lua_State * L, int wanted, StkId firstResult);
53 void luaD_reallocCI(lua_State * L, int newsize);
54 void luaD_reallocstack(lua_State * L, int newsize);
55 void luaD_growstack(lua_State * L, int n);
56
57 void luaD_throw(lua_State * L, int errcode) __attribute__ ((noreturn));
58 int luaD_rawrunprotected(lua_State * L, Pfunc f, void *ud);
59
60
61 #endif