diff options
Diffstat (limited to 'lstate.c')
| -rw-r--r-- | lstate.c | 30 |
1 files changed, 3 insertions, 27 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lstate.c,v 1.27 2000/06/12 13:52:05 roberto Exp roberto $ | 2 | ** $Id: lstate.c,v 1.28 2000/06/30 14:35:17 roberto Exp roberto $ |
| 3 | ** Global State | 3 | ** Global State |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -27,7 +27,7 @@ | |||
| 27 | lua_State *lua_state = NULL; | 27 | lua_State *lua_state = NULL; |
| 28 | 28 | ||
| 29 | 29 | ||
| 30 | static lua_State *newstate_aux (int stacksize, int put_builtin) { | 30 | lua_State *lua_newstate (int stacksize, int put_builtin) { |
| 31 | lua_State *L = luaM_new(NULL, lua_State); | 31 | lua_State *L = luaM_new(NULL, lua_State); |
| 32 | L->errorJmp = NULL; | 32 | L->errorJmp = NULL; |
| 33 | L->Mbuffer = NULL; | 33 | L->Mbuffer = NULL; |
| @@ -50,6 +50,7 @@ static lua_State *newstate_aux (int stacksize, int put_builtin) { | |||
| 50 | L->linehook = NULL; | 50 | L->linehook = NULL; |
| 51 | L->allowhooks = 1; | 51 | L->allowhooks = 1; |
| 52 | L->gt = luaH_new(L, 10); | 52 | L->gt = luaH_new(L, 10); |
| 53 | if (stacksize == 0) stacksize = DEFAULT_STACK_SIZE; | ||
| 53 | luaD_init(L, stacksize); | 54 | luaD_init(L, stacksize); |
| 54 | luaS_init(L); | 55 | luaS_init(L); |
| 55 | luaX_init(L); | 56 | luaX_init(L); |
| @@ -61,31 +62,6 @@ static lua_State *newstate_aux (int stacksize, int put_builtin) { | |||
| 61 | } | 62 | } |
| 62 | 63 | ||
| 63 | 64 | ||
| 64 | lua_State *lua_newstate (const char *s, ...) { | ||
| 65 | static const char *const ops[] = {"stack", "builtin", NULL}; | ||
| 66 | va_list ap; | ||
| 67 | int stacksize = DEFAULT_STACK_SIZE; | ||
| 68 | int put_builtin = 1; | ||
| 69 | va_start(ap, s); | ||
| 70 | while (s) { | ||
| 71 | switch (luaL_findstring(s, ops)) { | ||
| 72 | case 0: /* stack */ | ||
| 73 | stacksize = va_arg(ap, int); | ||
| 74 | break; | ||
| 75 | case 1: /* builtin */ | ||
| 76 | put_builtin = va_arg(ap, int); | ||
| 77 | break; | ||
| 78 | default: /* invalid argument */ | ||
| 79 | va_end(ap); | ||
| 80 | return NULL; | ||
| 81 | } | ||
| 82 | s = va_arg(ap, const char *); | ||
| 83 | } | ||
| 84 | va_end(ap); | ||
| 85 | return newstate_aux(stacksize, put_builtin); | ||
| 86 | } | ||
| 87 | |||
| 88 | |||
| 89 | void lua_close (lua_State *L) { | 65 | void lua_close (lua_State *L) { |
| 90 | luaC_collect(L, 1); /* collect all elements */ | 66 | luaC_collect(L, 1); /* collect all elements */ |
| 91 | LUA_ASSERT(L->rootproto == NULL, "list should be empty"); | 67 | LUA_ASSERT(L->rootproto == NULL, "list should be empty"); |
