From 1d91a8fc78d6bc1fddc3f20a17818dcf94d86c48 Mon Sep 17 00:00:00 2001 From: Arnold <397136899@qq.com> Date: Fri, 8 Nov 2019 10:37:17 +0800 Subject: [PATCH 1/3] remove lua/lua & update luajit --- lua/lua/Android.mk | 49 - lua/lua/CMakeLists.txt | 63 - lua/lua/lapi.c | 1087 ------------- lua/lua/lapi.h | 16 - lua/lua/lauxlib.c | 652 -------- lua/lua/lauxlib.h | 174 --- lua/lua/lbaselib.c | 653 -------- lua/lua/lcode.c | 839 ----------- lua/lua/lcode.h | 76 - lua/lua/ldblib.c | 397 ----- lua/lua/ldebug.c | 638 -------- lua/lua/ldebug.h | 33 - lua/lua/ldo.c | 518 ------- lua/lua/ldo.h | 57 - lua/lua/ldump.c | 164 -- lua/lua/lfunc.c | 174 --- lua/lua/lfunc.h | 34 - lua/lua/lgc.c | 711 --------- lua/lua/lgc.h | 110 -- lua/lua/linit.c | 38 - lua/lua/liolib.c | 553 ------- lua/lua/llex.c | 461 ------ lua/lua/llex.h | 81 - lua/lua/llimits.h | 128 -- lua/lua/lmathlib.c | 263 ---- lua/lua/lmem.c | 86 -- lua/lua/lmem.h | 49 - lua/lua/loadlib.c | 666 -------- lua/lua/lobject.c | 214 --- lua/lua/lobject.h | 381 ----- lua/lua/lopcodes.c | 102 -- lua/lua/lopcodes.h | 268 ---- lua/lua/loslib.c | 243 --- lua/lua/lparser.c | 1339 ----------------- lua/lua/lparser.h | 82 - lua/lua/lstate.c | 214 --- lua/lua/lstate.h | 169 --- lua/lua/lstring.c | 111 -- lua/lua/lstring.h | 31 - lua/lua/lstrlib.c | 869 ----------- lua/lua/ltable.c | 588 -------- lua/lua/ltable.h | 40 - lua/lua/ltablib.c | 287 ---- lua/lua/ltm.c | 75 - lua/lua/ltm.h | 54 - lua/lua/lua.c | 392 ----- lua/lua/lua.h | 388 ----- lua/lua/luaconf.h | 763 ---------- lua/lua/lualib.h | 53 - lua/lua/lundump.c | 227 --- lua/lua/lundump.h | 36 - lua/lua/lvm.c | 763 ---------- lua/lua/lvm.h | 36 - lua/lua/lzio.c | 82 - lua/lua/lzio.h | 67 - lua/lua/prebuilt/ios/liblua.a | Bin 668352 -> 0 bytes lua/lua/print.c | 227 --- lua/luajit/include/luaconf.h | 2 +- .../prebuilt/android/arm64-v8a/libluajit.a | Bin 1164986 -> 1134386 bytes .../prebuilt/android/armeabi-v7a/libluajit.a | Bin 610334 -> 588590 bytes lua/luajit/prebuilt/android/x86/libluajit.a | Bin 899436 -> 920672 bytes lua/luajit/prebuilt/ios/libluajit.a | Bin 1860440 -> 2697984 bytes lua/luajit/prebuilt/linux/64-bit/libluajit.a | Bin 884082 -> 940202 bytes lua/luajit/prebuilt/mac/libluajit.a | Bin 3976600 -> 755856 bytes lua/luajit/prebuilt/win32/lua51.dll | Bin 391168 -> 391680 bytes lua/luajit/prebuilt/win32/lua51.lib | Bin 62002 -> 62002 bytes 66 files changed, 1 insertion(+), 16872 deletions(-) delete mode 100644 lua/lua/Android.mk delete mode 100644 lua/lua/CMakeLists.txt delete mode 100644 lua/lua/lapi.c delete mode 100644 lua/lua/lapi.h delete mode 100644 lua/lua/lauxlib.c delete mode 100644 lua/lua/lauxlib.h delete mode 100644 lua/lua/lbaselib.c delete mode 100644 lua/lua/lcode.c delete mode 100644 lua/lua/lcode.h delete mode 100644 lua/lua/ldblib.c delete mode 100644 lua/lua/ldebug.c delete mode 100644 lua/lua/ldebug.h delete mode 100644 lua/lua/ldo.c delete mode 100644 lua/lua/ldo.h delete mode 100644 lua/lua/ldump.c delete mode 100644 lua/lua/lfunc.c delete mode 100644 lua/lua/lfunc.h delete mode 100644 lua/lua/lgc.c delete mode 100644 lua/lua/lgc.h delete mode 100644 lua/lua/linit.c delete mode 100644 lua/lua/liolib.c delete mode 100644 lua/lua/llex.c delete mode 100644 lua/lua/llex.h delete mode 100644 lua/lua/llimits.h delete mode 100644 lua/lua/lmathlib.c delete mode 100644 lua/lua/lmem.c delete mode 100644 lua/lua/lmem.h delete mode 100644 lua/lua/loadlib.c delete mode 100644 lua/lua/lobject.c delete mode 100644 lua/lua/lobject.h delete mode 100644 lua/lua/lopcodes.c delete mode 100644 lua/lua/lopcodes.h delete mode 100644 lua/lua/loslib.c delete mode 100644 lua/lua/lparser.c delete mode 100644 lua/lua/lparser.h delete mode 100644 lua/lua/lstate.c delete mode 100644 lua/lua/lstate.h delete mode 100644 lua/lua/lstring.c delete mode 100644 lua/lua/lstring.h delete mode 100644 lua/lua/lstrlib.c delete mode 100644 lua/lua/ltable.c delete mode 100644 lua/lua/ltable.h delete mode 100644 lua/lua/ltablib.c delete mode 100644 lua/lua/ltm.c delete mode 100644 lua/lua/ltm.h delete mode 100644 lua/lua/lua.c delete mode 100644 lua/lua/lua.h delete mode 100644 lua/lua/luaconf.h delete mode 100644 lua/lua/lualib.h delete mode 100644 lua/lua/lundump.c delete mode 100644 lua/lua/lundump.h delete mode 100644 lua/lua/lvm.c delete mode 100644 lua/lua/lvm.h delete mode 100644 lua/lua/lzio.c delete mode 100644 lua/lua/lzio.h delete mode 100755 lua/lua/prebuilt/ios/liblua.a delete mode 100644 lua/lua/print.c diff --git a/lua/lua/Android.mk b/lua/lua/Android.mk deleted file mode 100644 index 51c4df129c..0000000000 --- a/lua/lua/Android.mk +++ /dev/null @@ -1,49 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_MODULE := lua_static - -LOCAL_MODULE_FILENAME := liblua - -LOCAL_ARM_MODE := arm - -LOCAL_SRC_FILES := \ -lapi.c \ -lauxlib.c \ -lbaselib.c \ -lcode.c \ -ldblib.c \ -ldebug.c \ -ldo.c \ -ldump.c \ -lfunc.c \ -lgc.c \ -linit.c \ -liolib.c \ -llex.c \ -lmathlib.c \ -lmem.c \ -loadlib.c \ -lobject.c \ -lopcodes.c \ -loslib.c \ -lparser.c \ -lstate.c \ -lstring.c \ -lstrlib.c \ -ltable.c \ -ltablib.c \ -ltm.c \ -lua.c \ -lundump.c \ -lvm.c \ -lzio.c \ -print.c - - -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) - -LOCAL_C_INCLUDES := $(LOCAL_PATH) - -include $(BUILD_STATIC_LIBRARY) diff --git a/lua/lua/CMakeLists.txt b/lua/lua/CMakeLists.txt deleted file mode 100644 index 79703aebaa..0000000000 --- a/lua/lua/CMakeLists.txt +++ /dev/null @@ -1,63 +0,0 @@ -cmake_minimum_required(VERSION 3.6) - -set(lib_name lua) -set(target_name ext_${lib_name}) - -project(${lib_name}) - -if(IOS) - include(../../cmake/CocosExternalConfig.cmake) - - add_library(${target_name} STATIC IMPORTED GLOBAL) - - set_target_properties(${target_name} PROPERTIES - IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/prebuilt/ios/lib${lib_name}.a" - ) -else() - set(${target_name}_src - lapi.c - lauxlib.c - lbaselib.c - lcode.c - ldblib.c - ldebug.c - ldo.c - ldump.c - lfunc.c - lgc.c - linit.c - liolib.c - llex.c - lmathlib.c - lmem.c - loadlib.c - lobject.c - lopcodes.c - loslib.c - lparser.c - lstate.c - lstring.c - lstrlib.c - ltable.c - ltablib.c - ltm.c - lundump.c - lvm.c - lzio.c - print.c - ) - - add_library(${target_name} STATIC - ${${target_name}_src} - ) - - target_include_directories(${target_name} INTERFACE .) - - set_target_properties(${target_name} - PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" - FOLDER "External" - ) - -endif() \ No newline at end of file diff --git a/lua/lua/lapi.c b/lua/lua/lapi.c deleted file mode 100644 index 5d5145d2eb..0000000000 --- a/lua/lua/lapi.c +++ /dev/null @@ -1,1087 +0,0 @@ -/* -** $Id: lapi.c,v 2.55.1.5 2008/07/04 18:41:18 roberto Exp $ -** Lua API -** See Copyright Notice in lua.h -*/ - - -#include -#include -#include -#include - -#define lapi_c -#define LUA_CORE - -#include "lua.h" - -#include "lapi.h" -#include "ldebug.h" -#include "ldo.h" -#include "lfunc.h" -#include "lgc.h" -#include "lmem.h" -#include "lobject.h" -#include "lstate.h" -#include "lstring.h" -#include "ltable.h" -#include "ltm.h" -#include "lundump.h" -#include "lvm.h" - - - -const char lua_ident[] = - "$Lua: " LUA_RELEASE " " LUA_COPYRIGHT " $\n" - "$Authors: " LUA_AUTHORS " $\n" - "$URL: www.lua.org $\n"; - - - -#define api_checknelems(L, n) api_check(L, (n) <= (L->top - L->base)) - -#define api_checkvalidindex(L, i) api_check(L, (i) != luaO_nilobject) - -#define api_incr_top(L) {api_check(L, L->top < L->ci->top); L->top++;} - - - -static TValue *index2adr (lua_State *L, int idx) { - if (idx > 0) { - TValue *o = L->base + (idx - 1); - api_check(L, idx <= L->ci->top - L->base); - if (o >= L->top) return cast(TValue *, luaO_nilobject); - else return o; - } - else if (idx > LUA_REGISTRYINDEX) { - api_check(L, idx != 0 && -idx <= L->top - L->base); - return L->top + idx; - } - else switch (idx) { /* pseudo-indices */ - case LUA_REGISTRYINDEX: return registry(L); - case LUA_ENVIRONINDEX: { - Closure *func = curr_func(L); - sethvalue(L, &L->env, func->c.env); - return &L->env; - } - case LUA_GLOBALSINDEX: return gt(L); - default: { - Closure *func = curr_func(L); - idx = LUA_GLOBALSINDEX - idx; - return (idx <= func->c.nupvalues) - ? &func->c.upvalue[idx-1] - : cast(TValue *, luaO_nilobject); - } - } -} - - -static Table *getcurrenv (lua_State *L) { - if (L->ci == L->base_ci) /* no enclosing function? */ - return hvalue(gt(L)); /* use global table as environment */ - else { - Closure *func = curr_func(L); - return func->c.env; - } -} - - -void luaA_pushobject (lua_State *L, const TValue *o) { - setobj2s(L, L->top, o); - api_incr_top(L); -} - - -LUA_API int lua_checkstack (lua_State *L, int size) { - int res = 1; - lua_lock(L); - if (size > LUAI_MAXCSTACK || (L->top - L->base + size) > LUAI_MAXCSTACK) - res = 0; /* stack overflow */ - else if (size > 0) { - luaD_checkstack(L, size); - if (L->ci->top < L->top + size) - L->ci->top = L->top + size; - } - lua_unlock(L); - return res; -} - - -LUA_API void lua_xmove (lua_State *from, lua_State *to, int n) { - int i; - if (from == to) return; - lua_lock(to); - api_checknelems(from, n); - api_check(from, G(from) == G(to)); - api_check(from, to->ci->top - to->top >= n); - from->top -= n; - for (i = 0; i < n; i++) { - setobj2s(to, to->top++, from->top + i); - } - lua_unlock(to); -} - - -LUA_API void lua_setlevel (lua_State *from, lua_State *to) { - to->nCcalls = from->nCcalls; -} - - -LUA_API lua_CFunction lua_atpanic (lua_State *L, lua_CFunction panicf) { - lua_CFunction old; - lua_lock(L); - old = G(L)->panic; - G(L)->panic = panicf; - lua_unlock(L); - return old; -} - - -LUA_API lua_State *lua_newthread (lua_State *L) { - lua_State *L1; - lua_lock(L); - luaC_checkGC(L); - L1 = luaE_newthread(L); - setthvalue(L, L->top, L1); - api_incr_top(L); - lua_unlock(L); - luai_userstatethread(L, L1); - return L1; -} - - - -/* -** basic stack manipulation -*/ - - -LUA_API int lua_gettop (lua_State *L) { - return cast_int(L->top - L->base); -} - - -LUA_API void lua_settop (lua_State *L, int idx) { - lua_lock(L); - if (idx >= 0) { - api_check(L, idx <= L->stack_last - L->base); - while (L->top < L->base + idx) - setnilvalue(L->top++); - L->top = L->base + idx; - } - else { - api_check(L, -(idx+1) <= (L->top - L->base)); - L->top += idx+1; /* `subtract' index (index is negative) */ - } - lua_unlock(L); -} - - -LUA_API void lua_remove (lua_State *L, int idx) { - StkId p; - lua_lock(L); - p = index2adr(L, idx); - api_checkvalidindex(L, p); - while (++p < L->top) setobjs2s(L, p-1, p); - L->top--; - lua_unlock(L); -} - - -LUA_API void lua_insert (lua_State *L, int idx) { - StkId p; - StkId q; - lua_lock(L); - p = index2adr(L, idx); - api_checkvalidindex(L, p); - for (q = L->top; q>p; q--) setobjs2s(L, q, q-1); - setobjs2s(L, p, L->top); - lua_unlock(L); -} - - -LUA_API void lua_replace (lua_State *L, int idx) { - StkId o; - lua_lock(L); - /* explicit test for incompatible code */ - if (idx == LUA_ENVIRONINDEX && L->ci == L->base_ci) - luaG_runerror(L, "no calling environment"); - api_checknelems(L, 1); - o = index2adr(L, idx); - api_checkvalidindex(L, o); - if (idx == LUA_ENVIRONINDEX) { - Closure *func = curr_func(L); - api_check(L, ttistable(L->top - 1)); - func->c.env = hvalue(L->top - 1); - luaC_barrier(L, func, L->top - 1); - } - else { - setobj(L, o, L->top - 1); - if (idx < LUA_GLOBALSINDEX) /* function upvalue? */ - luaC_barrier(L, curr_func(L), L->top - 1); - } - L->top--; - lua_unlock(L); -} - - -LUA_API void lua_pushvalue (lua_State *L, int idx) { - lua_lock(L); - setobj2s(L, L->top, index2adr(L, idx)); - api_incr_top(L); - lua_unlock(L); -} - - - -/* -** access functions (stack -> C) -*/ - - -LUA_API int lua_type (lua_State *L, int idx) { - StkId o = index2adr(L, idx); - return (o == luaO_nilobject) ? LUA_TNONE : ttype(o); -} - - -LUA_API const char *lua_typename (lua_State *L, int t) { - UNUSED(L); - return (t == LUA_TNONE) ? "no value" : luaT_typenames[t]; -} - - -LUA_API int lua_iscfunction (lua_State *L, int idx) { - StkId o = index2adr(L, idx); - return iscfunction(o); -} - - -LUA_API int lua_isnumber (lua_State *L, int idx) { - TValue n; - const TValue *o = index2adr(L, idx); - return tonumber(o, &n); -} - - -LUA_API int lua_isstring (lua_State *L, int idx) { - int t = lua_type(L, idx); - return (t == LUA_TSTRING || t == LUA_TNUMBER); -} - - -LUA_API int lua_isuserdata (lua_State *L, int idx) { - const TValue *o = index2adr(L, idx); - return (ttisuserdata(o) || ttislightuserdata(o)); -} - - -LUA_API int lua_rawequal (lua_State *L, int index1, int index2) { - StkId o1 = index2adr(L, index1); - StkId o2 = index2adr(L, index2); - return (o1 == luaO_nilobject || o2 == luaO_nilobject) ? 0 - : luaO_rawequalObj(o1, o2); -} - - -LUA_API int lua_equal (lua_State *L, int index1, int index2) { - StkId o1, o2; - int i; - lua_lock(L); /* may call tag method */ - o1 = index2adr(L, index1); - o2 = index2adr(L, index2); - i = (o1 == luaO_nilobject || o2 == luaO_nilobject) ? 0 : equalobj(L, o1, o2); - lua_unlock(L); - return i; -} - - -LUA_API int lua_lessthan (lua_State *L, int index1, int index2) { - StkId o1, o2; - int i; - lua_lock(L); /* may call tag method */ - o1 = index2adr(L, index1); - o2 = index2adr(L, index2); - i = (o1 == luaO_nilobject || o2 == luaO_nilobject) ? 0 - : luaV_lessthan(L, o1, o2); - lua_unlock(L); - return i; -} - - - -LUA_API lua_Number lua_tonumber (lua_State *L, int idx) { - TValue n; - const TValue *o = index2adr(L, idx); - if (tonumber(o, &n)) - return nvalue(o); - else - return 0; -} - - -LUA_API lua_Integer lua_tointeger (lua_State *L, int idx) { - TValue n; - const TValue *o = index2adr(L, idx); - if (tonumber(o, &n)) { - lua_Integer res; - lua_Number num = nvalue(o); - lua_number2integer(res, num); - return res; - } - else - return 0; -} - - -LUA_API int lua_toboolean (lua_State *L, int idx) { - const TValue *o = index2adr(L, idx); - return !l_isfalse(o); -} - - -LUA_API const char *lua_tolstring (lua_State *L, int idx, size_t *len) { - StkId o = index2adr(L, idx); - if (!ttisstring(o)) { - lua_lock(L); /* `luaV_tostring' may create a new string */ - if (!luaV_tostring(L, o)) { /* conversion failed? */ - if (len != NULL) *len = 0; - lua_unlock(L); - return NULL; - } - luaC_checkGC(L); - o = index2adr(L, idx); /* previous call may reallocate the stack */ - lua_unlock(L); - } - if (len != NULL) *len = tsvalue(o)->len; - return svalue(o); -} - - -LUA_API size_t lua_objlen (lua_State *L, int idx) { - StkId o = index2adr(L, idx); - switch (ttype(o)) { - case LUA_TSTRING: return tsvalue(o)->len; - case LUA_TUSERDATA: return uvalue(o)->len; - case LUA_TTABLE: return luaH_getn(hvalue(o)); - case LUA_TNUMBER: { - size_t l; - lua_lock(L); /* `luaV_tostring' may create a new string */ - l = (luaV_tostring(L, o) ? tsvalue(o)->len : 0); - lua_unlock(L); - return l; - } - default: return 0; - } -} - - -LUA_API lua_CFunction lua_tocfunction (lua_State *L, int idx) { - StkId o = index2adr(L, idx); - return (!iscfunction(o)) ? NULL : clvalue(o)->c.f; -} - - -LUA_API void *lua_touserdata (lua_State *L, int idx) { - StkId o = index2adr(L, idx); - switch (ttype(o)) { - case LUA_TUSERDATA: return (rawuvalue(o) + 1); - case LUA_TLIGHTUSERDATA: return pvalue(o); - default: return NULL; - } -} - - -LUA_API lua_State *lua_tothread (lua_State *L, int idx) { - StkId o = index2adr(L, idx); - return (!ttisthread(o)) ? NULL : thvalue(o); -} - - -LUA_API const void *lua_topointer (lua_State *L, int idx) { - StkId o = index2adr(L, idx); - switch (ttype(o)) { - case LUA_TTABLE: return hvalue(o); - case LUA_TFUNCTION: return clvalue(o); - case LUA_TTHREAD: return thvalue(o); - case LUA_TUSERDATA: - case LUA_TLIGHTUSERDATA: - return lua_touserdata(L, idx); - default: return NULL; - } -} - - - -/* -** push functions (C -> stack) -*/ - - -LUA_API void lua_pushnil (lua_State *L) { - lua_lock(L); - setnilvalue(L->top); - api_incr_top(L); - lua_unlock(L); -} - - -LUA_API void lua_pushnumber (lua_State *L, lua_Number n) { - lua_lock(L); - setnvalue(L->top, n); - api_incr_top(L); - lua_unlock(L); -} - - -LUA_API void lua_pushinteger (lua_State *L, lua_Integer n) { - lua_lock(L); - setnvalue(L->top, cast_num(n)); - api_incr_top(L); - lua_unlock(L); -} - - -LUA_API void lua_pushlstring (lua_State *L, const char *s, size_t len) { - lua_lock(L); - luaC_checkGC(L); - setsvalue2s(L, L->top, luaS_newlstr(L, s, len)); - api_incr_top(L); - lua_unlock(L); -} - - -LUA_API void lua_pushstring (lua_State *L, const char *s) { - if (s == NULL) - lua_pushnil(L); - else - lua_pushlstring(L, s, strlen(s)); -} - - -LUA_API const char *lua_pushvfstring (lua_State *L, const char *fmt, - va_list argp) { - const char *ret; - lua_lock(L); - luaC_checkGC(L); - ret = luaO_pushvfstring(L, fmt, argp); - lua_unlock(L); - return ret; -} - - -LUA_API const char *lua_pushfstring (lua_State *L, const char *fmt, ...) { - const char *ret; - va_list argp; - lua_lock(L); - luaC_checkGC(L); - va_start(argp, fmt); - ret = luaO_pushvfstring(L, fmt, argp); - va_end(argp); - lua_unlock(L); - return ret; -} - - -LUA_API void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n) { - Closure *cl; - lua_lock(L); - luaC_checkGC(L); - api_checknelems(L, n); - cl = luaF_newCclosure(L, n, getcurrenv(L)); - cl->c.f = fn; - L->top -= n; - while (n--) - setobj2n(L, &cl->c.upvalue[n], L->top+n); - setclvalue(L, L->top, cl); - lua_assert(iswhite(obj2gco(cl))); - api_incr_top(L); - lua_unlock(L); -} - - -LUA_API void lua_pushboolean (lua_State *L, int b) { - lua_lock(L); - setbvalue(L->top, (b != 0)); /* ensure that true is 1 */ - api_incr_top(L); - lua_unlock(L); -} - - -LUA_API void lua_pushlightuserdata (lua_State *L, void *p) { - lua_lock(L); - setpvalue(L->top, p); - api_incr_top(L); - lua_unlock(L); -} - - -LUA_API int lua_pushthread (lua_State *L) { - lua_lock(L); - setthvalue(L, L->top, L); - api_incr_top(L); - lua_unlock(L); - return (G(L)->mainthread == L); -} - - - -/* -** get functions (Lua -> stack) -*/ - - -LUA_API void lua_gettable (lua_State *L, int idx) { - StkId t; - lua_lock(L); - t = index2adr(L, idx); - api_checkvalidindex(L, t); - luaV_gettable(L, t, L->top - 1, L->top - 1); - lua_unlock(L); -} - - -LUA_API void lua_getfield (lua_State *L, int idx, const char *k) { - StkId t; - TValue key; - lua_lock(L); - t = index2adr(L, idx); - api_checkvalidindex(L, t); - setsvalue(L, &key, luaS_new(L, k)); - luaV_gettable(L, t, &key, L->top); - api_incr_top(L); - lua_unlock(L); -} - - -LUA_API void lua_rawget (lua_State *L, int idx) { - StkId t; - lua_lock(L); - t = index2adr(L, idx); - api_check(L, ttistable(t)); - setobj2s(L, L->top - 1, luaH_get(hvalue(t), L->top - 1)); - lua_unlock(L); -} - - -LUA_API void lua_rawgeti (lua_State *L, int idx, int n) { - StkId o; - lua_lock(L); - o = index2adr(L, idx); - api_check(L, ttistable(o)); - setobj2s(L, L->top, luaH_getnum(hvalue(o), n)); - api_incr_top(L); - lua_unlock(L); -} - - -LUA_API void lua_createtable (lua_State *L, int narray, int nrec) { - lua_lock(L); - luaC_checkGC(L); - sethvalue(L, L->top, luaH_new(L, narray, nrec)); - api_incr_top(L); - lua_unlock(L); -} - - -LUA_API int lua_getmetatable (lua_State *L, int objindex) { - const TValue *obj; - Table *mt = NULL; - int res; - lua_lock(L); - obj = index2adr(L, objindex); - switch (ttype(obj)) { - case LUA_TTABLE: - mt = hvalue(obj)->metatable; - break; - case LUA_TUSERDATA: - mt = uvalue(obj)->metatable; - break; - default: - mt = G(L)->mt[ttype(obj)]; - break; - } - if (mt == NULL) - res = 0; - else { - sethvalue(L, L->top, mt); - api_incr_top(L); - res = 1; - } - lua_unlock(L); - return res; -} - - -LUA_API void lua_getfenv (lua_State *L, int idx) { - StkId o; - lua_lock(L); - o = index2adr(L, idx); - api_checkvalidindex(L, o); - switch (ttype(o)) { - case LUA_TFUNCTION: - sethvalue(L, L->top, clvalue(o)->c.env); - break; - case LUA_TUSERDATA: - sethvalue(L, L->top, uvalue(o)->env); - break; - case LUA_TTHREAD: - setobj2s(L, L->top, gt(thvalue(o))); - break; - default: - setnilvalue(L->top); - break; - } - api_incr_top(L); - lua_unlock(L); -} - - -/* -** set functions (stack -> Lua) -*/ - - -LUA_API void lua_settable (lua_State *L, int idx) { - StkId t; - lua_lock(L); - api_checknelems(L, 2); - t = index2adr(L, idx); - api_checkvalidindex(L, t); - luaV_settable(L, t, L->top - 2, L->top - 1); - L->top -= 2; /* pop index and value */ - lua_unlock(L); -} - - -LUA_API void lua_setfield (lua_State *L, int idx, const char *k) { - StkId t; - TValue key; - lua_lock(L); - api_checknelems(L, 1); - t = index2adr(L, idx); - api_checkvalidindex(L, t); - setsvalue(L, &key, luaS_new(L, k)); - luaV_settable(L, t, &key, L->top - 1); - L->top--; /* pop value */ - lua_unlock(L); -} - - -LUA_API void lua_rawset (lua_State *L, int idx) { - StkId t; - lua_lock(L); - api_checknelems(L, 2); - t = index2adr(L, idx); - api_check(L, ttistable(t)); - setobj2t(L, luaH_set(L, hvalue(t), L->top-2), L->top-1); - luaC_barriert(L, hvalue(t), L->top-1); - L->top -= 2; - lua_unlock(L); -} - - -LUA_API void lua_rawseti (lua_State *L, int idx, int n) { - StkId o; - lua_lock(L); - api_checknelems(L, 1); - o = index2adr(L, idx); - api_check(L, ttistable(o)); - setobj2t(L, luaH_setnum(L, hvalue(o), n), L->top-1); - luaC_barriert(L, hvalue(o), L->top-1); - L->top--; - lua_unlock(L); -} - - -LUA_API int lua_setmetatable (lua_State *L, int objindex) { - TValue *obj; - Table *mt; - lua_lock(L); - api_checknelems(L, 1); - obj = index2adr(L, objindex); - api_checkvalidindex(L, obj); - if (ttisnil(L->top - 1)) - mt = NULL; - else { - api_check(L, ttistable(L->top - 1)); - mt = hvalue(L->top - 1); - } - switch (ttype(obj)) { - case LUA_TTABLE: { - hvalue(obj)->metatable = mt; - if (mt) - luaC_objbarriert(L, hvalue(obj), mt); - break; - } - case LUA_TUSERDATA: { - uvalue(obj)->metatable = mt; - if (mt) - luaC_objbarrier(L, rawuvalue(obj), mt); - break; - } - default: { - G(L)->mt[ttype(obj)] = mt; - break; - } - } - L->top--; - lua_unlock(L); - return 1; -} - - -LUA_API int lua_setfenv (lua_State *L, int idx) { - StkId o; - int res = 1; - lua_lock(L); - api_checknelems(L, 1); - o = index2adr(L, idx); - api_checkvalidindex(L, o); - api_check(L, ttistable(L->top - 1)); - switch (ttype(o)) { - case LUA_TFUNCTION: - clvalue(o)->c.env = hvalue(L->top - 1); - break; - case LUA_TUSERDATA: - uvalue(o)->env = hvalue(L->top - 1); - break; - case LUA_TTHREAD: - sethvalue(L, gt(thvalue(o)), hvalue(L->top - 1)); - break; - default: - res = 0; - break; - } - if (res) luaC_objbarrier(L, gcvalue(o), hvalue(L->top - 1)); - L->top--; - lua_unlock(L); - return res; -} - - -/* -** `load' and `call' functions (run Lua code) -*/ - - -#define adjustresults(L,nres) \ - { if (nres == LUA_MULTRET && L->top >= L->ci->top) L->ci->top = L->top; } - - -#define checkresults(L,na,nr) \ - api_check(L, (nr) == LUA_MULTRET || (L->ci->top - L->top >= (nr) - (na))) - - -LUA_API void lua_call (lua_State *L, int nargs, int nresults) { - StkId func; - lua_lock(L); - api_checknelems(L, nargs+1); - checkresults(L, nargs, nresults); - func = L->top - (nargs+1); - luaD_call(L, func, nresults); - adjustresults(L, nresults); - lua_unlock(L); -} - - - -/* -** Execute a protected call. -*/ -struct CallS { /* data to `f_call' */ - StkId func; - int nresults; -}; - - -static void f_call (lua_State *L, void *ud) { - struct CallS *c = cast(struct CallS *, ud); - luaD_call(L, c->func, c->nresults); -} - - - -LUA_API int lua_pcall (lua_State *L, int nargs, int nresults, int errfunc) { - struct CallS c; - int status; - ptrdiff_t func; - lua_lock(L); - api_checknelems(L, nargs+1); - checkresults(L, nargs, nresults); - if (errfunc == 0) - func = 0; - else { - StkId o = index2adr(L, errfunc); - api_checkvalidindex(L, o); - func = savestack(L, o); - } - c.func = L->top - (nargs+1); /* function to be called */ - c.nresults = nresults; - status = luaD_pcall(L, f_call, &c, savestack(L, c.func), func); - adjustresults(L, nresults); - lua_unlock(L); - return status; -} - - -/* -** Execute a protected C call. -*/ -struct CCallS { /* data to `f_Ccall' */ - lua_CFunction func; - void *ud; -}; - - -static void f_Ccall (lua_State *L, void *ud) { - struct CCallS *c = cast(struct CCallS *, ud); - Closure *cl; - cl = luaF_newCclosure(L, 0, getcurrenv(L)); - cl->c.f = c->func; - setclvalue(L, L->top, cl); /* push function */ - api_incr_top(L); - setpvalue(L->top, c->ud); /* push only argument */ - api_incr_top(L); - luaD_call(L, L->top - 2, 0); -} - - -LUA_API int lua_cpcall (lua_State *L, lua_CFunction func, void *ud) { - struct CCallS c; - int status; - lua_lock(L); - c.func = func; - c.ud = ud; - status = luaD_pcall(L, f_Ccall, &c, savestack(L, L->top), 0); - lua_unlock(L); - return status; -} - - -LUA_API int lua_load (lua_State *L, lua_Reader reader, void *data, - const char *chunkname) { - ZIO z; - int status; - lua_lock(L); - if (!chunkname) chunkname = "?"; - luaZ_init(L, &z, reader, data); - status = luaD_protectedparser(L, &z, chunkname); - lua_unlock(L); - return status; -} - - -LUA_API int lua_dump (lua_State *L, lua_Writer writer, void *data) { - int status; - TValue *o; - lua_lock(L); - api_checknelems(L, 1); - o = L->top - 1; - if (isLfunction(o)) - status = luaU_dump(L, clvalue(o)->l.p, writer, data, 0); - else - status = 1; - lua_unlock(L); - return status; -} - - -LUA_API int lua_status (lua_State *L) { - return L->status; -} - - -/* -** Garbage-collection function -*/ - -LUA_API int lua_gc (lua_State *L, int what, int data) { - int res = 0; - global_State *g; - lua_lock(L); - g = G(L); - switch (what) { - case LUA_GCSTOP: { - g->GCthreshold = MAX_LUMEM; - break; - } - case LUA_GCRESTART: { - g->GCthreshold = g->totalbytes; - break; - } - case LUA_GCCOLLECT: { - luaC_fullgc(L); - break; - } - case LUA_GCCOUNT: { - /* GC values are expressed in Kbytes: #bytes/2^10 */ - res = cast_int(g->totalbytes >> 10); - break; - } - case LUA_GCCOUNTB: { - res = cast_int(g->totalbytes & 0x3ff); - break; - } - case LUA_GCSTEP: { - lu_mem a = (cast(lu_mem, data) << 10); - if (a <= g->totalbytes) - g->GCthreshold = g->totalbytes - a; - else - g->GCthreshold = 0; - while (g->GCthreshold <= g->totalbytes) { - luaC_step(L); - if (g->gcstate == GCSpause) { /* end of cycle? */ - res = 1; /* signal it */ - break; - } - } - break; - } - case LUA_GCSETPAUSE: { - res = g->gcpause; - g->gcpause = data; - break; - } - case LUA_GCSETSTEPMUL: { - res = g->gcstepmul; - g->gcstepmul = data; - break; - } - default: res = -1; /* invalid option */ - } - lua_unlock(L); - return res; -} - - - -/* -** miscellaneous functions -*/ - - -LUA_API int lua_error (lua_State *L) { - lua_lock(L); - api_checknelems(L, 1); - luaG_errormsg(L); - lua_unlock(L); - return 0; /* to avoid warnings */ -} - - -LUA_API int lua_next (lua_State *L, int idx) { - StkId t; - int more; - lua_lock(L); - t = index2adr(L, idx); - api_check(L, ttistable(t)); - more = luaH_next(L, hvalue(t), L->top - 1); - if (more) { - api_incr_top(L); - } - else /* no more elements */ - L->top -= 1; /* remove key */ - lua_unlock(L); - return more; -} - - -LUA_API void lua_concat (lua_State *L, int n) { - lua_lock(L); - api_checknelems(L, n); - if (n >= 2) { - luaC_checkGC(L); - luaV_concat(L, n, cast_int(L->top - L->base) - 1); - L->top -= (n-1); - } - else if (n == 0) { /* push empty string */ - setsvalue2s(L, L->top, luaS_newlstr(L, "", 0)); - api_incr_top(L); - } - /* else n == 1; nothing to do */ - lua_unlock(L); -} - - -LUA_API lua_Alloc lua_getallocf (lua_State *L, void **ud) { - lua_Alloc f; - lua_lock(L); - if (ud) *ud = G(L)->ud; - f = G(L)->frealloc; - lua_unlock(L); - return f; -} - - -LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud) { - lua_lock(L); - G(L)->ud = ud; - G(L)->frealloc = f; - lua_unlock(L); -} - - -LUA_API void *lua_newuserdata (lua_State *L, size_t size) { - Udata *u; - lua_lock(L); - luaC_checkGC(L); - u = luaS_newudata(L, size, getcurrenv(L)); - setuvalue(L, L->top, u); - api_incr_top(L); - lua_unlock(L); - return u + 1; -} - - - - -static const char *aux_upvalue (StkId fi, int n, TValue **val) { - Closure *f; - if (!ttisfunction(fi)) return NULL; - f = clvalue(fi); - if (f->c.isC) { - if (!(1 <= n && n <= f->c.nupvalues)) return NULL; - *val = &f->c.upvalue[n-1]; - return ""; - } - else { - Proto *p = f->l.p; - if (!(1 <= n && n <= p->sizeupvalues)) return NULL; - *val = f->l.upvals[n-1]->v; - return getstr(p->upvalues[n-1]); - } -} - - -LUA_API const char *lua_getupvalue (lua_State *L, int funcindex, int n) { - const char *name; - TValue *val; - lua_lock(L); - name = aux_upvalue(index2adr(L, funcindex), n, &val); - if (name) { - setobj2s(L, L->top, val); - api_incr_top(L); - } - lua_unlock(L); - return name; -} - - -LUA_API const char *lua_setupvalue (lua_State *L, int funcindex, int n) { - const char *name; - TValue *val; - StkId fi; - lua_lock(L); - fi = index2adr(L, funcindex); - api_checknelems(L, 1); - name = aux_upvalue(fi, n, &val); - if (name) { - L->top--; - setobj(L, val, L->top); - luaC_barrier(L, clvalue(fi), L->top); - } - lua_unlock(L); - return name; -} - diff --git a/lua/lua/lapi.h b/lua/lua/lapi.h deleted file mode 100644 index 2c3fab244e..0000000000 --- a/lua/lua/lapi.h +++ /dev/null @@ -1,16 +0,0 @@ -/* -** $Id: lapi.h,v 2.2.1.1 2007/12/27 13:02:25 roberto Exp $ -** Auxiliary functions from Lua API -** See Copyright Notice in lua.h -*/ - -#ifndef lapi_h -#define lapi_h - - -#include "lobject.h" - - -LUAI_FUNC void luaA_pushobject (lua_State *L, const TValue *o); - -#endif diff --git a/lua/lua/lauxlib.c b/lua/lua/lauxlib.c deleted file mode 100644 index 10f14e2c08..0000000000 --- a/lua/lua/lauxlib.c +++ /dev/null @@ -1,652 +0,0 @@ -/* -** $Id: lauxlib.c,v 1.159.1.3 2008/01/21 13:20:51 roberto Exp $ -** Auxiliary functions for building Lua libraries -** See Copyright Notice in lua.h -*/ - - -#include -#include -#include -#include -#include -#include - - -/* This file uses only the official API of Lua. -** Any function declared here could be written as an application function. -*/ - -#define lauxlib_c -#define LUA_LIB - -#include "lua.h" - -#include "lauxlib.h" - - -#define FREELIST_REF 0 /* free list of references */ - - -/* convert a stack index to positive */ -#define abs_index(L, i) ((i) > 0 || (i) <= LUA_REGISTRYINDEX ? (i) : \ - lua_gettop(L) + (i) + 1) - - -/* -** {====================================================== -** Error-report functions -** ======================================================= -*/ - - -LUALIB_API int luaL_argerror (lua_State *L, int narg, const char *extramsg) { - lua_Debug ar; - if (!lua_getstack(L, 0, &ar)) /* no stack frame? */ - return luaL_error(L, "bad argument #%d (%s)", narg, extramsg); - lua_getinfo(L, "n", &ar); - if (strcmp(ar.namewhat, "method") == 0) { - narg--; /* do not count `self' */ - if (narg == 0) /* error is in the self argument itself? */ - return luaL_error(L, "calling " LUA_QS " on bad self (%s)", - ar.name, extramsg); - } - if (ar.name == NULL) - ar.name = "?"; - return luaL_error(L, "bad argument #%d to " LUA_QS " (%s)", - narg, ar.name, extramsg); -} - - -LUALIB_API int luaL_typerror (lua_State *L, int narg, const char *tname) { - const char *msg = lua_pushfstring(L, "%s expected, got %s", - tname, luaL_typename(L, narg)); - return luaL_argerror(L, narg, msg); -} - - -static void tag_error (lua_State *L, int narg, int tag) { - luaL_typerror(L, narg, lua_typename(L, tag)); -} - - -LUALIB_API void luaL_where (lua_State *L, int level) { - lua_Debug ar; - if (lua_getstack(L, level, &ar)) { /* check function at level */ - lua_getinfo(L, "Sl", &ar); /* get info about it */ - if (ar.currentline > 0) { /* is there info? */ - lua_pushfstring(L, "%s:%d: ", ar.short_src, ar.currentline); - return; - } - } - lua_pushliteral(L, ""); /* else, no information available... */ -} - - -LUALIB_API int luaL_error (lua_State *L, const char *fmt, ...) { - va_list argp; - va_start(argp, fmt); - luaL_where(L, 1); - lua_pushvfstring(L, fmt, argp); - va_end(argp); - lua_concat(L, 2); - return lua_error(L); -} - -/* }====================================================== */ - - -LUALIB_API int luaL_checkoption (lua_State *L, int narg, const char *def, - const char *const lst[]) { - const char *name = (def) ? luaL_optstring(L, narg, def) : - luaL_checkstring(L, narg); - int i; - for (i=0; lst[i]; i++) - if (strcmp(lst[i], name) == 0) - return i; - return luaL_argerror(L, narg, - lua_pushfstring(L, "invalid option " LUA_QS, name)); -} - - -LUALIB_API int luaL_newmetatable (lua_State *L, const char *tname) { - lua_getfield(L, LUA_REGISTRYINDEX, tname); /* get registry.name */ - if (!lua_isnil(L, -1)) /* name already in use? */ - return 0; /* leave previous value on top, but return 0 */ - lua_pop(L, 1); - lua_newtable(L); /* create metatable */ - lua_pushvalue(L, -1); - lua_setfield(L, LUA_REGISTRYINDEX, tname); /* registry.name = metatable */ - return 1; -} - - -LUALIB_API void *luaL_checkudata (lua_State *L, int ud, const char *tname) { - void *p = lua_touserdata(L, ud); - if (p != NULL) { /* value is a userdata? */ - if (lua_getmetatable(L, ud)) { /* does it have a metatable? */ - lua_getfield(L, LUA_REGISTRYINDEX, tname); /* get correct metatable */ - if (lua_rawequal(L, -1, -2)) { /* does it have the correct mt? */ - lua_pop(L, 2); /* remove both metatables */ - return p; - } - } - } - luaL_typerror(L, ud, tname); /* else error */ - return NULL; /* to avoid warnings */ -} - - -LUALIB_API void luaL_checkstack (lua_State *L, int space, const char *mes) { - if (!lua_checkstack(L, space)) - luaL_error(L, "stack overflow (%s)", mes); -} - - -LUALIB_API void luaL_checktype (lua_State *L, int narg, int t) { - if (lua_type(L, narg) != t) - tag_error(L, narg, t); -} - - -LUALIB_API void luaL_checkany (lua_State *L, int narg) { - if (lua_type(L, narg) == LUA_TNONE) - luaL_argerror(L, narg, "value expected"); -} - - -LUALIB_API const char *luaL_checklstring (lua_State *L, int narg, size_t *len) { - const char *s = lua_tolstring(L, narg, len); - if (!s) tag_error(L, narg, LUA_TSTRING); - return s; -} - - -LUALIB_API const char *luaL_optlstring (lua_State *L, int narg, - const char *def, size_t *len) { - if (lua_isnoneornil(L, narg)) { - if (len) - *len = (def ? strlen(def) : 0); - return def; - } - else return luaL_checklstring(L, narg, len); -} - - -LUALIB_API lua_Number luaL_checknumber (lua_State *L, int narg) { - lua_Number d = lua_tonumber(L, narg); - if (d == 0 && !lua_isnumber(L, narg)) /* avoid extra test when d is not 0 */ - tag_error(L, narg, LUA_TNUMBER); - return d; -} - - -LUALIB_API lua_Number luaL_optnumber (lua_State *L, int narg, lua_Number def) { - return luaL_opt(L, luaL_checknumber, narg, def); -} - - -LUALIB_API lua_Integer luaL_checkinteger (lua_State *L, int narg) { - lua_Integer d = lua_tointeger(L, narg); - if (d == 0 && !lua_isnumber(L, narg)) /* avoid extra test when d is not 0 */ - tag_error(L, narg, LUA_TNUMBER); - return d; -} - - -LUALIB_API lua_Integer luaL_optinteger (lua_State *L, int narg, - lua_Integer def) { - return luaL_opt(L, luaL_checkinteger, narg, def); -} - - -LUALIB_API int luaL_getmetafield (lua_State *L, int obj, const char *event) { - if (!lua_getmetatable(L, obj)) /* no metatable? */ - return 0; - lua_pushstring(L, event); - lua_rawget(L, -2); - if (lua_isnil(L, -1)) { - lua_pop(L, 2); /* remove metatable and metafield */ - return 0; - } - else { - lua_remove(L, -2); /* remove only metatable */ - return 1; - } -} - - -LUALIB_API int luaL_callmeta (lua_State *L, int obj, const char *event) { - obj = abs_index(L, obj); - if (!luaL_getmetafield(L, obj, event)) /* no metafield? */ - return 0; - lua_pushvalue(L, obj); - lua_call(L, 1, 1); - return 1; -} - - -LUALIB_API void (luaL_register) (lua_State *L, const char *libname, - const luaL_Reg *l) { - luaI_openlib(L, libname, l, 0); -} - - -static int libsize (const luaL_Reg *l) { - int size = 0; - for (; l->name; l++) size++; - return size; -} - - -LUALIB_API void luaI_openlib (lua_State *L, const char *libname, - const luaL_Reg *l, int nup) { - if (libname) { - int size = libsize(l); - /* check whether lib already exists */ - luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 1); - lua_getfield(L, -1, libname); /* get _LOADED[libname] */ - if (!lua_istable(L, -1)) { /* not found? */ - lua_pop(L, 1); /* remove previous result */ - /* try global variable (and create one if it does not exist) */ - if (luaL_findtable(L, LUA_GLOBALSINDEX, libname, size) != NULL) - luaL_error(L, "name conflict for module " LUA_QS, libname); - lua_pushvalue(L, -1); - lua_setfield(L, -3, libname); /* _LOADED[libname] = new table */ - } - lua_remove(L, -2); /* remove _LOADED table */ - lua_insert(L, -(nup+1)); /* move library table to below upvalues */ - } - for (; l->name; l++) { - int i; - for (i=0; ifunc, nup); - lua_setfield(L, -(nup+2), l->name); - } - lua_pop(L, nup); /* remove upvalues */ -} - - - -/* -** {====================================================== -** getn-setn: size for arrays -** ======================================================= -*/ - -#if defined(LUA_COMPAT_GETN) - -static int checkint (lua_State *L, int topop) { - int n = (lua_type(L, -1) == LUA_TNUMBER) ? lua_tointeger(L, -1) : -1; - lua_pop(L, topop); - return n; -} - - -static void getsizes (lua_State *L) { - lua_getfield(L, LUA_REGISTRYINDEX, "LUA_SIZES"); - if (lua_isnil(L, -1)) { /* no `size' table? */ - lua_pop(L, 1); /* remove nil */ - lua_newtable(L); /* create it */ - lua_pushvalue(L, -1); /* `size' will be its own metatable */ - lua_setmetatable(L, -2); - lua_pushliteral(L, "kv"); - lua_setfield(L, -2, "__mode"); /* metatable(N).__mode = "kv" */ - lua_pushvalue(L, -1); - lua_setfield(L, LUA_REGISTRYINDEX, "LUA_SIZES"); /* store in register */ - } -} - - -LUALIB_API void luaL_setn (lua_State *L, int t, int n) { - t = abs_index(L, t); - lua_pushliteral(L, "n"); - lua_rawget(L, t); - if (checkint(L, 1) >= 0) { /* is there a numeric field `n'? */ - lua_pushliteral(L, "n"); /* use it */ - lua_pushinteger(L, n); - lua_rawset(L, t); - } - else { /* use `sizes' */ - getsizes(L); - lua_pushvalue(L, t); - lua_pushinteger(L, n); - lua_rawset(L, -3); /* sizes[t] = n */ - lua_pop(L, 1); /* remove `sizes' */ - } -} - - -LUALIB_API int luaL_getn (lua_State *L, int t) { - int n; - t = abs_index(L, t); - lua_pushliteral(L, "n"); /* try t.n */ - lua_rawget(L, t); - if ((n = checkint(L, 1)) >= 0) return n; - getsizes(L); /* else try sizes[t] */ - lua_pushvalue(L, t); - lua_rawget(L, -2); - if ((n = checkint(L, 2)) >= 0) return n; - return (int)lua_objlen(L, t); -} - -#endif - -/* }====================================================== */ - - - -LUALIB_API const char *luaL_gsub (lua_State *L, const char *s, const char *p, - const char *r) { - const char *wild; - size_t l = strlen(p); - luaL_Buffer b; - luaL_buffinit(L, &b); - while ((wild = strstr(s, p)) != NULL) { - luaL_addlstring(&b, s, wild - s); /* push prefix */ - luaL_addstring(&b, r); /* push replacement in place of pattern */ - s = wild + l; /* continue after `p' */ - } - luaL_addstring(&b, s); /* push last suffix */ - luaL_pushresult(&b); - return lua_tostring(L, -1); -} - - -LUALIB_API const char *luaL_findtable (lua_State *L, int idx, - const char *fname, int szhint) { - const char *e; - lua_pushvalue(L, idx); - do { - e = strchr(fname, '.'); - if (e == NULL) e = fname + strlen(fname); - lua_pushlstring(L, fname, e - fname); - lua_rawget(L, -2); - if (lua_isnil(L, -1)) { /* no such field? */ - lua_pop(L, 1); /* remove this nil */ - lua_createtable(L, 0, (*e == '.' ? 1 : szhint)); /* new table for field */ - lua_pushlstring(L, fname, e - fname); - lua_pushvalue(L, -2); - lua_settable(L, -4); /* set new table into field */ - } - else if (!lua_istable(L, -1)) { /* field has a non-table value? */ - lua_pop(L, 2); /* remove table and value */ - return fname; /* return problematic part of the name */ - } - lua_remove(L, -2); /* remove previous table */ - fname = e + 1; - } while (*e == '.'); - return NULL; -} - - - -/* -** {====================================================== -** Generic Buffer manipulation -** ======================================================= -*/ - - -#define bufflen(B) ((B)->p - (B)->buffer) -#define bufffree(B) ((size_t)(LUAL_BUFFERSIZE - bufflen(B))) - -#define LIMIT (LUA_MINSTACK/2) - - -static int emptybuffer (luaL_Buffer *B) { - size_t l = bufflen(B); - if (l == 0) return 0; /* put nothing on stack */ - else { - lua_pushlstring(B->L, B->buffer, l); - B->p = B->buffer; - B->lvl++; - return 1; - } -} - - -static void adjuststack (luaL_Buffer *B) { - if (B->lvl > 1) { - lua_State *L = B->L; - int toget = 1; /* number of levels to concat */ - size_t toplen = lua_strlen(L, -1); - do { - size_t l = lua_strlen(L, -(toget+1)); - if (B->lvl - toget + 1 >= LIMIT || toplen > l) { - toplen += l; - toget++; - } - else break; - } while (toget < B->lvl); - lua_concat(L, toget); - B->lvl = B->lvl - toget + 1; - } -} - - -LUALIB_API char *luaL_prepbuffer (luaL_Buffer *B) { - if (emptybuffer(B)) - adjuststack(B); - return B->buffer; -} - - -LUALIB_API void luaL_addlstring (luaL_Buffer *B, const char *s, size_t l) { - while (l--) - luaL_addchar(B, *s++); -} - - -LUALIB_API void luaL_addstring (luaL_Buffer *B, const char *s) { - luaL_addlstring(B, s, strlen(s)); -} - - -LUALIB_API void luaL_pushresult (luaL_Buffer *B) { - emptybuffer(B); - lua_concat(B->L, B->lvl); - B->lvl = 1; -} - - -LUALIB_API void luaL_addvalue (luaL_Buffer *B) { - lua_State *L = B->L; - size_t vl; - const char *s = lua_tolstring(L, -1, &vl); - if (vl <= bufffree(B)) { /* fit into buffer? */ - memcpy(B->p, s, vl); /* put it there */ - B->p += vl; - lua_pop(L, 1); /* remove from stack */ - } - else { - if (emptybuffer(B)) - lua_insert(L, -2); /* put buffer before new value */ - B->lvl++; /* add new value into B stack */ - adjuststack(B); - } -} - - -LUALIB_API void luaL_buffinit (lua_State *L, luaL_Buffer *B) { - B->L = L; - B->p = B->buffer; - B->lvl = 0; -} - -/* }====================================================== */ - - -LUALIB_API int luaL_ref (lua_State *L, int t) { - int ref; - t = abs_index(L, t); - if (lua_isnil(L, -1)) { - lua_pop(L, 1); /* remove from stack */ - return LUA_REFNIL; /* `nil' has a unique fixed reference */ - } - lua_rawgeti(L, t, FREELIST_REF); /* get first free element */ - ref = (int)lua_tointeger(L, -1); /* ref = t[FREELIST_REF] */ - lua_pop(L, 1); /* remove it from stack */ - if (ref != 0) { /* any free element? */ - lua_rawgeti(L, t, ref); /* remove it from list */ - lua_rawseti(L, t, FREELIST_REF); /* (t[FREELIST_REF] = t[ref]) */ - } - else { /* no free elements */ - ref = (int)lua_objlen(L, t); - ref++; /* create new reference */ - } - lua_rawseti(L, t, ref); - return ref; -} - - -LUALIB_API void luaL_unref (lua_State *L, int t, int ref) { - if (ref >= 0) { - t = abs_index(L, t); - lua_rawgeti(L, t, FREELIST_REF); - lua_rawseti(L, t, ref); /* t[ref] = t[FREELIST_REF] */ - lua_pushinteger(L, ref); - lua_rawseti(L, t, FREELIST_REF); /* t[FREELIST_REF] = ref */ - } -} - - - -/* -** {====================================================== -** Load functions -** ======================================================= -*/ - -typedef struct LoadF { - int extraline; - FILE *f; - char buff[LUAL_BUFFERSIZE]; -} LoadF; - - -static const char *getF (lua_State *L, void *ud, size_t *size) { - LoadF *lf = (LoadF *)ud; - (void)L; - if (lf->extraline) { - lf->extraline = 0; - *size = 1; - return "\n"; - } - if (feof(lf->f)) return NULL; - *size = fread(lf->buff, 1, sizeof(lf->buff), lf->f); - return (*size > 0) ? lf->buff : NULL; -} - - -static int errfile (lua_State *L, const char *what, int fnameindex) { - const char *serr = strerror(errno); - const char *filename = lua_tostring(L, fnameindex) + 1; - lua_pushfstring(L, "cannot %s %s: %s", what, filename, serr); - lua_remove(L, fnameindex); - return LUA_ERRFILE; -} - - -LUALIB_API int luaL_loadfile (lua_State *L, const char *filename) { - LoadF lf; - int status, readstatus; - int c; - int fnameindex = lua_gettop(L) + 1; /* index of filename on the stack */ - lf.extraline = 0; - if (filename == NULL) { - lua_pushliteral(L, "=stdin"); - lf.f = stdin; - } - else { - lua_pushfstring(L, "@%s", filename); - lf.f = fopen(filename, "r"); - if (lf.f == NULL) return errfile(L, "open", fnameindex); - } - c = getc(lf.f); - if (c == '#') { /* Unix exec. file? */ - lf.extraline = 1; - while ((c = getc(lf.f)) != EOF && c != '\n') ; /* skip first line */ - if (c == '\n') c = getc(lf.f); - } - if (c == LUA_SIGNATURE[0] && filename) { /* binary file? */ - lf.f = freopen(filename, "rb", lf.f); /* reopen in binary mode */ - if (lf.f == NULL) return errfile(L, "reopen", fnameindex); - /* skip eventual `#!...' */ - while ((c = getc(lf.f)) != EOF && c != LUA_SIGNATURE[0]) ; - lf.extraline = 0; - } - ungetc(c, lf.f); - status = lua_load(L, getF, &lf, lua_tostring(L, -1)); - readstatus = ferror(lf.f); - if (filename) fclose(lf.f); /* close file (even in case of errors) */ - if (readstatus) { - lua_settop(L, fnameindex); /* ignore results from `lua_load' */ - return errfile(L, "read", fnameindex); - } - lua_remove(L, fnameindex); - return status; -} - - -typedef struct LoadS { - const char *s; - size_t size; -} LoadS; - - -static const char *getS (lua_State *L, void *ud, size_t *size) { - LoadS *ls = (LoadS *)ud; - (void)L; - if (ls->size == 0) return NULL; - *size = ls->size; - ls->size = 0; - return ls->s; -} - - -LUALIB_API int luaL_loadbuffer (lua_State *L, const char *buff, size_t size, - const char *name) { - LoadS ls; - ls.s = buff; - ls.size = size; - return lua_load(L, getS, &ls, name); -} - - -LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s) { - return luaL_loadbuffer(L, s, strlen(s), s); -} - - - -/* }====================================================== */ - - -static void *l_alloc (void *ud, void *ptr, size_t osize, size_t nsize) { - (void)ud; - (void)osize; - if (nsize == 0) { - free(ptr); - return NULL; - } - else - return realloc(ptr, nsize); -} - - -static int panic (lua_State *L) { - (void)L; /* to avoid warnings */ - fprintf(stderr, "PANIC: unprotected error in call to Lua API (%s)\n", - lua_tostring(L, -1)); - return 0; -} - - -LUALIB_API lua_State *luaL_newstate (void) { - lua_State *L = lua_newstate(l_alloc, NULL); - if (L) lua_atpanic(L, &panic); - return L; -} - diff --git a/lua/lua/lauxlib.h b/lua/lua/lauxlib.h deleted file mode 100644 index 34258235db..0000000000 --- a/lua/lua/lauxlib.h +++ /dev/null @@ -1,174 +0,0 @@ -/* -** $Id: lauxlib.h,v 1.88.1.1 2007/12/27 13:02:25 roberto Exp $ -** Auxiliary functions for building Lua libraries -** See Copyright Notice in lua.h -*/ - - -#ifndef lauxlib_h -#define lauxlib_h - - -#include -#include - -#include "lua.h" - - -#if defined(LUA_COMPAT_GETN) -LUALIB_API int (luaL_getn) (lua_State *L, int t); -LUALIB_API void (luaL_setn) (lua_State *L, int t, int n); -#else -#define luaL_getn(L,i) ((int)lua_objlen(L, i)) -#define luaL_setn(L,i,j) ((void)0) /* no op! */ -#endif - -#if defined(LUA_COMPAT_OPENLIB) -#define luaI_openlib luaL_openlib -#endif - - -/* extra error code for `luaL_load' */ -#define LUA_ERRFILE (LUA_ERRERR+1) - - -typedef struct luaL_Reg { - const char *name; - lua_CFunction func; -} luaL_Reg; - - - -LUALIB_API void (luaI_openlib) (lua_State *L, const char *libname, - const luaL_Reg *l, int nup); -LUALIB_API void (luaL_register) (lua_State *L, const char *libname, - const luaL_Reg *l); -LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e); -LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e); -LUALIB_API int (luaL_typerror) (lua_State *L, int narg, const char *tname); -LUALIB_API int (luaL_argerror) (lua_State *L, int numarg, const char *extramsg); -LUALIB_API const char *(luaL_checklstring) (lua_State *L, int numArg, - size_t *l); -LUALIB_API const char *(luaL_optlstring) (lua_State *L, int numArg, - const char *def, size_t *l); -LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int numArg); -LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int nArg, lua_Number def); - -LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int numArg); -LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int nArg, - lua_Integer def); - -LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg); -LUALIB_API void (luaL_checktype) (lua_State *L, int narg, int t); -LUALIB_API void (luaL_checkany) (lua_State *L, int narg); - -LUALIB_API int (luaL_newmetatable) (lua_State *L, const char *tname); -LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname); - -LUALIB_API void (luaL_where) (lua_State *L, int lvl); -LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...); - -LUALIB_API int (luaL_checkoption) (lua_State *L, int narg, const char *def, - const char *const lst[]); - -LUALIB_API int (luaL_ref) (lua_State *L, int t); -LUALIB_API void (luaL_unref) (lua_State *L, int t, int ref); - -LUALIB_API int (luaL_loadfile) (lua_State *L, const char *filename); -LUALIB_API int (luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz, - const char *name); -LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s); - -LUALIB_API lua_State *(luaL_newstate) (void); - - -LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s, const char *p, - const char *r); - -LUALIB_API const char *(luaL_findtable) (lua_State *L, int idx, - const char *fname, int szhint); - - - - -/* -** =============================================================== -** some useful macros -** =============================================================== -*/ - -#define luaL_argcheck(L, cond,numarg,extramsg) \ - ((void)((cond) || luaL_argerror(L, (numarg), (extramsg)))) -#define luaL_checkstring(L,n) (luaL_checklstring(L, (n), NULL)) -#define luaL_optstring(L,n,d) (luaL_optlstring(L, (n), (d), NULL)) -#define luaL_checkint(L,n) ((int)luaL_checkinteger(L, (n))) -#define luaL_optint(L,n,d) ((int)luaL_optinteger(L, (n), (d))) -#define luaL_checklong(L,n) ((long)luaL_checkinteger(L, (n))) -#define luaL_optlong(L,n,d) ((long)luaL_optinteger(L, (n), (d))) - -#define luaL_typename(L,i) lua_typename(L, lua_type(L,(i))) - -#define luaL_dofile(L, fn) \ - (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0)) - -#define luaL_dostring(L, s) \ - (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0)) - -#define luaL_getmetatable(L,n) (lua_getfield(L, LUA_REGISTRYINDEX, (n))) - -#define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n))) - -/* -** {====================================================== -** Generic Buffer manipulation -** ======================================================= -*/ - - - -typedef struct luaL_Buffer { - char *p; /* current position in buffer */ - int lvl; /* number of strings in the stack (level) */ - lua_State *L; - char buffer[LUAL_BUFFERSIZE]; -} luaL_Buffer; - -#define luaL_addchar(B,c) \ - ((void)((B)->p < ((B)->buffer+LUAL_BUFFERSIZE) || luaL_prepbuffer(B)), \ - (*(B)->p++ = (char)(c))) - -/* compatibility only */ -#define luaL_putchar(B,c) luaL_addchar(B,c) - -#define luaL_addsize(B,n) ((B)->p += (n)) - -LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B); -LUALIB_API char *(luaL_prepbuffer) (luaL_Buffer *B); -LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); -LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s); -LUALIB_API void (luaL_addvalue) (luaL_Buffer *B); -LUALIB_API void (luaL_pushresult) (luaL_Buffer *B); - - -/* }====================================================== */ - - -/* compatibility with ref system */ - -/* pre-defined references */ -#define LUA_NOREF (-2) -#define LUA_REFNIL (-1) - -#define lua_ref(L,lock) ((lock) ? luaL_ref(L, LUA_REGISTRYINDEX) : \ - (lua_pushstring(L, "unlocked references are obsolete"), lua_error(L), 0)) - -#define lua_unref(L,ref) luaL_unref(L, LUA_REGISTRYINDEX, (ref)) - -#define lua_getref(L,ref) lua_rawgeti(L, LUA_REGISTRYINDEX, (ref)) - - -#define luaL_reg luaL_Reg - -#endif - - diff --git a/lua/lua/lbaselib.c b/lua/lua/lbaselib.c deleted file mode 100644 index 2a4c079d3b..0000000000 --- a/lua/lua/lbaselib.c +++ /dev/null @@ -1,653 +0,0 @@ -/* -** $Id: lbaselib.c,v 1.191.1.6 2008/02/14 16:46:22 roberto Exp $ -** Basic library -** See Copyright Notice in lua.h -*/ - - - -#include -#include -#include -#include - -#define lbaselib_c -#define LUA_LIB - -#include "lua.h" - -#include "lauxlib.h" -#include "lualib.h" - - - - -/* -** If your system does not support `stdout', you can just remove this function. -** If you need, you can define your own `print' function, following this -** model but changing `fputs' to put the strings at a proper place -** (a console window or a log file, for instance). -*/ -static int luaB_print (lua_State *L) { - int n = lua_gettop(L); /* number of arguments */ - int i; - lua_getglobal(L, "tostring"); - for (i=1; i<=n; i++) { - const char *s; - lua_pushvalue(L, -1); /* function to be called */ - lua_pushvalue(L, i); /* value to print */ - lua_call(L, 1, 1); - s = lua_tostring(L, -1); /* get result */ - if (s == NULL) - return luaL_error(L, LUA_QL("tostring") " must return a string to " - LUA_QL("print")); - if (i>1) fputs("\t", stdout); - fputs(s, stdout); - lua_pop(L, 1); /* pop result */ - } - fputs("\n", stdout); - return 0; -} - - -static int luaB_tonumber (lua_State *L) { - int base = luaL_optint(L, 2, 10); - if (base == 10) { /* standard conversion */ - luaL_checkany(L, 1); - if (lua_isnumber(L, 1)) { - lua_pushnumber(L, lua_tonumber(L, 1)); - return 1; - } - } - else { - const char *s1 = luaL_checkstring(L, 1); - char *s2; - unsigned long n; - luaL_argcheck(L, 2 <= base && base <= 36, 2, "base out of range"); - n = strtoul(s1, &s2, base); - if (s1 != s2) { /* at least one valid digit? */ - while (isspace((unsigned char)(*s2))) s2++; /* skip trailing spaces */ - if (*s2 == '\0') { /* no invalid trailing characters? */ - lua_pushnumber(L, (lua_Number)n); - return 1; - } - } - } - lua_pushnil(L); /* else not a number */ - return 1; -} - - -static int luaB_error (lua_State *L) { - int level = luaL_optint(L, 2, 1); - lua_settop(L, 1); - if (lua_isstring(L, 1) && level > 0) { /* add extra information? */ - luaL_where(L, level); - lua_pushvalue(L, 1); - lua_concat(L, 2); - } - return lua_error(L); -} - - -static int luaB_getmetatable (lua_State *L) { - luaL_checkany(L, 1); - if (!lua_getmetatable(L, 1)) { - lua_pushnil(L); - return 1; /* no metatable */ - } - luaL_getmetafield(L, 1, "__metatable"); - return 1; /* returns either __metatable field (if present) or metatable */ -} - - -static int luaB_setmetatable (lua_State *L) { - int t = lua_type(L, 2); - luaL_checktype(L, 1, LUA_TTABLE); - luaL_argcheck(L, t == LUA_TNIL || t == LUA_TTABLE, 2, - "nil or table expected"); - if (luaL_getmetafield(L, 1, "__metatable")) - luaL_error(L, "cannot change a protected metatable"); - lua_settop(L, 2); - lua_setmetatable(L, 1); - return 1; -} - - -static void getfunc (lua_State *L, int opt) { - if (lua_isfunction(L, 1)) lua_pushvalue(L, 1); - else { - lua_Debug ar; - int level = opt ? luaL_optint(L, 1, 1) : luaL_checkint(L, 1); - luaL_argcheck(L, level >= 0, 1, "level must be non-negative"); - if (lua_getstack(L, level, &ar) == 0) - luaL_argerror(L, 1, "invalid level"); - lua_getinfo(L, "f", &ar); - if (lua_isnil(L, -1)) - luaL_error(L, "no function environment for tail call at level %d", - level); - } -} - - -static int luaB_getfenv (lua_State *L) { - getfunc(L, 1); - if (lua_iscfunction(L, -1)) /* is a C function? */ - lua_pushvalue(L, LUA_GLOBALSINDEX); /* return the thread's global env. */ - else - lua_getfenv(L, -1); - return 1; -} - - -static int luaB_setfenv (lua_State *L) { - luaL_checktype(L, 2, LUA_TTABLE); - getfunc(L, 0); - lua_pushvalue(L, 2); - if (lua_isnumber(L, 1) && lua_tonumber(L, 1) == 0) { - /* change environment of current thread */ - lua_pushthread(L); - lua_insert(L, -2); - lua_setfenv(L, -2); - return 0; - } - else if (lua_iscfunction(L, -2) || lua_setfenv(L, -2) == 0) - luaL_error(L, - LUA_QL("setfenv") " cannot change environment of given object"); - return 1; -} - - -static int luaB_rawequal (lua_State *L) { - luaL_checkany(L, 1); - luaL_checkany(L, 2); - lua_pushboolean(L, lua_rawequal(L, 1, 2)); - return 1; -} - - -static int luaB_rawget (lua_State *L) { - luaL_checktype(L, 1, LUA_TTABLE); - luaL_checkany(L, 2); - lua_settop(L, 2); - lua_rawget(L, 1); - return 1; -} - -static int luaB_rawset (lua_State *L) { - luaL_checktype(L, 1, LUA_TTABLE); - luaL_checkany(L, 2); - luaL_checkany(L, 3); - lua_settop(L, 3); - lua_rawset(L, 1); - return 1; -} - - -static int luaB_gcinfo (lua_State *L) { - lua_pushinteger(L, lua_getgccount(L)); - return 1; -} - - -static int luaB_collectgarbage (lua_State *L) { - static const char *const opts[] = {"stop", "restart", "collect", - "count", "step", "setpause", "setstepmul", NULL}; - static const int optsnum[] = {LUA_GCSTOP, LUA_GCRESTART, LUA_GCCOLLECT, - LUA_GCCOUNT, LUA_GCSTEP, LUA_GCSETPAUSE, LUA_GCSETSTEPMUL}; - int o = luaL_checkoption(L, 1, "collect", opts); - int ex = luaL_optint(L, 2, 0); - int res = lua_gc(L, optsnum[o], ex); - switch (optsnum[o]) { - case LUA_GCCOUNT: { - int b = lua_gc(L, LUA_GCCOUNTB, 0); - lua_pushnumber(L, res + ((lua_Number)b/1024)); - return 1; - } - case LUA_GCSTEP: { - lua_pushboolean(L, res); - return 1; - } - default: { - lua_pushnumber(L, res); - return 1; - } - } -} - - -static int luaB_type (lua_State *L) { - luaL_checkany(L, 1); - lua_pushstring(L, luaL_typename(L, 1)); - return 1; -} - - -static int luaB_next (lua_State *L) { - luaL_checktype(L, 1, LUA_TTABLE); - lua_settop(L, 2); /* create a 2nd argument if there isn't one */ - if (lua_next(L, 1)) - return 2; - else { - lua_pushnil(L); - return 1; - } -} - - -static int luaB_pairs (lua_State *L) { - luaL_checktype(L, 1, LUA_TTABLE); - lua_pushvalue(L, lua_upvalueindex(1)); /* return generator, */ - lua_pushvalue(L, 1); /* state, */ - lua_pushnil(L); /* and initial value */ - return 3; -} - - -static int ipairsaux (lua_State *L) { - int i = luaL_checkint(L, 2); - luaL_checktype(L, 1, LUA_TTABLE); - i++; /* next value */ - lua_pushinteger(L, i); - lua_rawgeti(L, 1, i); - return (lua_isnil(L, -1)) ? 0 : 2; -} - - -static int luaB_ipairs (lua_State *L) { - luaL_checktype(L, 1, LUA_TTABLE); - lua_pushvalue(L, lua_upvalueindex(1)); /* return generator, */ - lua_pushvalue(L, 1); /* state, */ - lua_pushinteger(L, 0); /* and initial value */ - return 3; -} - - -static int load_aux (lua_State *L, int status) { - if (status == 0) /* OK? */ - return 1; - else { - lua_pushnil(L); - lua_insert(L, -2); /* put before error message */ - return 2; /* return nil plus error message */ - } -} - - -static int luaB_loadstring (lua_State *L) { - size_t l; - const char *s = luaL_checklstring(L, 1, &l); - const char *chunkname = luaL_optstring(L, 2, s); - return load_aux(L, luaL_loadbuffer(L, s, l, chunkname)); -} - - -static int luaB_loadfile (lua_State *L) { - const char *fname = luaL_optstring(L, 1, NULL); - return load_aux(L, luaL_loadfile(L, fname)); -} - - -/* -** Reader for generic `load' function: `lua_load' uses the -** stack for internal stuff, so the reader cannot change the -** stack top. Instead, it keeps its resulting string in a -** reserved slot inside the stack. -*/ -static const char *generic_reader (lua_State *L, void *ud, size_t *size) { - (void)ud; /* to avoid warnings */ - luaL_checkstack(L, 2, "too many nested functions"); - lua_pushvalue(L, 1); /* get function */ - lua_call(L, 0, 1); /* call it */ - if (lua_isnil(L, -1)) { - *size = 0; - return NULL; - } - else if (lua_isstring(L, -1)) { - lua_replace(L, 3); /* save string in a reserved stack slot */ - return lua_tolstring(L, 3, size); - } - else luaL_error(L, "reader function must return a string"); - return NULL; /* to avoid warnings */ -} - - -static int luaB_load (lua_State *L) { - int status; - const char *cname = luaL_optstring(L, 2, "=(load)"); - luaL_checktype(L, 1, LUA_TFUNCTION); - lua_settop(L, 3); /* function, eventual name, plus one reserved slot */ - status = lua_load(L, generic_reader, NULL, cname); - return load_aux(L, status); -} - - -static int luaB_dofile (lua_State *L) { - const char *fname = luaL_optstring(L, 1, NULL); - int n = lua_gettop(L); - if (luaL_loadfile(L, fname) != 0) lua_error(L); - lua_call(L, 0, LUA_MULTRET); - return lua_gettop(L) - n; -} - - -static int luaB_assert (lua_State *L) { - luaL_checkany(L, 1); - if (!lua_toboolean(L, 1)) - return luaL_error(L, "%s", luaL_optstring(L, 2, "assertion failed!")); - return lua_gettop(L); -} - - -static int luaB_unpack (lua_State *L) { - int i, e, n; - luaL_checktype(L, 1, LUA_TTABLE); - i = luaL_optint(L, 2, 1); - e = luaL_opt(L, luaL_checkint, 3, luaL_getn(L, 1)); - if (i > e) return 0; /* empty range */ - n = e - i + 1; /* number of elements */ - if (n <= 0 || !lua_checkstack(L, n)) /* n <= 0 means arith. overflow */ - return luaL_error(L, "too many results to unpack"); - lua_rawgeti(L, 1, i); /* push arg[i] (avoiding overflow problems) */ - while (i++ < e) /* push arg[i + 1...e] */ - lua_rawgeti(L, 1, i); - return n; -} - - -static int luaB_select (lua_State *L) { - int n = lua_gettop(L); - if (lua_type(L, 1) == LUA_TSTRING && *lua_tostring(L, 1) == '#') { - lua_pushinteger(L, n-1); - return 1; - } - else { - int i = luaL_checkint(L, 1); - if (i < 0) i = n + i; - else if (i > n) i = n; - luaL_argcheck(L, 1 <= i, 1, "index out of range"); - return n - i; - } -} - - -static int luaB_pcall (lua_State *L) { - int status; - luaL_checkany(L, 1); - status = lua_pcall(L, lua_gettop(L) - 1, LUA_MULTRET, 0); - lua_pushboolean(L, (status == 0)); - lua_insert(L, 1); - return lua_gettop(L); /* return status + all results */ -} - - -static int luaB_xpcall (lua_State *L) { - int status; - luaL_checkany(L, 2); - lua_settop(L, 2); - lua_insert(L, 1); /* put error function under function to be called */ - status = lua_pcall(L, 0, LUA_MULTRET, 1); - lua_pushboolean(L, (status == 0)); - lua_replace(L, 1); - return lua_gettop(L); /* return status + all results */ -} - - -static int luaB_tostring (lua_State *L) { - luaL_checkany(L, 1); - if (luaL_callmeta(L, 1, "__tostring")) /* is there a metafield? */ - return 1; /* use its value */ - switch (lua_type(L, 1)) { - case LUA_TNUMBER: - lua_pushstring(L, lua_tostring(L, 1)); - break; - case LUA_TSTRING: - lua_pushvalue(L, 1); - break; - case LUA_TBOOLEAN: - lua_pushstring(L, (lua_toboolean(L, 1) ? "true" : "false")); - break; - case LUA_TNIL: - lua_pushliteral(L, "nil"); - break; - default: - lua_pushfstring(L, "%s: %p", luaL_typename(L, 1), lua_topointer(L, 1)); - break; - } - return 1; -} - - -static int luaB_newproxy (lua_State *L) { - lua_settop(L, 1); - lua_newuserdata(L, 0); /* create proxy */ - if (lua_toboolean(L, 1) == 0) - return 1; /* no metatable */ - else if (lua_isboolean(L, 1)) { - lua_newtable(L); /* create a new metatable `m' ... */ - lua_pushvalue(L, -1); /* ... and mark `m' as a valid metatable */ - lua_pushboolean(L, 1); - lua_rawset(L, lua_upvalueindex(1)); /* weaktable[m] = true */ - } - else { - int validproxy = 0; /* to check if weaktable[metatable(u)] == true */ - if (lua_getmetatable(L, 1)) { - lua_rawget(L, lua_upvalueindex(1)); - validproxy = lua_toboolean(L, -1); - lua_pop(L, 1); /* remove value */ - } - luaL_argcheck(L, validproxy, 1, "boolean or proxy expected"); - lua_getmetatable(L, 1); /* metatable is valid; get it */ - } - lua_setmetatable(L, 2); - return 1; -} - - -static const luaL_Reg base_funcs[] = { - {"assert", luaB_assert}, - {"collectgarbage", luaB_collectgarbage}, - {"dofile", luaB_dofile}, - {"error", luaB_error}, - {"gcinfo", luaB_gcinfo}, - {"getfenv", luaB_getfenv}, - {"getmetatable", luaB_getmetatable}, - {"loadfile", luaB_loadfile}, - {"load", luaB_load}, - {"loadstring", luaB_loadstring}, - {"next", luaB_next}, - {"pcall", luaB_pcall}, - {"print", luaB_print}, - {"rawequal", luaB_rawequal}, - {"rawget", luaB_rawget}, - {"rawset", luaB_rawset}, - {"select", luaB_select}, - {"setfenv", luaB_setfenv}, - {"setmetatable", luaB_setmetatable}, - {"tonumber", luaB_tonumber}, - {"tostring", luaB_tostring}, - {"type", luaB_type}, - {"unpack", luaB_unpack}, - {"xpcall", luaB_xpcall}, - {NULL, NULL} -}; - - -/* -** {====================================================== -** Coroutine library -** ======================================================= -*/ - -#define CO_RUN 0 /* running */ -#define CO_SUS 1 /* suspended */ -#define CO_NOR 2 /* 'normal' (it resumed another coroutine) */ -#define CO_DEAD 3 - -static const char *const statnames[] = - {"running", "suspended", "normal", "dead"}; - -static int costatus (lua_State *L, lua_State *co) { - if (L == co) return CO_RUN; - switch (lua_status(co)) { - case LUA_YIELD: - return CO_SUS; - case 0: { - lua_Debug ar; - if (lua_getstack(co, 0, &ar) > 0) /* does it have frames? */ - return CO_NOR; /* it is running */ - else if (lua_gettop(co) == 0) - return CO_DEAD; - else - return CO_SUS; /* initial state */ - } - default: /* some error occured */ - return CO_DEAD; - } -} - - -static int luaB_costatus (lua_State *L) { - lua_State *co = lua_tothread(L, 1); - luaL_argcheck(L, co, 1, "coroutine expected"); - lua_pushstring(L, statnames[costatus(L, co)]); - return 1; -} - - -static int auxresume (lua_State *L, lua_State *co, int narg) { - int status = costatus(L, co); - if (!lua_checkstack(co, narg)) - luaL_error(L, "too many arguments to resume"); - if (status != CO_SUS) { - lua_pushfstring(L, "cannot resume %s coroutine", statnames[status]); - return -1; /* error flag */ - } - lua_xmove(L, co, narg); - lua_setlevel(L, co); - status = lua_resume(co, narg); - if (status == 0 || status == LUA_YIELD) { - int nres = lua_gettop(co); - if (!lua_checkstack(L, nres + 1)) - luaL_error(L, "too many results to resume"); - lua_xmove(co, L, nres); /* move yielded values */ - return nres; - } - else { - lua_xmove(co, L, 1); /* move error message */ - return -1; /* error flag */ - } -} - - -static int luaB_coresume (lua_State *L) { - lua_State *co = lua_tothread(L, 1); - int r; - luaL_argcheck(L, co, 1, "coroutine expected"); - r = auxresume(L, co, lua_gettop(L) - 1); - if (r < 0) { - lua_pushboolean(L, 0); - lua_insert(L, -2); - return 2; /* return false + error message */ - } - else { - lua_pushboolean(L, 1); - lua_insert(L, -(r + 1)); - return r + 1; /* return true + `resume' returns */ - } -} - - -static int luaB_auxwrap (lua_State *L) { - lua_State *co = lua_tothread(L, lua_upvalueindex(1)); - int r = auxresume(L, co, lua_gettop(L)); - if (r < 0) { - if (lua_isstring(L, -1)) { /* error object is a string? */ - luaL_where(L, 1); /* add extra info */ - lua_insert(L, -2); - lua_concat(L, 2); - } - lua_error(L); /* propagate error */ - } - return r; -} - - -static int luaB_cocreate (lua_State *L) { - lua_State *NL = lua_newthread(L); - luaL_argcheck(L, lua_isfunction(L, 1) && !lua_iscfunction(L, 1), 1, - "Lua function expected"); - lua_pushvalue(L, 1); /* move function to top */ - lua_xmove(L, NL, 1); /* move function from L to NL */ - return 1; -} - - -static int luaB_cowrap (lua_State *L) { - luaB_cocreate(L); - lua_pushcclosure(L, luaB_auxwrap, 1); - return 1; -} - - -static int luaB_yield (lua_State *L) { - return lua_yield(L, lua_gettop(L)); -} - - -static int luaB_corunning (lua_State *L) { - if (lua_pushthread(L)) - lua_pushnil(L); /* main thread is not a coroutine */ - return 1; -} - - -static const luaL_Reg co_funcs[] = { - {"create", luaB_cocreate}, - {"resume", luaB_coresume}, - {"running", luaB_corunning}, - {"status", luaB_costatus}, - {"wrap", luaB_cowrap}, - {"yield", luaB_yield}, - {NULL, NULL} -}; - -/* }====================================================== */ - - -static void auxopen (lua_State *L, const char *name, - lua_CFunction f, lua_CFunction u) { - lua_pushcfunction(L, u); - lua_pushcclosure(L, f, 1); - lua_setfield(L, -2, name); -} - - -static void base_open (lua_State *L) { - /* set global _G */ - lua_pushvalue(L, LUA_GLOBALSINDEX); - lua_setglobal(L, "_G"); - /* open lib into global table */ - luaL_register(L, "_G", base_funcs); - lua_pushliteral(L, LUA_VERSION); - lua_setglobal(L, "_VERSION"); /* set global _VERSION */ - /* `ipairs' and `pairs' need auxliliary functions as upvalues */ - auxopen(L, "ipairs", luaB_ipairs, ipairsaux); - auxopen(L, "pairs", luaB_pairs, luaB_next); - /* `newproxy' needs a weaktable as upvalue */ - lua_createtable(L, 0, 1); /* new table `w' */ - lua_pushvalue(L, -1); /* `w' will be its own metatable */ - lua_setmetatable(L, -2); - lua_pushliteral(L, "kv"); - lua_setfield(L, -2, "__mode"); /* metatable(w).__mode = "kv" */ - lua_pushcclosure(L, luaB_newproxy, 1); - lua_setglobal(L, "newproxy"); /* set global `newproxy' */ -} - - -LUALIB_API int luaopen_base (lua_State *L) { - base_open(L); - luaL_register(L, LUA_COLIBNAME, co_funcs); - return 2; -} - diff --git a/lua/lua/lcode.c b/lua/lua/lcode.c deleted file mode 100644 index cff626b7fa..0000000000 --- a/lua/lua/lcode.c +++ /dev/null @@ -1,839 +0,0 @@ -/* -** $Id: lcode.c,v 2.25.1.3 2007/12/28 15:32:23 roberto Exp $ -** Code generator for Lua -** See Copyright Notice in lua.h -*/ - - -#include - -#define lcode_c -#define LUA_CORE - -#include "lua.h" - -#include "lcode.h" -#include "ldebug.h" -#include "ldo.h" -#include "lgc.h" -#include "llex.h" -#include "lmem.h" -#include "lobject.h" -#include "lopcodes.h" -#include "lparser.h" -#include "ltable.h" - - -#define hasjumps(e) ((e)->t != (e)->f) - - -static int isnumeral(expdesc *e) { - return (e->k == VKNUM && e->t == NO_JUMP && e->f == NO_JUMP); -} - - -void luaK_nil (FuncState *fs, int from, int n) { - Instruction *previous; - if (fs->pc > fs->lasttarget) { /* no jumps to current position? */ - if (fs->pc == 0) { /* function start? */ - if (from >= fs->nactvar) - return; /* positions are already clean */ - } - else { - previous = &fs->f->code[fs->pc-1]; - if (GET_OPCODE(*previous) == OP_LOADNIL) { - int pfrom = GETARG_A(*previous); - int pto = GETARG_B(*previous); - if (pfrom <= from && from <= pto+1) { /* can connect both? */ - if (from+n-1 > pto) - SETARG_B(*previous, from+n-1); - return; - } - } - } - } - luaK_codeABC(fs, OP_LOADNIL, from, from+n-1, 0); /* else no optimization */ -} - - -int luaK_jump (FuncState *fs) { - int jpc = fs->jpc; /* save list of jumps to here */ - int j; - fs->jpc = NO_JUMP; - j = luaK_codeAsBx(fs, OP_JMP, 0, NO_JUMP); - luaK_concat(fs, &j, jpc); /* keep them on hold */ - return j; -} - - -void luaK_ret (FuncState *fs, int first, int nret) { - luaK_codeABC(fs, OP_RETURN, first, nret+1, 0); -} - - -static int condjump (FuncState *fs, OpCode op, int A, int B, int C) { - luaK_codeABC(fs, op, A, B, C); - return luaK_jump(fs); -} - - -static void fixjump (FuncState *fs, int pc, int dest) { - Instruction *jmp = &fs->f->code[pc]; - int offset = dest-(pc+1); - lua_assert(dest != NO_JUMP); - if (abs(offset) > MAXARG_sBx) - luaX_syntaxerror(fs->ls, "control structure too long"); - SETARG_sBx(*jmp, offset); -} - - -/* -** returns current `pc' and marks it as a jump target (to avoid wrong -** optimizations with consecutive instructions not in the same basic block). -*/ -int luaK_getlabel (FuncState *fs) { - fs->lasttarget = fs->pc; - return fs->pc; -} - - -static int getjump (FuncState *fs, int pc) { - int offset = GETARG_sBx(fs->f->code[pc]); - if (offset == NO_JUMP) /* point to itself represents end of list */ - return NO_JUMP; /* end of list */ - else - return (pc+1)+offset; /* turn offset into absolute position */ -} - - -static Instruction *getjumpcontrol (FuncState *fs, int pc) { - Instruction *pi = &fs->f->code[pc]; - if (pc >= 1 && testTMode(GET_OPCODE(*(pi-1)))) - return pi-1; - else - return pi; -} - - -/* -** check whether list has any jump that do not produce a value -** (or produce an inverted value) -*/ -static int need_value (FuncState *fs, int list) { - for (; list != NO_JUMP; list = getjump(fs, list)) { - Instruction i = *getjumpcontrol(fs, list); - if (GET_OPCODE(i) != OP_TESTSET) return 1; - } - return 0; /* not found */ -} - - -static int patchtestreg (FuncState *fs, int node, int reg) { - Instruction *i = getjumpcontrol(fs, node); - if (GET_OPCODE(*i) != OP_TESTSET) - return 0; /* cannot patch other instructions */ - if (reg != NO_REG && reg != GETARG_B(*i)) - SETARG_A(*i, reg); - else /* no register to put value or register already has the value */ - *i = CREATE_ABC(OP_TEST, GETARG_B(*i), 0, GETARG_C(*i)); - - return 1; -} - - -static void removevalues (FuncState *fs, int list) { - for (; list != NO_JUMP; list = getjump(fs, list)) - patchtestreg(fs, list, NO_REG); -} - - -static void patchlistaux (FuncState *fs, int list, int vtarget, int reg, - int dtarget) { - while (list != NO_JUMP) { - int next = getjump(fs, list); - if (patchtestreg(fs, list, reg)) - fixjump(fs, list, vtarget); - else - fixjump(fs, list, dtarget); /* jump to default target */ - list = next; - } -} - - -static void dischargejpc (FuncState *fs) { - patchlistaux(fs, fs->jpc, fs->pc, NO_REG, fs->pc); - fs->jpc = NO_JUMP; -} - - -void luaK_patchlist (FuncState *fs, int list, int target) { - if (target == fs->pc) - luaK_patchtohere(fs, list); - else { - lua_assert(target < fs->pc); - patchlistaux(fs, list, target, NO_REG, target); - } -} - - -void luaK_patchtohere (FuncState *fs, int list) { - luaK_getlabel(fs); - luaK_concat(fs, &fs->jpc, list); -} - - -void luaK_concat (FuncState *fs, int *l1, int l2) { - if (l2 == NO_JUMP) return; - else if (*l1 == NO_JUMP) - *l1 = l2; - else { - int list = *l1; - int next; - while ((next = getjump(fs, list)) != NO_JUMP) /* find last element */ - list = next; - fixjump(fs, list, l2); - } -} - - -void luaK_checkstack (FuncState *fs, int n) { - int newstack = fs->freereg + n; - if (newstack > fs->f->maxstacksize) { - if (newstack >= MAXSTACK) - luaX_syntaxerror(fs->ls, "function or expression too complex"); - fs->f->maxstacksize = cast_byte(newstack); - } -} - - -void luaK_reserveregs (FuncState *fs, int n) { - luaK_checkstack(fs, n); - fs->freereg += n; -} - - -static void freereg (FuncState *fs, int reg) { - if (!ISK(reg) && reg >= fs->nactvar) { - fs->freereg--; - lua_assert(reg == fs->freereg); - } -} - - -static void freeexp (FuncState *fs, expdesc *e) { - if (e->k == VNONRELOC) - freereg(fs, e->u.s.info); -} - - -static int addk (FuncState *fs, TValue *k, TValue *v) { - lua_State *L = fs->L; - TValue *idx = luaH_set(L, fs->h, k); - Proto *f = fs->f; - int oldsize = f->sizek; - if (ttisnumber(idx)) { - lua_assert(luaO_rawequalObj(&fs->f->k[cast_int(nvalue(idx))], v)); - return cast_int(nvalue(idx)); - } - else { /* constant not found; create a new entry */ - setnvalue(idx, cast_num(fs->nk)); - luaM_growvector(L, f->k, fs->nk, f->sizek, TValue, - MAXARG_Bx, "constant table overflow"); - while (oldsize < f->sizek) setnilvalue(&f->k[oldsize++]); - setobj(L, &f->k[fs->nk], v); - luaC_barrier(L, f, v); - return fs->nk++; - } -} - - -int luaK_stringK (FuncState *fs, TString *s) { - TValue o; - setsvalue(fs->L, &o, s); - return addk(fs, &o, &o); -} - - -int luaK_numberK (FuncState *fs, lua_Number r) { - TValue o; - setnvalue(&o, r); - return addk(fs, &o, &o); -} - - -static int boolK (FuncState *fs, int b) { - TValue o; - setbvalue(&o, b); - return addk(fs, &o, &o); -} - - -static int nilK (FuncState *fs) { - TValue k, v; - setnilvalue(&v); - /* cannot use nil as key; instead use table itself to represent nil */ - sethvalue(fs->L, &k, fs->h); - return addk(fs, &k, &v); -} - - -void luaK_setreturns (FuncState *fs, expdesc *e, int nresults) { - if (e->k == VCALL) { /* expression is an open function call? */ - SETARG_C(getcode(fs, e), nresults+1); - } - else if (e->k == VVARARG) { - SETARG_B(getcode(fs, e), nresults+1); - SETARG_A(getcode(fs, e), fs->freereg); - luaK_reserveregs(fs, 1); - } -} - - -void luaK_setoneret (FuncState *fs, expdesc *e) { - if (e->k == VCALL) { /* expression is an open function call? */ - e->k = VNONRELOC; - e->u.s.info = GETARG_A(getcode(fs, e)); - } - else if (e->k == VVARARG) { - SETARG_B(getcode(fs, e), 2); - e->k = VRELOCABLE; /* can relocate its simple result */ - } -} - - -void luaK_dischargevars (FuncState *fs, expdesc *e) { - switch (e->k) { - case VLOCAL: { - e->k = VNONRELOC; - break; - } - case VUPVAL: { - e->u.s.info = luaK_codeABC(fs, OP_GETUPVAL, 0, e->u.s.info, 0); - e->k = VRELOCABLE; - break; - } - case VGLOBAL: { - e->u.s.info = luaK_codeABx(fs, OP_GETGLOBAL, 0, e->u.s.info); - e->k = VRELOCABLE; - break; - } - case VINDEXED: { - freereg(fs, e->u.s.aux); - freereg(fs, e->u.s.info); - e->u.s.info = luaK_codeABC(fs, OP_GETTABLE, 0, e->u.s.info, e->u.s.aux); - e->k = VRELOCABLE; - break; - } - case VVARARG: - case VCALL: { - luaK_setoneret(fs, e); - break; - } - default: break; /* there is one value available (somewhere) */ - } -} - - -static int code_label (FuncState *fs, int A, int b, int jump) { - luaK_getlabel(fs); /* those instructions may be jump targets */ - return luaK_codeABC(fs, OP_LOADBOOL, A, b, jump); -} - - -static void discharge2reg (FuncState *fs, expdesc *e, int reg) { - luaK_dischargevars(fs, e); - switch (e->k) { - case VNIL: { - luaK_nil(fs, reg, 1); - break; - } - case VFALSE: case VTRUE: { - luaK_codeABC(fs, OP_LOADBOOL, reg, e->k == VTRUE, 0); - break; - } - case VK: { - luaK_codeABx(fs, OP_LOADK, reg, e->u.s.info); - break; - } - case VKNUM: { - luaK_codeABx(fs, OP_LOADK, reg, luaK_numberK(fs, e->u.nval)); - break; - } - case VRELOCABLE: { - Instruction *pc = &getcode(fs, e); - SETARG_A(*pc, reg); - break; - } - case VNONRELOC: { - if (reg != e->u.s.info) - luaK_codeABC(fs, OP_MOVE, reg, e->u.s.info, 0); - break; - } - default: { - lua_assert(e->k == VVOID || e->k == VJMP); - return; /* nothing to do... */ - } - } - e->u.s.info = reg; - e->k = VNONRELOC; -} - - -static void discharge2anyreg (FuncState *fs, expdesc *e) { - if (e->k != VNONRELOC) { - luaK_reserveregs(fs, 1); - discharge2reg(fs, e, fs->freereg-1); - } -} - - -static void exp2reg (FuncState *fs, expdesc *e, int reg) { - discharge2reg(fs, e, reg); - if (e->k == VJMP) - luaK_concat(fs, &e->t, e->u.s.info); /* put this jump in `t' list */ - if (hasjumps(e)) { - int final; /* position after whole expression */ - int p_f = NO_JUMP; /* position of an eventual LOAD false */ - int p_t = NO_JUMP; /* position of an eventual LOAD true */ - if (need_value(fs, e->t) || need_value(fs, e->f)) { - int fj = (e->k == VJMP) ? NO_JUMP : luaK_jump(fs); - p_f = code_label(fs, reg, 0, 1); - p_t = code_label(fs, reg, 1, 0); - luaK_patchtohere(fs, fj); - } - final = luaK_getlabel(fs); - patchlistaux(fs, e->f, final, reg, p_f); - patchlistaux(fs, e->t, final, reg, p_t); - } - e->f = e->t = NO_JUMP; - e->u.s.info = reg; - e->k = VNONRELOC; -} - - -void luaK_exp2nextreg (FuncState *fs, expdesc *e) { - luaK_dischargevars(fs, e); - freeexp(fs, e); - luaK_reserveregs(fs, 1); - exp2reg(fs, e, fs->freereg - 1); -} - - -int luaK_exp2anyreg (FuncState *fs, expdesc *e) { - luaK_dischargevars(fs, e); - if (e->k == VNONRELOC) { - if (!hasjumps(e)) return e->u.s.info; /* exp is already in a register */ - if (e->u.s.info >= fs->nactvar) { /* reg. is not a local? */ - exp2reg(fs, e, e->u.s.info); /* put value on it */ - return e->u.s.info; - } - } - luaK_exp2nextreg(fs, e); /* default */ - return e->u.s.info; -} - - -void luaK_exp2val (FuncState *fs, expdesc *e) { - if (hasjumps(e)) - luaK_exp2anyreg(fs, e); - else - luaK_dischargevars(fs, e); -} - - -int luaK_exp2RK (FuncState *fs, expdesc *e) { - luaK_exp2val(fs, e); - switch (e->k) { - case VKNUM: - case VTRUE: - case VFALSE: - case VNIL: { - if (fs->nk <= MAXINDEXRK) { /* constant fit in RK operand? */ - e->u.s.info = (e->k == VNIL) ? nilK(fs) : - (e->k == VKNUM) ? luaK_numberK(fs, e->u.nval) : - boolK(fs, (e->k == VTRUE)); - e->k = VK; - return RKASK(e->u.s.info); - } - else break; - } - case VK: { - if (e->u.s.info <= MAXINDEXRK) /* constant fit in argC? */ - return RKASK(e->u.s.info); - else break; - } - default: break; - } - /* not a constant in the right range: put it in a register */ - return luaK_exp2anyreg(fs, e); -} - - -void luaK_storevar (FuncState *fs, expdesc *var, expdesc *ex) { - switch (var->k) { - case VLOCAL: { - freeexp(fs, ex); - exp2reg(fs, ex, var->u.s.info); - return; - } - case VUPVAL: { - int e = luaK_exp2anyreg(fs, ex); - luaK_codeABC(fs, OP_SETUPVAL, e, var->u.s.info, 0); - break; - } - case VGLOBAL: { - int e = luaK_exp2anyreg(fs, ex); - luaK_codeABx(fs, OP_SETGLOBAL, e, var->u.s.info); - break; - } - case VINDEXED: { - int e = luaK_exp2RK(fs, ex); - luaK_codeABC(fs, OP_SETTABLE, var->u.s.info, var->u.s.aux, e); - break; - } - default: { - lua_assert(0); /* invalid var kind to store */ - break; - } - } - freeexp(fs, ex); -} - - -void luaK_self (FuncState *fs, expdesc *e, expdesc *key) { - int func; - luaK_exp2anyreg(fs, e); - freeexp(fs, e); - func = fs->freereg; - luaK_reserveregs(fs, 2); - luaK_codeABC(fs, OP_SELF, func, e->u.s.info, luaK_exp2RK(fs, key)); - freeexp(fs, key); - e->u.s.info = func; - e->k = VNONRELOC; -} - - -static void invertjump (FuncState *fs, expdesc *e) { - Instruction *pc = getjumpcontrol(fs, e->u.s.info); - lua_assert(testTMode(GET_OPCODE(*pc)) && GET_OPCODE(*pc) != OP_TESTSET && - GET_OPCODE(*pc) != OP_TEST); - SETARG_A(*pc, !(GETARG_A(*pc))); -} - - -static int jumponcond (FuncState *fs, expdesc *e, int cond) { - if (e->k == VRELOCABLE) { - Instruction ie = getcode(fs, e); - if (GET_OPCODE(ie) == OP_NOT) { - fs->pc--; /* remove previous OP_NOT */ - return condjump(fs, OP_TEST, GETARG_B(ie), 0, !cond); - } - /* else go through */ - } - discharge2anyreg(fs, e); - freeexp(fs, e); - return condjump(fs, OP_TESTSET, NO_REG, e->u.s.info, cond); -} - - -void luaK_goiftrue (FuncState *fs, expdesc *e) { - int pc; /* pc of last jump */ - luaK_dischargevars(fs, e); - switch (e->k) { - case VK: case VKNUM: case VTRUE: { - pc = NO_JUMP; /* always true; do nothing */ - break; - } - case VFALSE: { - pc = luaK_jump(fs); /* always jump */ - break; - } - case VJMP: { - invertjump(fs, e); - pc = e->u.s.info; - break; - } - default: { - pc = jumponcond(fs, e, 0); - break; - } - } - luaK_concat(fs, &e->f, pc); /* insert last jump in `f' list */ - luaK_patchtohere(fs, e->t); - e->t = NO_JUMP; -} - - -static void luaK_goiffalse (FuncState *fs, expdesc *e) { - int pc; /* pc of last jump */ - luaK_dischargevars(fs, e); - switch (e->k) { - case VNIL: case VFALSE: { - pc = NO_JUMP; /* always false; do nothing */ - break; - } - case VTRUE: { - pc = luaK_jump(fs); /* always jump */ - break; - } - case VJMP: { - pc = e->u.s.info; - break; - } - default: { - pc = jumponcond(fs, e, 1); - break; - } - } - luaK_concat(fs, &e->t, pc); /* insert last jump in `t' list */ - luaK_patchtohere(fs, e->f); - e->f = NO_JUMP; -} - - -static void codenot (FuncState *fs, expdesc *e) { - luaK_dischargevars(fs, e); - switch (e->k) { - case VNIL: case VFALSE: { - e->k = VTRUE; - break; - } - case VK: case VKNUM: case VTRUE: { - e->k = VFALSE; - break; - } - case VJMP: { - invertjump(fs, e); - break; - } - case VRELOCABLE: - case VNONRELOC: { - discharge2anyreg(fs, e); - freeexp(fs, e); - e->u.s.info = luaK_codeABC(fs, OP_NOT, 0, e->u.s.info, 0); - e->k = VRELOCABLE; - break; - } - default: { - lua_assert(0); /* cannot happen */ - break; - } - } - /* interchange true and false lists */ - { int temp = e->f; e->f = e->t; e->t = temp; } - removevalues(fs, e->f); - removevalues(fs, e->t); -} - - -void luaK_indexed (FuncState *fs, expdesc *t, expdesc *k) { - t->u.s.aux = luaK_exp2RK(fs, k); - t->k = VINDEXED; -} - - -static int constfolding (OpCode op, expdesc *e1, expdesc *e2) { - lua_Number v1, v2, r; - if (!isnumeral(e1) || !isnumeral(e2)) return 0; - v1 = e1->u.nval; - v2 = e2->u.nval; - switch (op) { - case OP_ADD: r = luai_numadd(v1, v2); break; - case OP_SUB: r = luai_numsub(v1, v2); break; - case OP_MUL: r = luai_nummul(v1, v2); break; - case OP_DIV: - if (v2 == 0) return 0; /* do not attempt to divide by 0 */ - r = luai_numdiv(v1, v2); break; - case OP_MOD: - if (v2 == 0) return 0; /* do not attempt to divide by 0 */ - r = luai_nummod(v1, v2); break; - case OP_POW: r = luai_numpow(v1, v2); break; - case OP_UNM: r = luai_numunm(v1); break; - case OP_LEN: return 0; /* no constant folding for 'len' */ - default: lua_assert(0); r = 0; break; - } - if (luai_numisnan(r)) return 0; /* do not attempt to produce NaN */ - e1->u.nval = r; - return 1; -} - - -static void codearith (FuncState *fs, OpCode op, expdesc *e1, expdesc *e2) { - if (constfolding(op, e1, e2)) - return; - else { - int o2 = (op != OP_UNM && op != OP_LEN) ? luaK_exp2RK(fs, e2) : 0; - int o1 = luaK_exp2RK(fs, e1); - if (o1 > o2) { - freeexp(fs, e1); - freeexp(fs, e2); - } - else { - freeexp(fs, e2); - freeexp(fs, e1); - } - e1->u.s.info = luaK_codeABC(fs, op, 0, o1, o2); - e1->k = VRELOCABLE; - } -} - - -static void codecomp (FuncState *fs, OpCode op, int cond, expdesc *e1, - expdesc *e2) { - int o1 = luaK_exp2RK(fs, e1); - int o2 = luaK_exp2RK(fs, e2); - freeexp(fs, e2); - freeexp(fs, e1); - if (cond == 0 && op != OP_EQ) { - int temp; /* exchange args to replace by `<' or `<=' */ - temp = o1; o1 = o2; o2 = temp; /* o1 <==> o2 */ - cond = 1; - } - e1->u.s.info = condjump(fs, op, cond, o1, o2); - e1->k = VJMP; -} - - -void luaK_prefix (FuncState *fs, UnOpr op, expdesc *e) { - expdesc e2; - e2.t = e2.f = NO_JUMP; e2.k = VKNUM; e2.u.nval = 0; - switch (op) { - case OPR_MINUS: { - if (!isnumeral(e)) - luaK_exp2anyreg(fs, e); /* cannot operate on non-numeric constants */ - codearith(fs, OP_UNM, e, &e2); - break; - } - case OPR_NOT: codenot(fs, e); break; - case OPR_LEN: { - luaK_exp2anyreg(fs, e); /* cannot operate on constants */ - codearith(fs, OP_LEN, e, &e2); - break; - } - default: lua_assert(0); - } -} - - -void luaK_infix (FuncState *fs, BinOpr op, expdesc *v) { - switch (op) { - case OPR_AND: { - luaK_goiftrue(fs, v); - break; - } - case OPR_OR: { - luaK_goiffalse(fs, v); - break; - } - case OPR_CONCAT: { - luaK_exp2nextreg(fs, v); /* operand must be on the `stack' */ - break; - } - case OPR_ADD: case OPR_SUB: case OPR_MUL: case OPR_DIV: - case OPR_MOD: case OPR_POW: { - if (!isnumeral(v)) luaK_exp2RK(fs, v); - break; - } - default: { - luaK_exp2RK(fs, v); - break; - } - } -} - - -void luaK_posfix (FuncState *fs, BinOpr op, expdesc *e1, expdesc *e2) { - switch (op) { - case OPR_AND: { - lua_assert(e1->t == NO_JUMP); /* list must be closed */ - luaK_dischargevars(fs, e2); - luaK_concat(fs, &e2->f, e1->f); - *e1 = *e2; - break; - } - case OPR_OR: { - lua_assert(e1->f == NO_JUMP); /* list must be closed */ - luaK_dischargevars(fs, e2); - luaK_concat(fs, &e2->t, e1->t); - *e1 = *e2; - break; - } - case OPR_CONCAT: { - luaK_exp2val(fs, e2); - if (e2->k == VRELOCABLE && GET_OPCODE(getcode(fs, e2)) == OP_CONCAT) { - lua_assert(e1->u.s.info == GETARG_B(getcode(fs, e2))-1); - freeexp(fs, e1); - SETARG_B(getcode(fs, e2), e1->u.s.info); - e1->k = VRELOCABLE; e1->u.s.info = e2->u.s.info; - } - else { - luaK_exp2nextreg(fs, e2); /* operand must be on the 'stack' */ - codearith(fs, OP_CONCAT, e1, e2); - } - break; - } - case OPR_ADD: codearith(fs, OP_ADD, e1, e2); break; - case OPR_SUB: codearith(fs, OP_SUB, e1, e2); break; - case OPR_MUL: codearith(fs, OP_MUL, e1, e2); break; - case OPR_DIV: codearith(fs, OP_DIV, e1, e2); break; - case OPR_MOD: codearith(fs, OP_MOD, e1, e2); break; - case OPR_POW: codearith(fs, OP_POW, e1, e2); break; - case OPR_EQ: codecomp(fs, OP_EQ, 1, e1, e2); break; - case OPR_NE: codecomp(fs, OP_EQ, 0, e1, e2); break; - case OPR_LT: codecomp(fs, OP_LT, 1, e1, e2); break; - case OPR_LE: codecomp(fs, OP_LE, 1, e1, e2); break; - case OPR_GT: codecomp(fs, OP_LT, 0, e1, e2); break; - case OPR_GE: codecomp(fs, OP_LE, 0, e1, e2); break; - default: lua_assert(0); - } -} - - -void luaK_fixline (FuncState *fs, int line) { - fs->f->lineinfo[fs->pc - 1] = line; -} - - -static int luaK_code (FuncState *fs, Instruction i, int line) { - Proto *f = fs->f; - dischargejpc(fs); /* `pc' will change */ - /* put new instruction in code array */ - luaM_growvector(fs->L, f->code, fs->pc, f->sizecode, Instruction, - MAX_INT, "code size overflow"); - f->code[fs->pc] = i; - /* save corresponding line information */ - luaM_growvector(fs->L, f->lineinfo, fs->pc, f->sizelineinfo, int, - MAX_INT, "code size overflow"); - f->lineinfo[fs->pc] = line; - return fs->pc++; -} - - -int luaK_codeABC (FuncState *fs, OpCode o, int a, int b, int c) { - lua_assert(getOpMode(o) == iABC); - lua_assert(getBMode(o) != OpArgN || b == 0); - lua_assert(getCMode(o) != OpArgN || c == 0); - return luaK_code(fs, CREATE_ABC(o, a, b, c), fs->ls->lastline); -} - - -int luaK_codeABx (FuncState *fs, OpCode o, int a, unsigned int bc) { - lua_assert(getOpMode(o) == iABx || getOpMode(o) == iAsBx); - lua_assert(getCMode(o) == OpArgN); - return luaK_code(fs, CREATE_ABx(o, a, bc), fs->ls->lastline); -} - - -void luaK_setlist (FuncState *fs, int base, int nelems, int tostore) { - int c = (nelems - 1)/LFIELDS_PER_FLUSH + 1; - int b = (tostore == LUA_MULTRET) ? 0 : tostore; - lua_assert(tostore != 0); - if (c <= MAXARG_C) - luaK_codeABC(fs, OP_SETLIST, base, b, c); - else { - luaK_codeABC(fs, OP_SETLIST, base, b, 0); - luaK_code(fs, cast(Instruction, c), fs->ls->lastline); - } - fs->freereg = base + 1; /* free registers with list values */ -} - diff --git a/lua/lua/lcode.h b/lua/lua/lcode.h deleted file mode 100644 index b941c60721..0000000000 --- a/lua/lua/lcode.h +++ /dev/null @@ -1,76 +0,0 @@ -/* -** $Id: lcode.h,v 1.48.1.1 2007/12/27 13:02:25 roberto Exp $ -** Code generator for Lua -** See Copyright Notice in lua.h -*/ - -#ifndef lcode_h -#define lcode_h - -#include "llex.h" -#include "lobject.h" -#include "lopcodes.h" -#include "lparser.h" - - -/* -** Marks the end of a patch list. It is an invalid value both as an absolute -** address, and as a list link (would link an element to itself). -*/ -#define NO_JUMP (-1) - - -/* -** grep "ORDER OPR" if you change these enums -*/ -typedef enum BinOpr { - OPR_ADD, OPR_SUB, OPR_MUL, OPR_DIV, OPR_MOD, OPR_POW, - OPR_CONCAT, - OPR_NE, OPR_EQ, - OPR_LT, OPR_LE, OPR_GT, OPR_GE, - OPR_AND, OPR_OR, - OPR_NOBINOPR -} BinOpr; - - -typedef enum UnOpr { OPR_MINUS, OPR_NOT, OPR_LEN, OPR_NOUNOPR } UnOpr; - - -#define getcode(fs,e) ((fs)->f->code[(e)->u.s.info]) - -#define luaK_codeAsBx(fs,o,A,sBx) luaK_codeABx(fs,o,A,(sBx)+MAXARG_sBx) - -#define luaK_setmultret(fs,e) luaK_setreturns(fs, e, LUA_MULTRET) - -LUAI_FUNC int luaK_codeABx (FuncState *fs, OpCode o, int A, unsigned int Bx); -LUAI_FUNC int luaK_codeABC (FuncState *fs, OpCode o, int A, int B, int C); -LUAI_FUNC void luaK_fixline (FuncState *fs, int line); -LUAI_FUNC void luaK_nil (FuncState *fs, int from, int n); -LUAI_FUNC void luaK_reserveregs (FuncState *fs, int n); -LUAI_FUNC void luaK_checkstack (FuncState *fs, int n); -LUAI_FUNC int luaK_stringK (FuncState *fs, TString *s); -LUAI_FUNC int luaK_numberK (FuncState *fs, lua_Number r); -LUAI_FUNC void luaK_dischargevars (FuncState *fs, expdesc *e); -LUAI_FUNC int luaK_exp2anyreg (FuncState *fs, expdesc *e); -LUAI_FUNC void luaK_exp2nextreg (FuncState *fs, expdesc *e); -LUAI_FUNC void luaK_exp2val (FuncState *fs, expdesc *e); -LUAI_FUNC int luaK_exp2RK (FuncState *fs, expdesc *e); -LUAI_FUNC void luaK_self (FuncState *fs, expdesc *e, expdesc *key); -LUAI_FUNC void luaK_indexed (FuncState *fs, expdesc *t, expdesc *k); -LUAI_FUNC void luaK_goiftrue (FuncState *fs, expdesc *e); -LUAI_FUNC void luaK_storevar (FuncState *fs, expdesc *var, expdesc *e); -LUAI_FUNC void luaK_setreturns (FuncState *fs, expdesc *e, int nresults); -LUAI_FUNC void luaK_setoneret (FuncState *fs, expdesc *e); -LUAI_FUNC int luaK_jump (FuncState *fs); -LUAI_FUNC void luaK_ret (FuncState *fs, int first, int nret); -LUAI_FUNC void luaK_patchlist (FuncState *fs, int list, int target); -LUAI_FUNC void luaK_patchtohere (FuncState *fs, int list); -LUAI_FUNC void luaK_concat (FuncState *fs, int *l1, int l2); -LUAI_FUNC int luaK_getlabel (FuncState *fs); -LUAI_FUNC void luaK_prefix (FuncState *fs, UnOpr op, expdesc *v); -LUAI_FUNC void luaK_infix (FuncState *fs, BinOpr op, expdesc *v); -LUAI_FUNC void luaK_posfix (FuncState *fs, BinOpr op, expdesc *v1, expdesc *v2); -LUAI_FUNC void luaK_setlist (FuncState *fs, int base, int nelems, int tostore); - - -#endif diff --git a/lua/lua/ldblib.c b/lua/lua/ldblib.c deleted file mode 100644 index 67de1222a9..0000000000 --- a/lua/lua/ldblib.c +++ /dev/null @@ -1,397 +0,0 @@ -/* -** $Id: ldblib.c,v 1.104.1.3 2008/01/21 13:11:21 roberto Exp $ -** Interface from Lua to its debug API -** See Copyright Notice in lua.h -*/ - - -#include -#include -#include - -#define ldblib_c -#define LUA_LIB - -#include "lua.h" - -#include "lauxlib.h" -#include "lualib.h" - - - -static int db_getregistry (lua_State *L) { - lua_pushvalue(L, LUA_REGISTRYINDEX); - return 1; -} - - -static int db_getmetatable (lua_State *L) { - luaL_checkany(L, 1); - if (!lua_getmetatable(L, 1)) { - lua_pushnil(L); /* no metatable */ - } - return 1; -} - - -static int db_setmetatable (lua_State *L) { - int t = lua_type(L, 2); - luaL_argcheck(L, t == LUA_TNIL || t == LUA_TTABLE, 2, - "nil or table expected"); - lua_settop(L, 2); - lua_pushboolean(L, lua_setmetatable(L, 1)); - return 1; -} - - -static int db_getfenv (lua_State *L) { - lua_getfenv(L, 1); - return 1; -} - - -static int db_setfenv (lua_State *L) { - luaL_checktype(L, 2, LUA_TTABLE); - lua_settop(L, 2); - if (lua_setfenv(L, 1) == 0) - luaL_error(L, LUA_QL("setfenv") - " cannot change environment of given object"); - return 1; -} - - -static void settabss (lua_State *L, const char *i, const char *v) { - lua_pushstring(L, v); - lua_setfield(L, -2, i); -} - - -static void settabsi (lua_State *L, const char *i, int v) { - lua_pushinteger(L, v); - lua_setfield(L, -2, i); -} - - -static lua_State *getthread (lua_State *L, int *arg) { - if (lua_isthread(L, 1)) { - *arg = 1; - return lua_tothread(L, 1); - } - else { - *arg = 0; - return L; - } -} - - -static void treatstackoption (lua_State *L, lua_State *L1, const char *fname) { - if (L == L1) { - lua_pushvalue(L, -2); - lua_remove(L, -3); - } - else - lua_xmove(L1, L, 1); - lua_setfield(L, -2, fname); -} - - -static int db_getinfo (lua_State *L) { - lua_Debug ar; - int arg; - lua_State *L1 = getthread(L, &arg); - const char *options = luaL_optstring(L, arg+2, "flnSu"); - if (lua_isnumber(L, arg+1)) { - if (!lua_getstack(L1, (int)lua_tointeger(L, arg+1), &ar)) { - lua_pushnil(L); /* level out of range */ - return 1; - } - } - else if (lua_isfunction(L, arg+1)) { - lua_pushfstring(L, ">%s", options); - options = lua_tostring(L, -1); - lua_pushvalue(L, arg+1); - lua_xmove(L, L1, 1); - } - else - return luaL_argerror(L, arg+1, "function or level expected"); - if (!lua_getinfo(L1, options, &ar)) - return luaL_argerror(L, arg+2, "invalid option"); - lua_createtable(L, 0, 2); - if (strchr(options, 'S')) { - settabss(L, "source", ar.source); - settabss(L, "short_src", ar.short_src); - settabsi(L, "linedefined", ar.linedefined); - settabsi(L, "lastlinedefined", ar.lastlinedefined); - settabss(L, "what", ar.what); - } - if (strchr(options, 'l')) - settabsi(L, "currentline", ar.currentline); - if (strchr(options, 'u')) - settabsi(L, "nups", ar.nups); - if (strchr(options, 'n')) { - settabss(L, "name", ar.name); - settabss(L, "namewhat", ar.namewhat); - } - if (strchr(options, 'L')) - treatstackoption(L, L1, "activelines"); - if (strchr(options, 'f')) - treatstackoption(L, L1, "func"); - return 1; /* return table */ -} - - -static int db_getlocal (lua_State *L) { - int arg; - lua_State *L1 = getthread(L, &arg); - lua_Debug ar; - const char *name; - if (!lua_getstack(L1, luaL_checkint(L, arg+1), &ar)) /* out of range? */ - return luaL_argerror(L, arg+1, "level out of range"); - name = lua_getlocal(L1, &ar, luaL_checkint(L, arg+2)); - if (name) { - lua_xmove(L1, L, 1); - lua_pushstring(L, name); - lua_pushvalue(L, -2); - return 2; - } - else { - lua_pushnil(L); - return 1; - } -} - - -static int db_setlocal (lua_State *L) { - int arg; - lua_State *L1 = getthread(L, &arg); - lua_Debug ar; - if (!lua_getstack(L1, luaL_checkint(L, arg+1), &ar)) /* out of range? */ - return luaL_argerror(L, arg+1, "level out of range"); - luaL_checkany(L, arg+3); - lua_settop(L, arg+3); - lua_xmove(L, L1, 1); - lua_pushstring(L, lua_setlocal(L1, &ar, luaL_checkint(L, arg+2))); - return 1; -} - - -static int auxupvalue (lua_State *L, int get) { - const char *name; - int n = luaL_checkint(L, 2); - luaL_checktype(L, 1, LUA_TFUNCTION); - if (lua_iscfunction(L, 1)) return 0; /* cannot touch C upvalues from Lua */ - name = get ? lua_getupvalue(L, 1, n) : lua_setupvalue(L, 1, n); - if (name == NULL) return 0; - lua_pushstring(L, name); - lua_insert(L, -(get+1)); - return get + 1; -} - - -static int db_getupvalue (lua_State *L) { - return auxupvalue(L, 1); -} - - -static int db_setupvalue (lua_State *L) { - luaL_checkany(L, 3); - return auxupvalue(L, 0); -} - - - -static const char KEY_HOOK = 'h'; - - -static void hookf (lua_State *L, lua_Debug *ar) { - static const char *const hooknames[] = - {"call", "return", "line", "count", "tail return"}; - lua_pushlightuserdata(L, (void *)&KEY_HOOK); - lua_rawget(L, LUA_REGISTRYINDEX); - lua_pushlightuserdata(L, L); - lua_rawget(L, -2); - if (lua_isfunction(L, -1)) { - lua_pushstring(L, hooknames[(int)ar->event]); - if (ar->currentline >= 0) - lua_pushinteger(L, ar->currentline); - else lua_pushnil(L); - lua_assert(lua_getinfo(L, "lS", ar)); - lua_call(L, 2, 0); - } -} - - -static int makemask (const char *smask, int count) { - int mask = 0; - if (strchr(smask, 'c')) mask |= LUA_MASKCALL; - if (strchr(smask, 'r')) mask |= LUA_MASKRET; - if (strchr(smask, 'l')) mask |= LUA_MASKLINE; - if (count > 0) mask |= LUA_MASKCOUNT; - return mask; -} - - -static char *unmakemask (int mask, char *smask) { - int i = 0; - if (mask & LUA_MASKCALL) smask[i++] = 'c'; - if (mask & LUA_MASKRET) smask[i++] = 'r'; - if (mask & LUA_MASKLINE) smask[i++] = 'l'; - smask[i] = '\0'; - return smask; -} - - -static void gethooktable (lua_State *L) { - lua_pushlightuserdata(L, (void *)&KEY_HOOK); - lua_rawget(L, LUA_REGISTRYINDEX); - if (!lua_istable(L, -1)) { - lua_pop(L, 1); - lua_createtable(L, 0, 1); - lua_pushlightuserdata(L, (void *)&KEY_HOOK); - lua_pushvalue(L, -2); - lua_rawset(L, LUA_REGISTRYINDEX); - } -} - - -static int db_sethook (lua_State *L) { - int arg, mask, count; - lua_Hook func; - lua_State *L1 = getthread(L, &arg); - if (lua_isnoneornil(L, arg+1)) { - lua_settop(L, arg+1); - func = NULL; mask = 0; count = 0; /* turn off hooks */ - } - else { - const char *smask = luaL_checkstring(L, arg+2); - luaL_checktype(L, arg+1, LUA_TFUNCTION); - count = luaL_optint(L, arg+3, 0); - func = hookf; mask = makemask(smask, count); - } - gethooktable(L); - lua_pushlightuserdata(L, L1); - lua_pushvalue(L, arg+1); - lua_rawset(L, -3); /* set new hook */ - lua_pop(L, 1); /* remove hook table */ - lua_sethook(L1, func, mask, count); /* set hooks */ - return 0; -} - - -static int db_gethook (lua_State *L) { - int arg; - lua_State *L1 = getthread(L, &arg); - char buff[5]; - int mask = lua_gethookmask(L1); - lua_Hook hook = lua_gethook(L1); - if (hook != NULL && hook != hookf) /* external hook? */ - lua_pushliteral(L, "external hook"); - else { - gethooktable(L); - lua_pushlightuserdata(L, L1); - lua_rawget(L, -2); /* get hook */ - lua_remove(L, -2); /* remove hook table */ - } - lua_pushstring(L, unmakemask(mask, buff)); - lua_pushinteger(L, lua_gethookcount(L1)); - return 3; -} - - -static int db_debug (lua_State *L) { - for (;;) { - char buffer[250]; - fputs("lua_debug> ", stderr); - if (fgets(buffer, sizeof(buffer), stdin) == 0 || - strcmp(buffer, "cont\n") == 0) - return 0; - if (luaL_loadbuffer(L, buffer, strlen(buffer), "=(debug command)") || - lua_pcall(L, 0, 0, 0)) { - fputs(lua_tostring(L, -1), stderr); - fputs("\n", stderr); - } - lua_settop(L, 0); /* remove eventual returns */ - } -} - - -#define LEVELS1 12 /* size of the first part of the stack */ -#define LEVELS2 10 /* size of the second part of the stack */ - -static int db_errorfb (lua_State *L) { - int level; - int firstpart = 1; /* still before eventual `...' */ - int arg; - lua_State *L1 = getthread(L, &arg); - lua_Debug ar; - if (lua_isnumber(L, arg+2)) { - level = (int)lua_tointeger(L, arg+2); - lua_pop(L, 1); - } - else - level = (L == L1) ? 1 : 0; /* level 0 may be this own function */ - if (lua_gettop(L) == arg) - lua_pushliteral(L, ""); - else if (!lua_isstring(L, arg+1)) return 1; /* message is not a string */ - else lua_pushliteral(L, "\n"); - lua_pushliteral(L, "stack traceback:"); - while (lua_getstack(L1, level++, &ar)) { - if (level > LEVELS1 && firstpart) { - /* no more than `LEVELS2' more levels? */ - if (!lua_getstack(L1, level+LEVELS2, &ar)) - level--; /* keep going */ - else { - lua_pushliteral(L, "\n\t..."); /* too many levels */ - while (lua_getstack(L1, level+LEVELS2, &ar)) /* find last levels */ - level++; - } - firstpart = 0; - continue; - } - lua_pushliteral(L, "\n\t"); - lua_getinfo(L1, "Snl", &ar); - lua_pushfstring(L, "%s:", ar.short_src); - if (ar.currentline > 0) - lua_pushfstring(L, "%d:", ar.currentline); - if (*ar.namewhat != '\0') /* is there a name? */ - lua_pushfstring(L, " in function " LUA_QS, ar.name); - else { - if (*ar.what == 'm') /* main? */ - lua_pushfstring(L, " in main chunk"); - else if (*ar.what == 'C' || *ar.what == 't') - lua_pushliteral(L, " ?"); /* C function or tail call */ - else - lua_pushfstring(L, " in function <%s:%d>", - ar.short_src, ar.linedefined); - } - lua_concat(L, lua_gettop(L) - arg); - } - lua_concat(L, lua_gettop(L) - arg); - return 1; -} - - -static const luaL_Reg dblib[] = { - {"debug", db_debug}, - {"getfenv", db_getfenv}, - {"gethook", db_gethook}, - {"getinfo", db_getinfo}, - {"getlocal", db_getlocal}, - {"getregistry", db_getregistry}, - {"getmetatable", db_getmetatable}, - {"getupvalue", db_getupvalue}, - {"setfenv", db_setfenv}, - {"sethook", db_sethook}, - {"setlocal", db_setlocal}, - {"setmetatable", db_setmetatable}, - {"setupvalue", db_setupvalue}, - {"traceback", db_errorfb}, - {NULL, NULL} -}; - - -LUALIB_API int luaopen_debug (lua_State *L) { - luaL_register(L, LUA_DBLIBNAME, dblib); - return 1; -} - diff --git a/lua/lua/ldebug.c b/lua/lua/ldebug.c deleted file mode 100644 index 50ad3d3803..0000000000 --- a/lua/lua/ldebug.c +++ /dev/null @@ -1,638 +0,0 @@ -/* -** $Id: ldebug.c,v 2.29.1.6 2008/05/08 16:56:26 roberto Exp $ -** Debug Interface -** See Copyright Notice in lua.h -*/ - - -#include -#include -#include - - -#define ldebug_c -#define LUA_CORE - -#include "lua.h" - -#include "lapi.h" -#include "lcode.h" -#include "ldebug.h" -#include "ldo.h" -#include "lfunc.h" -#include "lobject.h" -#include "lopcodes.h" -#include "lstate.h" -#include "lstring.h" -#include "ltable.h" -#include "ltm.h" -#include "lvm.h" - - - -static const char *getfuncname (lua_State *L, CallInfo *ci, const char **name); - - -static int currentpc (lua_State *L, CallInfo *ci) { - if (!isLua(ci)) return -1; /* function is not a Lua function? */ - if (ci == L->ci) - ci->savedpc = L->savedpc; - return pcRel(ci->savedpc, ci_func(ci)->l.p); -} - - -static int currentline (lua_State *L, CallInfo *ci) { - int pc = currentpc(L, ci); - if (pc < 0) - return -1; /* only active lua functions have current-line information */ - else - return getline(ci_func(ci)->l.p, pc); -} - - -/* -** this function can be called asynchronous (e.g. during a signal) -*/ -LUA_API int lua_sethook (lua_State *L, lua_Hook func, int mask, int count) { - if (func == NULL || mask == 0) { /* turn off hooks? */ - mask = 0; - func = NULL; - } - L->hook = func; - L->basehookcount = count; - resethookcount(L); - L->hookmask = cast_byte(mask); - return 1; -} - - -LUA_API lua_Hook lua_gethook (lua_State *L) { - return L->hook; -} - - -LUA_API int lua_gethookmask (lua_State *L) { - return L->hookmask; -} - - -LUA_API int lua_gethookcount (lua_State *L) { - return L->basehookcount; -} - - -LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar) { - int status; - CallInfo *ci; - lua_lock(L); - for (ci = L->ci; level > 0 && ci > L->base_ci; ci--) { - level--; - if (f_isLua(ci)) /* Lua function? */ - level -= ci->tailcalls; /* skip lost tail calls */ - } - if (level == 0 && ci > L->base_ci) { /* level found? */ - status = 1; - ar->i_ci = cast_int(ci - L->base_ci); - } - else if (level < 0) { /* level is of a lost tail call? */ - status = 1; - ar->i_ci = 0; - } - else status = 0; /* no such level */ - lua_unlock(L); - return status; -} - - -static Proto *getluaproto (CallInfo *ci) { - return (isLua(ci) ? ci_func(ci)->l.p : NULL); -} - - -static const char *findlocal (lua_State *L, CallInfo *ci, int n) { - const char *name; - Proto *fp = getluaproto(ci); - if (fp && (name = luaF_getlocalname(fp, n, currentpc(L, ci))) != NULL) - return name; /* is a local variable in a Lua function */ - else { - StkId limit = (ci == L->ci) ? L->top : (ci+1)->func; - if (limit - ci->base >= n && n > 0) /* is 'n' inside 'ci' stack? */ - return "(*temporary)"; - else - return NULL; - } -} - - -LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n) { - CallInfo *ci = L->base_ci + ar->i_ci; - const char *name = findlocal(L, ci, n); - lua_lock(L); - if (name) - luaA_pushobject(L, ci->base + (n - 1)); - lua_unlock(L); - return name; -} - - -LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n) { - CallInfo *ci = L->base_ci + ar->i_ci; - const char *name = findlocal(L, ci, n); - lua_lock(L); - if (name) - setobjs2s(L, ci->base + (n - 1), L->top - 1); - L->top--; /* pop value */ - lua_unlock(L); - return name; -} - - -static void funcinfo (lua_Debug *ar, Closure *cl) { - if (cl->c.isC) { - ar->source = "=[C]"; - ar->linedefined = -1; - ar->lastlinedefined = -1; - ar->what = "C"; - } - else { - ar->source = getstr(cl->l.p->source); - ar->linedefined = cl->l.p->linedefined; - ar->lastlinedefined = cl->l.p->lastlinedefined; - ar->what = (ar->linedefined == 0) ? "main" : "Lua"; - } - luaO_chunkid(ar->short_src, ar->source, LUA_IDSIZE); -} - - -static void info_tailcall (lua_Debug *ar) { - ar->name = ar->namewhat = ""; - ar->what = "tail"; - ar->lastlinedefined = ar->linedefined = ar->currentline = -1; - ar->source = "=(tail call)"; - luaO_chunkid(ar->short_src, ar->source, LUA_IDSIZE); - ar->nups = 0; -} - - -static void collectvalidlines (lua_State *L, Closure *f) { - if (f == NULL || f->c.isC) { - setnilvalue(L->top); - } - else { - Table *t = luaH_new(L, 0, 0); - int *lineinfo = f->l.p->lineinfo; - int i; - for (i=0; il.p->sizelineinfo; i++) - setbvalue(luaH_setnum(L, t, lineinfo[i]), 1); - sethvalue(L, L->top, t); - } - incr_top(L); -} - - -static int auxgetinfo (lua_State *L, const char *what, lua_Debug *ar, - Closure *f, CallInfo *ci) { - int status = 1; - if (f == NULL) { - info_tailcall(ar); - return status; - } - for (; *what; what++) { - switch (*what) { - case 'S': { - funcinfo(ar, f); - break; - } - case 'l': { - ar->currentline = (ci) ? currentline(L, ci) : -1; - break; - } - case 'u': { - ar->nups = f->c.nupvalues; - break; - } - case 'n': { - ar->namewhat = (ci) ? getfuncname(L, ci, &ar->name) : NULL; - if (ar->namewhat == NULL) { - ar->namewhat = ""; /* not found */ - ar->name = NULL; - } - break; - } - case 'L': - case 'f': /* handled by lua_getinfo */ - break; - default: status = 0; /* invalid option */ - } - } - return status; -} - - -LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar) { - int status; - Closure *f = NULL; - CallInfo *ci = NULL; - lua_lock(L); - if (*what == '>') { - StkId func = L->top - 1; - luai_apicheck(L, ttisfunction(func)); - what++; /* skip the '>' */ - f = clvalue(func); - L->top--; /* pop function */ - } - else if (ar->i_ci != 0) { /* no tail call? */ - ci = L->base_ci + ar->i_ci; - lua_assert(ttisfunction(ci->func)); - f = clvalue(ci->func); - } - status = auxgetinfo(L, what, ar, f, ci); - if (strchr(what, 'f')) { - if (f == NULL) setnilvalue(L->top); - else setclvalue(L, L->top, f); - incr_top(L); - } - if (strchr(what, 'L')) - collectvalidlines(L, f); - lua_unlock(L); - return status; -} - - -/* -** {====================================================== -** Symbolic Execution and code checker -** ======================================================= -*/ - -#define check(x) if (!(x)) return 0; - -#define checkjump(pt,pc) check(0 <= pc && pc < pt->sizecode) - -#define checkreg(pt,reg) check((reg) < (pt)->maxstacksize) - - - -static int precheck (const Proto *pt) { - check(pt->maxstacksize <= MAXSTACK); - check(pt->numparams+(pt->is_vararg & VARARG_HASARG) <= pt->maxstacksize); - check(!(pt->is_vararg & VARARG_NEEDSARG) || - (pt->is_vararg & VARARG_HASARG)); - check(pt->sizeupvalues <= pt->nups); - check(pt->sizelineinfo == pt->sizecode || pt->sizelineinfo == 0); - check(pt->sizecode > 0 && GET_OPCODE(pt->code[pt->sizecode-1]) == OP_RETURN); - return 1; -} - - -#define checkopenop(pt,pc) luaG_checkopenop((pt)->code[(pc)+1]) - -int luaG_checkopenop (Instruction i) { - switch (GET_OPCODE(i)) { - case OP_CALL: - case OP_TAILCALL: - case OP_RETURN: - case OP_SETLIST: { - check(GETARG_B(i) == 0); - return 1; - } - default: return 0; /* invalid instruction after an open call */ - } -} - - -static int checkArgMode (const Proto *pt, int r, enum OpArgMask mode) { - switch (mode) { - case OpArgN: check(r == 0); break; - case OpArgU: break; - case OpArgR: checkreg(pt, r); break; - case OpArgK: - check(ISK(r) ? INDEXK(r) < pt->sizek : r < pt->maxstacksize); - break; - } - return 1; -} - - -static Instruction symbexec (const Proto *pt, int lastpc, int reg) { - int pc; - int last; /* stores position of last instruction that changed `reg' */ - last = pt->sizecode-1; /* points to final return (a `neutral' instruction) */ - check(precheck(pt)); - for (pc = 0; pc < lastpc; pc++) { - Instruction i = pt->code[pc]; - OpCode op = GET_OPCODE(i); - int a = GETARG_A(i); - int b = 0; - int c = 0; - check(op < NUM_OPCODES); - checkreg(pt, a); - switch (getOpMode(op)) { - case iABC: { - b = GETARG_B(i); - c = GETARG_C(i); - check(checkArgMode(pt, b, getBMode(op))); - check(checkArgMode(pt, c, getCMode(op))); - break; - } - case iABx: { - b = GETARG_Bx(i); - if (getBMode(op) == OpArgK) check(b < pt->sizek); - break; - } - case iAsBx: { - b = GETARG_sBx(i); - if (getBMode(op) == OpArgR) { - int dest = pc+1+b; - check(0 <= dest && dest < pt->sizecode); - if (dest > 0) { - int j; - /* check that it does not jump to a setlist count; this - is tricky, because the count from a previous setlist may - have the same value of an invalid setlist; so, we must - go all the way back to the first of them (if any) */ - for (j = 0; j < dest; j++) { - Instruction d = pt->code[dest-1-j]; - if (!(GET_OPCODE(d) == OP_SETLIST && GETARG_C(d) == 0)) break; - } - /* if 'j' is even, previous value is not a setlist (even if - it looks like one) */ - check((j&1) == 0); - } - } - break; - } - } - if (testAMode(op)) { - if (a == reg) last = pc; /* change register `a' */ - } - if (testTMode(op)) { - check(pc+2 < pt->sizecode); /* check skip */ - check(GET_OPCODE(pt->code[pc+1]) == OP_JMP); - } - switch (op) { - case OP_LOADBOOL: { - if (c == 1) { /* does it jump? */ - check(pc+2 < pt->sizecode); /* check its jump */ - check(GET_OPCODE(pt->code[pc+1]) != OP_SETLIST || - GETARG_C(pt->code[pc+1]) != 0); - } - break; - } - case OP_LOADNIL: { - if (a <= reg && reg <= b) - last = pc; /* set registers from `a' to `b' */ - break; - } - case OP_GETUPVAL: - case OP_SETUPVAL: { - check(b < pt->nups); - break; - } - case OP_GETGLOBAL: - case OP_SETGLOBAL: { - check(ttisstring(&pt->k[b])); - break; - } - case OP_SELF: { - checkreg(pt, a+1); - if (reg == a+1) last = pc; - break; - } - case OP_CONCAT: { - check(b < c); /* at least two operands */ - break; - } - case OP_TFORLOOP: { - check(c >= 1); /* at least one result (control variable) */ - checkreg(pt, a+2+c); /* space for results */ - if (reg >= a+2) last = pc; /* affect all regs above its base */ - break; - } - case OP_FORLOOP: - case OP_FORPREP: - checkreg(pt, a+3); - /* go through */ - case OP_JMP: { - int dest = pc+1+b; - /* not full check and jump is forward and do not skip `lastpc'? */ - if (reg != NO_REG && pc < dest && dest <= lastpc) - pc += b; /* do the jump */ - break; - } - case OP_CALL: - case OP_TAILCALL: { - if (b != 0) { - checkreg(pt, a+b-1); - } - c--; /* c = num. returns */ - if (c == LUA_MULTRET) { - check(checkopenop(pt, pc)); - } - else if (c != 0) - checkreg(pt, a+c-1); - if (reg >= a) last = pc; /* affect all registers above base */ - break; - } - case OP_RETURN: { - b--; /* b = num. returns */ - if (b > 0) checkreg(pt, a+b-1); - break; - } - case OP_SETLIST: { - if (b > 0) checkreg(pt, a + b); - if (c == 0) { - pc++; - check(pc < pt->sizecode - 1); - } - break; - } - case OP_CLOSURE: { - int nup, j; - check(b < pt->sizep); - nup = pt->p[b]->nups; - check(pc + nup < pt->sizecode); - for (j = 1; j <= nup; j++) { - OpCode op1 = GET_OPCODE(pt->code[pc + j]); - check(op1 == OP_GETUPVAL || op1 == OP_MOVE); - } - if (reg != NO_REG) /* tracing? */ - pc += nup; /* do not 'execute' these pseudo-instructions */ - break; - } - case OP_VARARG: { - check((pt->is_vararg & VARARG_ISVARARG) && - !(pt->is_vararg & VARARG_NEEDSARG)); - b--; - if (b == LUA_MULTRET) check(checkopenop(pt, pc)); - checkreg(pt, a+b-1); - break; - } - default: break; - } - } - return pt->code[last]; -} - -#undef check -#undef checkjump -#undef checkreg - -/* }====================================================== */ - - -int luaG_checkcode (const Proto *pt) { - return (symbexec(pt, pt->sizecode, NO_REG) != 0); -} - - -static const char *kname (Proto *p, int c) { - if (ISK(c) && ttisstring(&p->k[INDEXK(c)])) - return svalue(&p->k[INDEXK(c)]); - else - return "?"; -} - - -static const char *getobjname (lua_State *L, CallInfo *ci, int stackpos, - const char **name) { - if (isLua(ci)) { /* a Lua function? */ - Proto *p = ci_func(ci)->l.p; - int pc = currentpc(L, ci); - Instruction i; - *name = luaF_getlocalname(p, stackpos+1, pc); - if (*name) /* is a local? */ - return "local"; - i = symbexec(p, pc, stackpos); /* try symbolic execution */ - lua_assert(pc != -1); - switch (GET_OPCODE(i)) { - case OP_GETGLOBAL: { - int g = GETARG_Bx(i); /* global index */ - lua_assert(ttisstring(&p->k[g])); - *name = svalue(&p->k[g]); - return "global"; - } - case OP_MOVE: { - int a = GETARG_A(i); - int b = GETARG_B(i); /* move from `b' to `a' */ - if (b < a) - return getobjname(L, ci, b, name); /* get name for `b' */ - break; - } - case OP_GETTABLE: { - int k = GETARG_C(i); /* key index */ - *name = kname(p, k); - return "field"; - } - case OP_GETUPVAL: { - int u = GETARG_B(i); /* upvalue index */ - *name = p->upvalues ? getstr(p->upvalues[u]) : "?"; - return "upvalue"; - } - case OP_SELF: { - int k = GETARG_C(i); /* key index */ - *name = kname(p, k); - return "method"; - } - default: break; - } - } - return NULL; /* no useful name found */ -} - - -static const char *getfuncname (lua_State *L, CallInfo *ci, const char **name) { - Instruction i; - if ((isLua(ci) && ci->tailcalls > 0) || !isLua(ci - 1)) - return NULL; /* calling function is not Lua (or is unknown) */ - ci--; /* calling function */ - i = ci_func(ci)->l.p->code[currentpc(L, ci)]; - if (GET_OPCODE(i) == OP_CALL || GET_OPCODE(i) == OP_TAILCALL || - GET_OPCODE(i) == OP_TFORLOOP) - return getobjname(L, ci, GETARG_A(i), name); - else - return NULL; /* no useful name can be found */ -} - - -/* only ANSI way to check whether a pointer points to an array */ -static int isinstack (CallInfo *ci, const TValue *o) { - StkId p; - for (p = ci->base; p < ci->top; p++) - if (o == p) return 1; - return 0; -} - - -void luaG_typeerror (lua_State *L, const TValue *o, const char *op) { - const char *name = NULL; - const char *t = luaT_typenames[ttype(o)]; - const char *kind = (isinstack(L->ci, o)) ? - getobjname(L, L->ci, cast_int(o - L->base), &name) : - NULL; - if (kind) - luaG_runerror(L, "attempt to %s %s " LUA_QS " (a %s value)", - op, kind, name, t); - else - luaG_runerror(L, "attempt to %s a %s value", op, t); -} - - -void luaG_concaterror (lua_State *L, StkId p1, StkId p2) { - if (ttisstring(p1) || ttisnumber(p1)) p1 = p2; - lua_assert(!ttisstring(p1) && !ttisnumber(p1)); - luaG_typeerror(L, p1, "concatenate"); -} - - -void luaG_aritherror (lua_State *L, const TValue *p1, const TValue *p2) { - TValue temp; - if (luaV_tonumber(p1, &temp) == NULL) - p2 = p1; /* first operand is wrong */ - luaG_typeerror(L, p2, "perform arithmetic on"); -} - - -int luaG_ordererror (lua_State *L, const TValue *p1, const TValue *p2) { - const char *t1 = luaT_typenames[ttype(p1)]; - const char *t2 = luaT_typenames[ttype(p2)]; - if (t1[2] == t2[2]) - luaG_runerror(L, "attempt to compare two %s values", t1); - else - luaG_runerror(L, "attempt to compare %s with %s", t1, t2); - return 0; -} - - -static void addinfo (lua_State *L, const char *msg) { - CallInfo *ci = L->ci; - if (isLua(ci)) { /* is Lua code? */ - char buff[LUA_IDSIZE]; /* add file:line information */ - int line = currentline(L, ci); - luaO_chunkid(buff, getstr(getluaproto(ci)->source), LUA_IDSIZE); - luaO_pushfstring(L, "%s:%d: %s", buff, line, msg); - } -} - - -void luaG_errormsg (lua_State *L) { - if (L->errfunc != 0) { /* is there an error handling function? */ - StkId errfunc = restorestack(L, L->errfunc); - if (!ttisfunction(errfunc)) luaD_throw(L, LUA_ERRERR); - setobjs2s(L, L->top, L->top - 1); /* move argument */ - setobjs2s(L, L->top - 1, errfunc); /* push function */ - incr_top(L); - luaD_call(L, L->top - 2, 1); /* call it */ - } - luaD_throw(L, LUA_ERRRUN); -} - - -void luaG_runerror (lua_State *L, const char *fmt, ...) { - va_list argp; - va_start(argp, fmt); - addinfo(L, luaO_pushvfstring(L, fmt, argp)); - va_end(argp); - luaG_errormsg(L); -} - diff --git a/lua/lua/ldebug.h b/lua/lua/ldebug.h deleted file mode 100644 index ba28a97248..0000000000 --- a/lua/lua/ldebug.h +++ /dev/null @@ -1,33 +0,0 @@ -/* -** $Id: ldebug.h,v 2.3.1.1 2007/12/27 13:02:25 roberto Exp $ -** Auxiliary functions from Debug Interface module -** See Copyright Notice in lua.h -*/ - -#ifndef ldebug_h -#define ldebug_h - - -#include "lstate.h" - - -#define pcRel(pc, p) (cast(int, (pc) - (p)->code) - 1) - -#define getline(f,pc) (((f)->lineinfo) ? (f)->lineinfo[pc] : 0) - -#define resethookcount(L) (L->hookcount = L->basehookcount) - - -LUAI_FUNC void luaG_typeerror (lua_State *L, const TValue *o, - const char *opname); -LUAI_FUNC void luaG_concaterror (lua_State *L, StkId p1, StkId p2); -LUAI_FUNC void luaG_aritherror (lua_State *L, const TValue *p1, - const TValue *p2); -LUAI_FUNC int luaG_ordererror (lua_State *L, const TValue *p1, - const TValue *p2); -LUAI_FUNC void luaG_runerror (lua_State *L, const char *fmt, ...); -LUAI_FUNC void luaG_errormsg (lua_State *L); -LUAI_FUNC int luaG_checkcode (const Proto *pt); -LUAI_FUNC int luaG_checkopenop (Instruction i); - -#endif diff --git a/lua/lua/ldo.c b/lua/lua/ldo.c deleted file mode 100644 index 8de05f728e..0000000000 --- a/lua/lua/ldo.c +++ /dev/null @@ -1,518 +0,0 @@ -/* -** $Id: ldo.c,v 2.38.1.3 2008/01/18 22:31:22 roberto Exp $ -** Stack and Call structure of Lua -** See Copyright Notice in lua.h -*/ - - -#include -#include -#include - -#define ldo_c -#define LUA_CORE - -#include "lua.h" - -#include "ldebug.h" -#include "ldo.h" -#include "lfunc.h" -#include "lgc.h" -#include "lmem.h" -#include "lobject.h" -#include "lopcodes.h" -#include "lparser.h" -#include "lstate.h" -#include "lstring.h" -#include "ltable.h" -#include "ltm.h" -#include "lundump.h" -#include "lvm.h" -#include "lzio.h" - - - - -/* -** {====================================================== -** Error-recovery functions -** ======================================================= -*/ - - -/* chain list of long jump buffers */ -struct lua_longjmp { - struct lua_longjmp *previous; - luai_jmpbuf b; - volatile int status; /* error code */ -}; - - -void luaD_seterrorobj (lua_State *L, int errcode, StkId oldtop) { - switch (errcode) { - case LUA_ERRMEM: { - setsvalue2s(L, oldtop, luaS_newliteral(L, MEMERRMSG)); - break; - } - case LUA_ERRERR: { - setsvalue2s(L, oldtop, luaS_newliteral(L, "error in error handling")); - break; - } - case LUA_ERRSYNTAX: - case LUA_ERRRUN: { - setobjs2s(L, oldtop, L->top - 1); /* error message on current top */ - break; - } - } - L->top = oldtop + 1; -} - - -static void restore_stack_limit (lua_State *L) { - lua_assert(L->stack_last - L->stack == L->stacksize - EXTRA_STACK - 1); - if (L->size_ci > LUAI_MAXCALLS) { /* there was an overflow? */ - int inuse = cast_int(L->ci - L->base_ci); - if (inuse + 1 < LUAI_MAXCALLS) /* can `undo' overflow? */ - luaD_reallocCI(L, LUAI_MAXCALLS); - } -} - - -static void resetstack (lua_State *L, int status) { - L->ci = L->base_ci; - L->base = L->ci->base; - luaF_close(L, L->base); /* close eventual pending closures */ - luaD_seterrorobj(L, status, L->base); - L->nCcalls = L->baseCcalls; - L->allowhook = 1; - restore_stack_limit(L); - L->errfunc = 0; - L->errorJmp = NULL; -} - - -void luaD_throw (lua_State *L, int errcode) { - if (L->errorJmp) { - L->errorJmp->status = errcode; - LUAI_THROW(L, L->errorJmp); - } - else { - L->status = cast_byte(errcode); - if (G(L)->panic) { - resetstack(L, errcode); - lua_unlock(L); - G(L)->panic(L); - } - exit(EXIT_FAILURE); - } -} - - -int luaD_rawrunprotected (lua_State *L, Pfunc f, void *ud) { - struct lua_longjmp lj; - lj.status = 0; - lj.previous = L->errorJmp; /* chain new error handler */ - L->errorJmp = &lj; - LUAI_TRY(L, &lj, - (*f)(L, ud); - ); - L->errorJmp = lj.previous; /* restore old error handler */ - return lj.status; -} - -/* }====================================================== */ - - -static void correctstack (lua_State *L, TValue *oldstack) { - CallInfo *ci; - GCObject *up; - L->top = (L->top - oldstack) + L->stack; - for (up = L->openupval; up != NULL; up = up->gch.next) - gco2uv(up)->v = (gco2uv(up)->v - oldstack) + L->stack; - for (ci = L->base_ci; ci <= L->ci; ci++) { - ci->top = (ci->top - oldstack) + L->stack; - ci->base = (ci->base - oldstack) + L->stack; - ci->func = (ci->func - oldstack) + L->stack; - } - L->base = (L->base - oldstack) + L->stack; -} - - -void luaD_reallocstack (lua_State *L, int newsize) { - TValue *oldstack = L->stack; - int realsize = newsize + 1 + EXTRA_STACK; - lua_assert(L->stack_last - L->stack == L->stacksize - EXTRA_STACK - 1); - luaM_reallocvector(L, L->stack, L->stacksize, realsize, TValue); - L->stacksize = realsize; - L->stack_last = L->stack+newsize; - correctstack(L, oldstack); -} - - -void luaD_reallocCI (lua_State *L, int newsize) { - CallInfo *oldci = L->base_ci; - luaM_reallocvector(L, L->base_ci, L->size_ci, newsize, CallInfo); - L->size_ci = newsize; - L->ci = (L->ci - oldci) + L->base_ci; - L->end_ci = L->base_ci + L->size_ci - 1; -} - - -void luaD_growstack (lua_State *L, int n) { - if (n <= L->stacksize) /* double size is enough? */ - luaD_reallocstack(L, 2*L->stacksize); - else - luaD_reallocstack(L, L->stacksize + n); -} - - -static CallInfo *growCI (lua_State *L) { - if (L->size_ci > LUAI_MAXCALLS) /* overflow while handling overflow? */ - luaD_throw(L, LUA_ERRERR); - else { - luaD_reallocCI(L, 2*L->size_ci); - if (L->size_ci > LUAI_MAXCALLS) - luaG_runerror(L, "stack overflow"); - } - return ++L->ci; -} - - -void luaD_callhook (lua_State *L, int event, int line) { - lua_Hook hook = L->hook; - if (hook && L->allowhook) { - ptrdiff_t top = savestack(L, L->top); - ptrdiff_t ci_top = savestack(L, L->ci->top); - lua_Debug ar; - ar.event = event; - ar.currentline = line; - if (event == LUA_HOOKTAILRET) - ar.i_ci = 0; /* tail call; no debug information about it */ - else - ar.i_ci = cast_int(L->ci - L->base_ci); - luaD_checkstack(L, LUA_MINSTACK); /* ensure minimum stack size */ - L->ci->top = L->top + LUA_MINSTACK; - lua_assert(L->ci->top <= L->stack_last); - L->allowhook = 0; /* cannot call hooks inside a hook */ - lua_unlock(L); - (*hook)(L, &ar); - lua_lock(L); - lua_assert(!L->allowhook); - L->allowhook = 1; - L->ci->top = restorestack(L, ci_top); - L->top = restorestack(L, top); - } -} - - -static StkId adjust_varargs (lua_State *L, Proto *p, int actual) { - int i; - int nfixargs = p->numparams; - Table *htab = NULL; - StkId base, fixed; - for (; actual < nfixargs; ++actual) - setnilvalue(L->top++); -#if defined(LUA_COMPAT_VARARG) - if (p->is_vararg & VARARG_NEEDSARG) { /* compat. with old-style vararg? */ - int nvar = actual - nfixargs; /* number of extra arguments */ - lua_assert(p->is_vararg & VARARG_HASARG); - luaC_checkGC(L); - htab = luaH_new(L, nvar, 1); /* create `arg' table */ - for (i=0; itop - nvar + i); - /* store counter in field `n' */ - setnvalue(luaH_setstr(L, htab, luaS_newliteral(L, "n")), cast_num(nvar)); - } -#endif - /* move fixed parameters to final position */ - fixed = L->top - actual; /* first fixed argument */ - base = L->top; /* final position of first argument */ - for (i=0; itop++, fixed+i); - setnilvalue(fixed+i); - } - /* add `arg' parameter */ - if (htab) { - sethvalue(L, L->top++, htab); - lua_assert(iswhite(obj2gco(htab))); - } - return base; -} - - -static StkId tryfuncTM (lua_State *L, StkId func) { - const TValue *tm = luaT_gettmbyobj(L, func, TM_CALL); - StkId p; - ptrdiff_t funcr = savestack(L, func); - if (!ttisfunction(tm)) - luaG_typeerror(L, func, "call"); - /* Open a hole inside the stack at `func' */ - for (p = L->top; p > func; p--) setobjs2s(L, p, p-1); - incr_top(L); - func = restorestack(L, funcr); /* previous call may change stack */ - setobj2s(L, func, tm); /* tag method is the new function to be called */ - return func; -} - - - -#define inc_ci(L) \ - ((L->ci == L->end_ci) ? growCI(L) : \ - (condhardstacktests(luaD_reallocCI(L, L->size_ci)), ++L->ci)) - - -int luaD_precall (lua_State *L, StkId func, int nresults) { - LClosure *cl; - ptrdiff_t funcr; - if (!ttisfunction(func)) /* `func' is not a function? */ - func = tryfuncTM(L, func); /* check the `function' tag method */ - funcr = savestack(L, func); - cl = &clvalue(func)->l; - L->ci->savedpc = L->savedpc; - if (!cl->isC) { /* Lua function? prepare its call */ - CallInfo *ci; - StkId st, base; - Proto *p = cl->p; - luaD_checkstack(L, p->maxstacksize); - func = restorestack(L, funcr); - if (!p->is_vararg) { /* no varargs? */ - base = func + 1; - if (L->top > base + p->numparams) - L->top = base + p->numparams; - } - else { /* vararg function */ - int nargs = cast_int(L->top - func) - 1; - base = adjust_varargs(L, p, nargs); - func = restorestack(L, funcr); /* previous call may change the stack */ - } - ci = inc_ci(L); /* now `enter' new function */ - ci->func = func; - L->base = ci->base = base; - ci->top = L->base + p->maxstacksize; - lua_assert(ci->top <= L->stack_last); - L->savedpc = p->code; /* starting point */ - ci->tailcalls = 0; - ci->nresults = nresults; - for (st = L->top; st < ci->top; st++) - setnilvalue(st); - L->top = ci->top; - if (L->hookmask & LUA_MASKCALL) { - L->savedpc++; /* hooks assume 'pc' is already incremented */ - luaD_callhook(L, LUA_HOOKCALL, -1); - L->savedpc--; /* correct 'pc' */ - } - return PCRLUA; - } - else { /* if is a C function, call it */ - CallInfo *ci; - int n; - luaD_checkstack(L, LUA_MINSTACK); /* ensure minimum stack size */ - ci = inc_ci(L); /* now `enter' new function */ - ci->func = restorestack(L, funcr); - L->base = ci->base = ci->func + 1; - ci->top = L->top + LUA_MINSTACK; - lua_assert(ci->top <= L->stack_last); - ci->nresults = nresults; - if (L->hookmask & LUA_MASKCALL) - luaD_callhook(L, LUA_HOOKCALL, -1); - lua_unlock(L); - n = (*curr_func(L)->c.f)(L); /* do the actual call */ - lua_lock(L); - if (n < 0) /* yielding? */ - return PCRYIELD; - else { - luaD_poscall(L, L->top - n); - return PCRC; - } - } -} - - -static StkId callrethooks (lua_State *L, StkId firstResult) { - ptrdiff_t fr = savestack(L, firstResult); /* next call may change stack */ - luaD_callhook(L, LUA_HOOKRET, -1); - if (f_isLua(L->ci)) { /* Lua function? */ - while ((L->hookmask & LUA_MASKRET) && L->ci->tailcalls--) /* tail calls */ - luaD_callhook(L, LUA_HOOKTAILRET, -1); - } - return restorestack(L, fr); -} - - -int luaD_poscall (lua_State *L, StkId firstResult) { - StkId res; - int wanted, i; - CallInfo *ci; - if (L->hookmask & LUA_MASKRET) - firstResult = callrethooks(L, firstResult); - ci = L->ci--; - res = ci->func; /* res == final position of 1st result */ - wanted = ci->nresults; - L->base = (ci - 1)->base; /* restore base */ - L->savedpc = (ci - 1)->savedpc; /* restore savedpc */ - /* move results to correct place */ - for (i = wanted; i != 0 && firstResult < L->top; i--) - setobjs2s(L, res++, firstResult++); - while (i-- > 0) - setnilvalue(res++); - L->top = res; - return (wanted - LUA_MULTRET); /* 0 iff wanted == LUA_MULTRET */ -} - - -/* -** Call a function (C or Lua). The function to be called is at *func. -** The arguments are on the stack, right after the function. -** When returns, all the results are on the stack, starting at the original -** function position. -*/ -void luaD_call (lua_State *L, StkId func, int nResults) { - if (++L->nCcalls >= LUAI_MAXCCALLS) { - if (L->nCcalls == LUAI_MAXCCALLS) - luaG_runerror(L, "C stack overflow"); - else if (L->nCcalls >= (LUAI_MAXCCALLS + (LUAI_MAXCCALLS>>3))) - luaD_throw(L, LUA_ERRERR); /* error while handing stack error */ - } - if (luaD_precall(L, func, nResults) == PCRLUA) /* is a Lua function? */ - luaV_execute(L, 1); /* call it */ - L->nCcalls--; - luaC_checkGC(L); -} - - -static void resume (lua_State *L, void *ud) { - StkId firstArg = cast(StkId, ud); - CallInfo *ci = L->ci; - if (L->status == 0) { /* start coroutine? */ - lua_assert(ci == L->base_ci && firstArg > L->base); - if (luaD_precall(L, firstArg - 1, LUA_MULTRET) != PCRLUA) - return; - } - else { /* resuming from previous yield */ - lua_assert(L->status == LUA_YIELD); - L->status = 0; - if (!f_isLua(ci)) { /* `common' yield? */ - /* finish interrupted execution of `OP_CALL' */ - lua_assert(GET_OPCODE(*((ci-1)->savedpc - 1)) == OP_CALL || - GET_OPCODE(*((ci-1)->savedpc - 1)) == OP_TAILCALL); - if (luaD_poscall(L, firstArg)) /* complete it... */ - L->top = L->ci->top; /* and correct top if not multiple results */ - } - else /* yielded inside a hook: just continue its execution */ - L->base = L->ci->base; - } - luaV_execute(L, cast_int(L->ci - L->base_ci)); -} - - -static int resume_error (lua_State *L, const char *msg) { - L->top = L->ci->base; - setsvalue2s(L, L->top, luaS_new(L, msg)); - incr_top(L); - lua_unlock(L); - return LUA_ERRRUN; -} - - -LUA_API int lua_resume (lua_State *L, int nargs) { - int status; - lua_lock(L); - if (L->status != LUA_YIELD && (L->status != 0 || L->ci != L->base_ci)) - return resume_error(L, "cannot resume non-suspended coroutine"); - if (L->nCcalls >= LUAI_MAXCCALLS) - return resume_error(L, "C stack overflow"); - luai_userstateresume(L, nargs); - lua_assert(L->errfunc == 0); - L->baseCcalls = ++L->nCcalls; - status = luaD_rawrunprotected(L, resume, L->top - nargs); - if (status != 0) { /* error? */ - L->status = cast_byte(status); /* mark thread as `dead' */ - luaD_seterrorobj(L, status, L->top); - L->ci->top = L->top; - } - else { - lua_assert(L->nCcalls == L->baseCcalls); - status = L->status; - } - --L->nCcalls; - lua_unlock(L); - return status; -} - - -LUA_API int lua_yield (lua_State *L, int nresults) { - luai_userstateyield(L, nresults); - lua_lock(L); - if (L->nCcalls > L->baseCcalls) - luaG_runerror(L, "attempt to yield across metamethod/C-call boundary"); - L->base = L->top - nresults; /* protect stack slots below */ - L->status = LUA_YIELD; - lua_unlock(L); - return -1; -} - - -int luaD_pcall (lua_State *L, Pfunc func, void *u, - ptrdiff_t old_top, ptrdiff_t ef) { - int status; - unsigned short oldnCcalls = L->nCcalls; - ptrdiff_t old_ci = saveci(L, L->ci); - lu_byte old_allowhooks = L->allowhook; - ptrdiff_t old_errfunc = L->errfunc; - L->errfunc = ef; - status = luaD_rawrunprotected(L, func, u); - if (status != 0) { /* an error occurred? */ - StkId oldtop = restorestack(L, old_top); - luaF_close(L, oldtop); /* close eventual pending closures */ - luaD_seterrorobj(L, status, oldtop); - L->nCcalls = oldnCcalls; - L->ci = restoreci(L, old_ci); - L->base = L->ci->base; - L->savedpc = L->ci->savedpc; - L->allowhook = old_allowhooks; - restore_stack_limit(L); - } - L->errfunc = old_errfunc; - return status; -} - - - -/* -** Execute a protected parser. -*/ -struct SParser { /* data to `f_parser' */ - ZIO *z; - Mbuffer buff; /* buffer to be used by the scanner */ - const char *name; -}; - -static void f_parser (lua_State *L, void *ud) { - int i; - Proto *tf; - Closure *cl; - struct SParser *p = cast(struct SParser *, ud); - int c = luaZ_lookahead(p->z); - luaC_checkGC(L); - tf = ((c == LUA_SIGNATURE[0]) ? luaU_undump : luaY_parser)(L, p->z, - &p->buff, p->name); - cl = luaF_newLclosure(L, tf->nups, hvalue(gt(L))); - cl->l.p = tf; - for (i = 0; i < tf->nups; i++) /* initialize eventual upvalues */ - cl->l.upvals[i] = luaF_newupval(L); - setclvalue(L, L->top, cl); - incr_top(L); -} - - -int luaD_protectedparser (lua_State *L, ZIO *z, const char *name) { - struct SParser p; - int status; - p.z = z; p.name = name; - luaZ_initbuffer(L, &p.buff); - status = luaD_pcall(L, f_parser, &p, savestack(L, L->top), L->errfunc); - luaZ_freebuffer(L, &p.buff); - return status; -} - - diff --git a/lua/lua/ldo.h b/lua/lua/ldo.h deleted file mode 100644 index 98fddac59f..0000000000 --- a/lua/lua/ldo.h +++ /dev/null @@ -1,57 +0,0 @@ -/* -** $Id: ldo.h,v 2.7.1.1 2007/12/27 13:02:25 roberto Exp $ -** Stack and Call structure of Lua -** See Copyright Notice in lua.h -*/ - -#ifndef ldo_h -#define ldo_h - - -#include "lobject.h" -#include "lstate.h" -#include "lzio.h" - - -#define luaD_checkstack(L,n) \ - if ((char *)L->stack_last - (char *)L->top <= (n)*(int)sizeof(TValue)) \ - luaD_growstack(L, n); \ - else condhardstacktests(luaD_reallocstack(L, L->stacksize - EXTRA_STACK - 1)); - - -#define incr_top(L) {luaD_checkstack(L,1); L->top++;} - -#define savestack(L,p) ((char *)(p) - (char *)L->stack) -#define restorestack(L,n) ((TValue *)((char *)L->stack + (n))) - -#define saveci(L,p) ((char *)(p) - (char *)L->base_ci) -#define restoreci(L,n) ((CallInfo *)((char *)L->base_ci + (n))) - - -/* results from luaD_precall */ -#define PCRLUA 0 /* initiated a call to a Lua function */ -#define PCRC 1 /* did a call to a C function */ -#define PCRYIELD 2 /* C funtion yielded */ - - -/* type of protected functions, to be ran by `runprotected' */ -typedef void (*Pfunc) (lua_State *L, void *ud); - -LUAI_FUNC int luaD_protectedparser (lua_State *L, ZIO *z, const char *name); -LUAI_FUNC void luaD_callhook (lua_State *L, int event, int line); -LUAI_FUNC int luaD_precall (lua_State *L, StkId func, int nresults); -LUAI_FUNC void luaD_call (lua_State *L, StkId func, int nResults); -LUAI_FUNC int luaD_pcall (lua_State *L, Pfunc func, void *u, - ptrdiff_t oldtop, ptrdiff_t ef); -LUAI_FUNC int luaD_poscall (lua_State *L, StkId firstResult); -LUAI_FUNC void luaD_reallocCI (lua_State *L, int newsize); -LUAI_FUNC void luaD_reallocstack (lua_State *L, int newsize); -LUAI_FUNC void luaD_growstack (lua_State *L, int n); - -LUAI_FUNC void luaD_throw (lua_State *L, int errcode); -LUAI_FUNC int luaD_rawrunprotected (lua_State *L, Pfunc f, void *ud); - -LUAI_FUNC void luaD_seterrorobj (lua_State *L, int errcode, StkId oldtop); - -#endif - diff --git a/lua/lua/ldump.c b/lua/lua/ldump.c deleted file mode 100644 index c9d3d4870f..0000000000 --- a/lua/lua/ldump.c +++ /dev/null @@ -1,164 +0,0 @@ -/* -** $Id: ldump.c,v 2.8.1.1 2007/12/27 13:02:25 roberto Exp $ -** save precompiled Lua chunks -** See Copyright Notice in lua.h -*/ - -#include - -#define ldump_c -#define LUA_CORE - -#include "lua.h" - -#include "lobject.h" -#include "lstate.h" -#include "lundump.h" - -typedef struct { - lua_State* L; - lua_Writer writer; - void* data; - int strip; - int status; -} DumpState; - -#define DumpMem(b,n,size,D) DumpBlock(b,(n)*(size),D) -#define DumpVar(x,D) DumpMem(&x,1,sizeof(x),D) - -static void DumpBlock(const void* b, size_t size, DumpState* D) -{ - if (D->status==0) - { - lua_unlock(D->L); - D->status=(*D->writer)(D->L,b,size,D->data); - lua_lock(D->L); - } -} - -static void DumpChar(int y, DumpState* D) -{ - char x=(char)y; - DumpVar(x,D); -} - -static void DumpInt(int x, DumpState* D) -{ - DumpVar(x,D); -} - -static void DumpNumber(lua_Number x, DumpState* D) -{ - DumpVar(x,D); -} - -static void DumpVector(const void* b, int n, size_t size, DumpState* D) -{ - DumpInt(n,D); - DumpMem(b,n,size,D); -} - -static void DumpString(const TString* s, DumpState* D) -{ - if (s==NULL || getstr(s)==NULL) - { - size_t size=0; - DumpVar(size,D); - } - else - { - size_t size=s->tsv.len+1; /* include trailing '\0' */ - DumpVar(size,D); - DumpBlock(getstr(s),size,D); - } -} - -#define DumpCode(f,D) DumpVector(f->code,f->sizecode,sizeof(Instruction),D) - -static void DumpFunction(const Proto* f, const TString* p, DumpState* D); - -static void DumpConstants(const Proto* f, DumpState* D) -{ - int i,n=f->sizek; - DumpInt(n,D); - for (i=0; ik[i]; - DumpChar(ttype(o),D); - switch (ttype(o)) - { - case LUA_TNIL: - break; - case LUA_TBOOLEAN: - DumpChar(bvalue(o),D); - break; - case LUA_TNUMBER: - DumpNumber(nvalue(o),D); - break; - case LUA_TSTRING: - DumpString(rawtsvalue(o),D); - break; - default: - lua_assert(0); /* cannot happen */ - break; - } - } - n=f->sizep; - DumpInt(n,D); - for (i=0; ip[i],f->source,D); -} - -static void DumpDebug(const Proto* f, DumpState* D) -{ - int i,n; - n= (D->strip) ? 0 : f->sizelineinfo; - DumpVector(f->lineinfo,n,sizeof(int),D); - n= (D->strip) ? 0 : f->sizelocvars; - DumpInt(n,D); - for (i=0; ilocvars[i].varname,D); - DumpInt(f->locvars[i].startpc,D); - DumpInt(f->locvars[i].endpc,D); - } - n= (D->strip) ? 0 : f->sizeupvalues; - DumpInt(n,D); - for (i=0; iupvalues[i],D); -} - -static void DumpFunction(const Proto* f, const TString* p, DumpState* D) -{ - DumpString((f->source==p || D->strip) ? NULL : f->source,D); - DumpInt(f->linedefined,D); - DumpInt(f->lastlinedefined,D); - DumpChar(f->nups,D); - DumpChar(f->numparams,D); - DumpChar(f->is_vararg,D); - DumpChar(f->maxstacksize,D); - DumpCode(f,D); - DumpConstants(f,D); - DumpDebug(f,D); -} - -static void DumpHeader(DumpState* D) -{ - char h[LUAC_HEADERSIZE]; - luaU_header(h); - DumpBlock(h,LUAC_HEADERSIZE,D); -} - -/* -** dump Lua function as precompiled chunk -*/ -int luaU_dump (lua_State* L, const Proto* f, lua_Writer w, void* data, int strip) -{ - DumpState D; - D.L=L; - D.writer=w; - D.data=data; - D.strip=strip; - D.status=0; - DumpHeader(&D); - DumpFunction(f,NULL,&D); - return D.status; -} diff --git a/lua/lua/lfunc.c b/lua/lua/lfunc.c deleted file mode 100644 index 813e88f583..0000000000 --- a/lua/lua/lfunc.c +++ /dev/null @@ -1,174 +0,0 @@ -/* -** $Id: lfunc.c,v 2.12.1.2 2007/12/28 14:58:43 roberto Exp $ -** Auxiliary functions to manipulate prototypes and closures -** See Copyright Notice in lua.h -*/ - - -#include - -#define lfunc_c -#define LUA_CORE - -#include "lua.h" - -#include "lfunc.h" -#include "lgc.h" -#include "lmem.h" -#include "lobject.h" -#include "lstate.h" - - - -Closure *luaF_newCclosure (lua_State *L, int nelems, Table *e) { - Closure *c = cast(Closure *, luaM_malloc(L, sizeCclosure(nelems))); - luaC_link(L, obj2gco(c), LUA_TFUNCTION); - c->c.isC = 1; - c->c.env = e; - c->c.nupvalues = cast_byte(nelems); - return c; -} - - -Closure *luaF_newLclosure (lua_State *L, int nelems, Table *e) { - Closure *c = cast(Closure *, luaM_malloc(L, sizeLclosure(nelems))); - luaC_link(L, obj2gco(c), LUA_TFUNCTION); - c->l.isC = 0; - c->l.env = e; - c->l.nupvalues = cast_byte(nelems); - while (nelems--) c->l.upvals[nelems] = NULL; - return c; -} - - -UpVal *luaF_newupval (lua_State *L) { - UpVal *uv = luaM_new(L, UpVal); - luaC_link(L, obj2gco(uv), LUA_TUPVAL); - uv->v = &uv->u.value; - setnilvalue(uv->v); - return uv; -} - - -UpVal *luaF_findupval (lua_State *L, StkId level) { - global_State *g = G(L); - GCObject **pp = &L->openupval; - UpVal *p; - UpVal *uv; - while (*pp != NULL && (p = ngcotouv(*pp))->v >= level) { - lua_assert(p->v != &p->u.value); - if (p->v == level) { /* found a corresponding upvalue? */ - if (isdead(g, obj2gco(p))) /* is it dead? */ - changewhite(obj2gco(p)); /* ressurect it */ - return p; - } - pp = &p->next; - } - uv = luaM_new(L, UpVal); /* not found: create a new one */ - uv->tt = LUA_TUPVAL; - uv->marked = luaC_white(g); - uv->v = level; /* current value lives in the stack */ - uv->next = *pp; /* chain it in the proper position */ - *pp = obj2gco(uv); - uv->u.l.prev = &g->uvhead; /* double link it in `uvhead' list */ - uv->u.l.next = g->uvhead.u.l.next; - uv->u.l.next->u.l.prev = uv; - g->uvhead.u.l.next = uv; - lua_assert(uv->u.l.next->u.l.prev == uv && uv->u.l.prev->u.l.next == uv); - return uv; -} - - -static void unlinkupval (UpVal *uv) { - lua_assert(uv->u.l.next->u.l.prev == uv && uv->u.l.prev->u.l.next == uv); - uv->u.l.next->u.l.prev = uv->u.l.prev; /* remove from `uvhead' list */ - uv->u.l.prev->u.l.next = uv->u.l.next; -} - - -void luaF_freeupval (lua_State *L, UpVal *uv) { - if (uv->v != &uv->u.value) /* is it open? */ - unlinkupval(uv); /* remove from open list */ - luaM_free(L, uv); /* free upvalue */ -} - - -void luaF_close (lua_State *L, StkId level) { - UpVal *uv; - global_State *g = G(L); - while (L->openupval != NULL && (uv = ngcotouv(L->openupval))->v >= level) { - GCObject *o = obj2gco(uv); - lua_assert(!isblack(o) && uv->v != &uv->u.value); - L->openupval = uv->next; /* remove from `open' list */ - if (isdead(g, o)) - luaF_freeupval(L, uv); /* free upvalue */ - else { - unlinkupval(uv); - setobj(L, &uv->u.value, uv->v); - uv->v = &uv->u.value; /* now current value lives here */ - luaC_linkupval(L, uv); /* link upvalue into `gcroot' list */ - } - } -} - - -Proto *luaF_newproto (lua_State *L) { - Proto *f = luaM_new(L, Proto); - luaC_link(L, obj2gco(f), LUA_TPROTO); - f->k = NULL; - f->sizek = 0; - f->p = NULL; - f->sizep = 0; - f->code = NULL; - f->sizecode = 0; - f->sizelineinfo = 0; - f->sizeupvalues = 0; - f->nups = 0; - f->upvalues = NULL; - f->numparams = 0; - f->is_vararg = 0; - f->maxstacksize = 0; - f->lineinfo = NULL; - f->sizelocvars = 0; - f->locvars = NULL; - f->linedefined = 0; - f->lastlinedefined = 0; - f->source = NULL; - return f; -} - - -void luaF_freeproto (lua_State *L, Proto *f) { - luaM_freearray(L, f->code, f->sizecode, Instruction); - luaM_freearray(L, f->p, f->sizep, Proto *); - luaM_freearray(L, f->k, f->sizek, TValue); - luaM_freearray(L, f->lineinfo, f->sizelineinfo, int); - luaM_freearray(L, f->locvars, f->sizelocvars, struct LocVar); - luaM_freearray(L, f->upvalues, f->sizeupvalues, TString *); - luaM_free(L, f); -} - - -void luaF_freeclosure (lua_State *L, Closure *c) { - int size = (c->c.isC) ? sizeCclosure(c->c.nupvalues) : - sizeLclosure(c->l.nupvalues); - luaM_freemem(L, c, size); -} - - -/* -** Look for n-th local variable at line `line' in function `func'. -** Returns NULL if not found. -*/ -const char *luaF_getlocalname (const Proto *f, int local_number, int pc) { - int i; - for (i = 0; isizelocvars && f->locvars[i].startpc <= pc; i++) { - if (pc < f->locvars[i].endpc) { /* is variable active? */ - local_number--; - if (local_number == 0) - return getstr(f->locvars[i].varname); - } - } - return NULL; /* not found */ -} - diff --git a/lua/lua/lfunc.h b/lua/lua/lfunc.h deleted file mode 100644 index a68cf5151c..0000000000 --- a/lua/lua/lfunc.h +++ /dev/null @@ -1,34 +0,0 @@ -/* -** $Id: lfunc.h,v 2.4.1.1 2007/12/27 13:02:25 roberto Exp $ -** Auxiliary functions to manipulate prototypes and closures -** See Copyright Notice in lua.h -*/ - -#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))) - - -LUAI_FUNC Proto *luaF_newproto (lua_State *L); -LUAI_FUNC Closure *luaF_newCclosure (lua_State *L, int nelems, Table *e); -LUAI_FUNC Closure *luaF_newLclosure (lua_State *L, int nelems, Table *e); -LUAI_FUNC UpVal *luaF_newupval (lua_State *L); -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 void luaF_freeclosure (lua_State *L, Closure *c); -LUAI_FUNC void luaF_freeupval (lua_State *L, UpVal *uv); -LUAI_FUNC const char *luaF_getlocalname (const Proto *func, int local_number, - int pc); - - -#endif diff --git a/lua/lua/lgc.c b/lua/lua/lgc.c deleted file mode 100644 index d9e0b78294..0000000000 --- a/lua/lua/lgc.c +++ /dev/null @@ -1,711 +0,0 @@ -/* -** $Id: lgc.c,v 2.38.1.1 2007/12/27 13:02:25 roberto Exp $ -** Garbage Collector -** See Copyright Notice in lua.h -*/ - -#include - -#define lgc_c -#define LUA_CORE - -#include "lua.h" - -#include "ldebug.h" -#include "ldo.h" -#include "lfunc.h" -#include "lgc.h" -#include "lmem.h" -#include "lobject.h" -#include "lstate.h" -#include "lstring.h" -#include "ltable.h" -#include "ltm.h" - - -#define GCSTEPSIZE 1024u -#define GCSWEEPMAX 40 -#define GCSWEEPCOST 10 -#define GCFINALIZECOST 100 - - -#define maskmarks cast_byte(~(bitmask(BLACKBIT)|WHITEBITS)) - -#define makewhite(g,x) \ - ((x)->gch.marked = cast_byte(((x)->gch.marked & maskmarks) | luaC_white(g))) - -#define white2gray(x) reset2bits((x)->gch.marked, WHITE0BIT, WHITE1BIT) -#define black2gray(x) resetbit((x)->gch.marked, BLACKBIT) - -#define stringmark(s) reset2bits((s)->tsv.marked, WHITE0BIT, WHITE1BIT) - - -#define isfinalized(u) testbit((u)->marked, FINALIZEDBIT) -#define markfinalized(u) l_setbit((u)->marked, FINALIZEDBIT) - - -#define KEYWEAK bitmask(KEYWEAKBIT) -#define VALUEWEAK bitmask(VALUEWEAKBIT) - - - -#define markvalue(g,o) { checkconsistency(o); \ - if (iscollectable(o) && iswhite(gcvalue(o))) reallymarkobject(g,gcvalue(o)); } - -#define markobject(g,t) { if (iswhite(obj2gco(t))) \ - reallymarkobject(g, obj2gco(t)); } - - -#define setthreshold(g) (g->GCthreshold = (g->estimate/100) * g->gcpause) - - -static void removeentry (Node *n) { - lua_assert(ttisnil(gval(n))); - if (iscollectable(gkey(n))) - setttype(gkey(n), LUA_TDEADKEY); /* dead key; remove it */ -} - - -static void reallymarkobject (global_State *g, GCObject *o) { - lua_assert(iswhite(o) && !isdead(g, o)); - white2gray(o); - switch (o->gch.tt) { - case LUA_TSTRING: { - return; - } - case LUA_TUSERDATA: { - Table *mt = gco2u(o)->metatable; - gray2black(o); /* udata are never gray */ - if (mt) markobject(g, mt); - markobject(g, gco2u(o)->env); - return; - } - case LUA_TUPVAL: { - UpVal *uv = gco2uv(o); - markvalue(g, uv->v); - if (uv->v == &uv->u.value) /* closed? */ - gray2black(o); /* open upvalues are never black */ - return; - } - case LUA_TFUNCTION: { - gco2cl(o)->c.gclist = g->gray; - g->gray = o; - break; - } - case LUA_TTABLE: { - gco2h(o)->gclist = g->gray; - g->gray = o; - break; - } - case LUA_TTHREAD: { - gco2th(o)->gclist = g->gray; - g->gray = o; - break; - } - case LUA_TPROTO: { - gco2p(o)->gclist = g->gray; - g->gray = o; - break; - } - default: lua_assert(0); - } -} - - -static void marktmu (global_State *g) { - GCObject *u = g->tmudata; - if (u) { - do { - u = u->gch.next; - makewhite(g, u); /* may be marked, if left from previous GC */ - reallymarkobject(g, u); - } while (u != g->tmudata); - } -} - - -/* move `dead' udata that need finalization to list `tmudata' */ -size_t luaC_separateudata (lua_State *L, int all) { - global_State *g = G(L); - size_t deadmem = 0; - GCObject **p = &g->mainthread->next; - GCObject *curr; - while ((curr = *p) != NULL) { - if (!(iswhite(curr) || all) || isfinalized(gco2u(curr))) - p = &curr->gch.next; /* don't bother with them */ - else if (fasttm(L, gco2u(curr)->metatable, TM_GC) == NULL) { - markfinalized(gco2u(curr)); /* don't need finalization */ - p = &curr->gch.next; - } - else { /* must call its gc method */ - deadmem += sizeudata(gco2u(curr)); - markfinalized(gco2u(curr)); - *p = curr->gch.next; - /* link `curr' at the end of `tmudata' list */ - if (g->tmudata == NULL) /* list is empty? */ - g->tmudata = curr->gch.next = curr; /* creates a circular list */ - else { - curr->gch.next = g->tmudata->gch.next; - g->tmudata->gch.next = curr; - g->tmudata = curr; - } - } - } - return deadmem; -} - - -static int traversetable (global_State *g, Table *h) { - int i; - int weakkey = 0; - int weakvalue = 0; - const TValue *mode; - if (h->metatable) - markobject(g, h->metatable); - mode = gfasttm(g, h->metatable, TM_MODE); - if (mode && ttisstring(mode)) { /* is there a weak mode? */ - weakkey = (strchr(svalue(mode), 'k') != NULL); - weakvalue = (strchr(svalue(mode), 'v') != NULL); - if (weakkey || weakvalue) { /* is really weak? */ - h->marked &= ~(KEYWEAK | VALUEWEAK); /* clear bits */ - h->marked |= cast_byte((weakkey << KEYWEAKBIT) | - (weakvalue << VALUEWEAKBIT)); - h->gclist = g->weak; /* must be cleared after GC, ... */ - g->weak = obj2gco(h); /* ... so put in the appropriate list */ - } - } - if (weakkey && weakvalue) return 1; - if (!weakvalue) { - i = h->sizearray; - while (i--) - markvalue(g, &h->array[i]); - } - i = sizenode(h); - while (i--) { - Node *n = gnode(h, i); - lua_assert(ttype(gkey(n)) != LUA_TDEADKEY || ttisnil(gval(n))); - if (ttisnil(gval(n))) - removeentry(n); /* remove empty entries */ - else { - lua_assert(!ttisnil(gkey(n))); - if (!weakkey) markvalue(g, gkey(n)); - if (!weakvalue) markvalue(g, gval(n)); - } - } - return weakkey || weakvalue; -} - - -/* -** All marks are conditional because a GC may happen while the -** prototype is still being created -*/ -static void traverseproto (global_State *g, Proto *f) { - int i; - if (f->source) stringmark(f->source); - for (i=0; isizek; i++) /* mark literals */ - markvalue(g, &f->k[i]); - for (i=0; isizeupvalues; i++) { /* mark upvalue names */ - if (f->upvalues[i]) - stringmark(f->upvalues[i]); - } - for (i=0; isizep; i++) { /* mark nested protos */ - if (f->p[i]) - markobject(g, f->p[i]); - } - for (i=0; isizelocvars; i++) { /* mark local-variable names */ - if (f->locvars[i].varname) - stringmark(f->locvars[i].varname); - } -} - - - -static void traverseclosure (global_State *g, Closure *cl) { - markobject(g, cl->c.env); - if (cl->c.isC) { - int i; - for (i=0; ic.nupvalues; i++) /* mark its upvalues */ - markvalue(g, &cl->c.upvalue[i]); - } - else { - int i; - lua_assert(cl->l.nupvalues == cl->l.p->nups); - markobject(g, cl->l.p); - for (i=0; il.nupvalues; i++) /* mark its upvalues */ - markobject(g, cl->l.upvals[i]); - } -} - - -static void checkstacksizes (lua_State *L, StkId max) { - int ci_used = cast_int(L->ci - L->base_ci); /* number of `ci' in use */ - int s_used = cast_int(max - L->stack); /* part of stack in use */ - if (L->size_ci > LUAI_MAXCALLS) /* handling overflow? */ - return; /* do not touch the stacks */ - if (4*ci_used < L->size_ci && 2*BASIC_CI_SIZE < L->size_ci) - luaD_reallocCI(L, L->size_ci/2); /* still big enough... */ - condhardstacktests(luaD_reallocCI(L, ci_used + 1)); - if (4*s_used < L->stacksize && - 2*(BASIC_STACK_SIZE+EXTRA_STACK) < L->stacksize) - luaD_reallocstack(L, L->stacksize/2); /* still big enough... */ - condhardstacktests(luaD_reallocstack(L, s_used)); -} - - -static void traversestack (global_State *g, lua_State *l) { - StkId o, lim; - CallInfo *ci; - markvalue(g, gt(l)); - lim = l->top; - for (ci = l->base_ci; ci <= l->ci; ci++) { - lua_assert(ci->top <= l->stack_last); - if (lim < ci->top) lim = ci->top; - } - for (o = l->stack; o < l->top; o++) - markvalue(g, o); - for (; o <= lim; o++) - setnilvalue(o); - checkstacksizes(l, lim); -} - - -/* -** traverse one gray object, turning it to black. -** Returns `quantity' traversed. -*/ -static l_mem propagatemark (global_State *g) { - GCObject *o = g->gray; - lua_assert(isgray(o)); - gray2black(o); - switch (o->gch.tt) { - case LUA_TTABLE: { - Table *h = gco2h(o); - g->gray = h->gclist; - if (traversetable(g, h)) /* table is weak? */ - black2gray(o); /* keep it gray */ - return sizeof(Table) + sizeof(TValue) * h->sizearray + - sizeof(Node) * sizenode(h); - } - case LUA_TFUNCTION: { - Closure *cl = gco2cl(o); - g->gray = cl->c.gclist; - traverseclosure(g, cl); - return (cl->c.isC) ? sizeCclosure(cl->c.nupvalues) : - sizeLclosure(cl->l.nupvalues); - } - case LUA_TTHREAD: { - lua_State *th = gco2th(o); - g->gray = th->gclist; - th->gclist = g->grayagain; - g->grayagain = o; - black2gray(o); - traversestack(g, th); - return sizeof(lua_State) + sizeof(TValue) * th->stacksize + - sizeof(CallInfo) * th->size_ci; - } - case LUA_TPROTO: { - Proto *p = gco2p(o); - g->gray = p->gclist; - traverseproto(g, p); - return sizeof(Proto) + sizeof(Instruction) * p->sizecode + - sizeof(Proto *) * p->sizep + - sizeof(TValue) * p->sizek + - sizeof(int) * p->sizelineinfo + - sizeof(LocVar) * p->sizelocvars + - sizeof(TString *) * p->sizeupvalues; - } - default: lua_assert(0); return 0; - } -} - - -static size_t propagateall (global_State *g) { - size_t m = 0; - while (g->gray) m += propagatemark(g); - return m; -} - - -/* -** The next function tells whether a key or value can be cleared from -** a weak table. Non-collectable objects are never removed from weak -** tables. Strings behave as `values', so are never removed too. for -** other objects: if really collected, cannot keep them; for userdata -** being finalized, keep them in keys, but not in values -*/ -static int iscleared (const TValue *o, int iskey) { - if (!iscollectable(o)) return 0; - if (ttisstring(o)) { - stringmark(rawtsvalue(o)); /* strings are `values', so are never weak */ - return 0; - } - return iswhite(gcvalue(o)) || - (ttisuserdata(o) && (!iskey && isfinalized(uvalue(o)))); -} - - -/* -** clear collected entries from weaktables -*/ -static void cleartable (GCObject *l) { - while (l) { - Table *h = gco2h(l); - int i = h->sizearray; - lua_assert(testbit(h->marked, VALUEWEAKBIT) || - testbit(h->marked, KEYWEAKBIT)); - if (testbit(h->marked, VALUEWEAKBIT)) { - while (i--) { - TValue *o = &h->array[i]; - if (iscleared(o, 0)) /* value was collected? */ - setnilvalue(o); /* remove value */ - } - } - i = sizenode(h); - while (i--) { - Node *n = gnode(h, i); - if (!ttisnil(gval(n)) && /* non-empty entry? */ - (iscleared(key2tval(n), 1) || iscleared(gval(n), 0))) { - setnilvalue(gval(n)); /* remove value ... */ - removeentry(n); /* remove entry from table */ - } - } - l = h->gclist; - } -} - - -static void freeobj (lua_State *L, GCObject *o) { - switch (o->gch.tt) { - case LUA_TPROTO: luaF_freeproto(L, gco2p(o)); break; - case LUA_TFUNCTION: luaF_freeclosure(L, gco2cl(o)); break; - case LUA_TUPVAL: luaF_freeupval(L, gco2uv(o)); break; - case LUA_TTABLE: luaH_free(L, gco2h(o)); break; - case LUA_TTHREAD: { - lua_assert(gco2th(o) != L && gco2th(o) != G(L)->mainthread); - luaE_freethread(L, gco2th(o)); - break; - } - case LUA_TSTRING: { - G(L)->strt.nuse--; - luaM_freemem(L, o, sizestring(gco2ts(o))); - break; - } - case LUA_TUSERDATA: { - luaM_freemem(L, o, sizeudata(gco2u(o))); - break; - } - default: lua_assert(0); - } -} - - - -#define sweepwholelist(L,p) sweeplist(L,p,MAX_LUMEM) - - -static GCObject **sweeplist (lua_State *L, GCObject **p, lu_mem count) { - GCObject *curr; - global_State *g = G(L); - int deadmask = otherwhite(g); - while ((curr = *p) != NULL && count-- > 0) { - if (curr->gch.tt == LUA_TTHREAD) /* sweep open upvalues of each thread */ - sweepwholelist(L, &gco2th(curr)->openupval); - if ((curr->gch.marked ^ WHITEBITS) & deadmask) { /* not dead? */ - lua_assert(!isdead(g, curr) || testbit(curr->gch.marked, FIXEDBIT)); - makewhite(g, curr); /* make it white (for next cycle) */ - p = &curr->gch.next; - } - else { /* must erase `curr' */ - lua_assert(isdead(g, curr) || deadmask == bitmask(SFIXEDBIT)); - *p = curr->gch.next; - if (curr == g->rootgc) /* is the first element of the list? */ - g->rootgc = curr->gch.next; /* adjust first */ - freeobj(L, curr); - } - } - return p; -} - - -static void checkSizes (lua_State *L) { - global_State *g = G(L); - /* check size of string hash */ - if (g->strt.nuse < cast(lu_int32, g->strt.size/4) && - g->strt.size > MINSTRTABSIZE*2) - luaS_resize(L, g->strt.size/2); /* table is too big */ - /* check size of buffer */ - if (luaZ_sizebuffer(&g->buff) > LUA_MINBUFFER*2) { /* buffer too big? */ - size_t newsize = luaZ_sizebuffer(&g->buff) / 2; - luaZ_resizebuffer(L, &g->buff, newsize); - } -} - - -static void GCTM (lua_State *L) { - global_State *g = G(L); - GCObject *o = g->tmudata->gch.next; /* get first element */ - Udata *udata = rawgco2u(o); - const TValue *tm; - /* remove udata from `tmudata' */ - if (o == g->tmudata) /* last element? */ - g->tmudata = NULL; - else - g->tmudata->gch.next = udata->uv.next; - udata->uv.next = g->mainthread->next; /* return it to `root' list */ - g->mainthread->next = o; - makewhite(g, o); - tm = fasttm(L, udata->uv.metatable, TM_GC); - if (tm != NULL) { - lu_byte oldah = L->allowhook; - lu_mem oldt = g->GCthreshold; - L->allowhook = 0; /* stop debug hooks during GC tag method */ - g->GCthreshold = 2*g->totalbytes; /* avoid GC steps */ - setobj2s(L, L->top, tm); - setuvalue(L, L->top+1, udata); - L->top += 2; - luaD_call(L, L->top - 2, 0); - L->allowhook = oldah; /* restore hooks */ - g->GCthreshold = oldt; /* restore threshold */ - } -} - - -/* -** Call all GC tag methods -*/ -void luaC_callGCTM (lua_State *L) { - while (G(L)->tmudata) - GCTM(L); -} - - -void luaC_freeall (lua_State *L) { - global_State *g = G(L); - int i; - g->currentwhite = WHITEBITS | bitmask(SFIXEDBIT); /* mask to collect all elements */ - sweepwholelist(L, &g->rootgc); - for (i = 0; i < g->strt.size; i++) /* free all string lists */ - sweepwholelist(L, &g->strt.hash[i]); -} - - -static void markmt (global_State *g) { - int i; - for (i=0; imt[i]) markobject(g, g->mt[i]); -} - - -/* mark root set */ -static void markroot (lua_State *L) { - global_State *g = G(L); - g->gray = NULL; - g->grayagain = NULL; - g->weak = NULL; - markobject(g, g->mainthread); - /* make global table be traversed before main stack */ - markvalue(g, gt(g->mainthread)); - markvalue(g, registry(L)); - markmt(g); - g->gcstate = GCSpropagate; -} - - -static void remarkupvals (global_State *g) { - UpVal *uv; - for (uv = g->uvhead.u.l.next; uv != &g->uvhead; uv = uv->u.l.next) { - lua_assert(uv->u.l.next->u.l.prev == uv && uv->u.l.prev->u.l.next == uv); - if (isgray(obj2gco(uv))) - markvalue(g, uv->v); - } -} - - -static void atomic (lua_State *L) { - global_State *g = G(L); - size_t udsize; /* total size of userdata to be finalized */ - /* remark occasional upvalues of (maybe) dead threads */ - remarkupvals(g); - /* traverse objects cautch by write barrier and by 'remarkupvals' */ - propagateall(g); - /* remark weak tables */ - g->gray = g->weak; - g->weak = NULL; - lua_assert(!iswhite(obj2gco(g->mainthread))); - markobject(g, L); /* mark running thread */ - markmt(g); /* mark basic metatables (again) */ - propagateall(g); - /* remark gray again */ - g->gray = g->grayagain; - g->grayagain = NULL; - propagateall(g); - udsize = luaC_separateudata(L, 0); /* separate userdata to be finalized */ - marktmu(g); /* mark `preserved' userdata */ - udsize += propagateall(g); /* remark, to propagate `preserveness' */ - cleartable(g->weak); /* remove collected objects from weak tables */ - /* flip current white */ - g->currentwhite = cast_byte(otherwhite(g)); - g->sweepstrgc = 0; - g->sweepgc = &g->rootgc; - g->gcstate = GCSsweepstring; - g->estimate = g->totalbytes - udsize; /* first estimate */ -} - - -static l_mem singlestep (lua_State *L) { - global_State *g = G(L); - /*lua_checkmemory(L);*/ - switch (g->gcstate) { - case GCSpause: { - markroot(L); /* start a new collection */ - return 0; - } - case GCSpropagate: { - if (g->gray) - return propagatemark(g); - else { /* no more `gray' objects */ - atomic(L); /* finish mark phase */ - return 0; - } - } - case GCSsweepstring: { - lu_mem old = g->totalbytes; - sweepwholelist(L, &g->strt.hash[g->sweepstrgc++]); - if (g->sweepstrgc >= g->strt.size) /* nothing more to sweep? */ - g->gcstate = GCSsweep; /* end sweep-string phase */ - lua_assert(old >= g->totalbytes); - g->estimate -= old - g->totalbytes; - return GCSWEEPCOST; - } - case GCSsweep: { - lu_mem old = g->totalbytes; - g->sweepgc = sweeplist(L, g->sweepgc, GCSWEEPMAX); - if (*g->sweepgc == NULL) { /* nothing more to sweep? */ - checkSizes(L); - g->gcstate = GCSfinalize; /* end sweep phase */ - } - lua_assert(old >= g->totalbytes); - g->estimate -= old - g->totalbytes; - return GCSWEEPMAX*GCSWEEPCOST; - } - case GCSfinalize: { - if (g->tmudata) { - GCTM(L); - if (g->estimate > GCFINALIZECOST) - g->estimate -= GCFINALIZECOST; - return GCFINALIZECOST; - } - else { - g->gcstate = GCSpause; /* end collection */ - g->gcdept = 0; - return 0; - } - } - default: lua_assert(0); return 0; - } -} - - -void luaC_step (lua_State *L) { - global_State *g = G(L); - l_mem lim = (GCSTEPSIZE/100) * g->gcstepmul; - if (lim == 0) - lim = (MAX_LUMEM-1)/2; /* no limit */ - g->gcdept += g->totalbytes - g->GCthreshold; - do { - lim -= singlestep(L); - if (g->gcstate == GCSpause) - break; - } while (lim > 0); - if (g->gcstate != GCSpause) { - if (g->gcdept < GCSTEPSIZE) - g->GCthreshold = g->totalbytes + GCSTEPSIZE; /* - lim/g->gcstepmul;*/ - else { - g->gcdept -= GCSTEPSIZE; - g->GCthreshold = g->totalbytes; - } - } - else { - lua_assert(g->totalbytes >= g->estimate); - setthreshold(g); - } -} - - -void luaC_fullgc (lua_State *L) { - global_State *g = G(L); - if (g->gcstate <= GCSpropagate) { - /* reset sweep marks to sweep all elements (returning them to white) */ - g->sweepstrgc = 0; - g->sweepgc = &g->rootgc; - /* reset other collector lists */ - g->gray = NULL; - g->grayagain = NULL; - g->weak = NULL; - g->gcstate = GCSsweepstring; - } - lua_assert(g->gcstate != GCSpause && g->gcstate != GCSpropagate); - /* finish any pending sweep phase */ - while (g->gcstate != GCSfinalize) { - lua_assert(g->gcstate == GCSsweepstring || g->gcstate == GCSsweep); - singlestep(L); - } - markroot(L); - while (g->gcstate != GCSpause) { - singlestep(L); - } - setthreshold(g); -} - - -void luaC_barrierf (lua_State *L, GCObject *o, GCObject *v) { - global_State *g = G(L); - lua_assert(isblack(o) && iswhite(v) && !isdead(g, v) && !isdead(g, o)); - lua_assert(g->gcstate != GCSfinalize && g->gcstate != GCSpause); - lua_assert(ttype(&o->gch) != LUA_TTABLE); - /* must keep invariant? */ - if (g->gcstate == GCSpropagate) - reallymarkobject(g, v); /* restore invariant */ - else /* don't mind */ - makewhite(g, o); /* mark as white just to avoid other barriers */ -} - - -void luaC_barrierback (lua_State *L, Table *t) { - global_State *g = G(L); - GCObject *o = obj2gco(t); - lua_assert(isblack(o) && !isdead(g, o)); - lua_assert(g->gcstate != GCSfinalize && g->gcstate != GCSpause); - black2gray(o); /* make table gray (again) */ - t->gclist = g->grayagain; - g->grayagain = o; -} - - -void luaC_link (lua_State *L, GCObject *o, lu_byte tt) { - global_State *g = G(L); - o->gch.next = g->rootgc; - g->rootgc = o; - o->gch.marked = luaC_white(g); - o->gch.tt = tt; -} - - -void luaC_linkupval (lua_State *L, UpVal *uv) { - global_State *g = G(L); - GCObject *o = obj2gco(uv); - o->gch.next = g->rootgc; /* link upvalue into `rootgc' list */ - g->rootgc = o; - if (isgray(o)) { - if (g->gcstate == GCSpropagate) { - gray2black(o); /* closed upvalues need barrier */ - luaC_barrier(L, uv, uv->v); - } - else { /* sweep phase: sweep it (turning it into white) */ - makewhite(g, o); - lua_assert(g->gcstate != GCSfinalize && g->gcstate != GCSpause); - } - } -} - diff --git a/lua/lua/lgc.h b/lua/lua/lgc.h deleted file mode 100644 index 5a8dc605b3..0000000000 --- a/lua/lua/lgc.h +++ /dev/null @@ -1,110 +0,0 @@ -/* -** $Id: lgc.h,v 2.15.1.1 2007/12/27 13:02:25 roberto Exp $ -** Garbage Collector -** See Copyright Notice in lua.h -*/ - -#ifndef lgc_h -#define lgc_h - - -#include "lobject.h" - - -/* -** Possible states of the Garbage Collector -*/ -#define GCSpause 0 -#define GCSpropagate 1 -#define GCSsweepstring 2 -#define GCSsweep 3 -#define GCSfinalize 4 - - -/* -** some userful bit tricks -*/ -#define resetbits(x,m) ((x) &= cast(lu_byte, ~(m))) -#define setbits(x,m) ((x) |= (m)) -#define testbits(x,m) ((x) & (m)) -#define bitmask(b) (1<<(b)) -#define bit2mask(b1,b2) (bitmask(b1) | bitmask(b2)) -#define l_setbit(x,b) setbits(x, bitmask(b)) -#define resetbit(x,b) resetbits(x, bitmask(b)) -#define testbit(x,b) testbits(x, bitmask(b)) -#define set2bits(x,b1,b2) setbits(x, (bit2mask(b1, b2))) -#define reset2bits(x,b1,b2) resetbits(x, (bit2mask(b1, b2))) -#define test2bits(x,b1,b2) testbits(x, (bit2mask(b1, b2))) - - - -/* -** Layout for bit use in `marked' field: -** bit 0 - object is white (type 0) -** bit 1 - object is white (type 1) -** bit 2 - object is black -** bit 3 - for userdata: has been finalized -** bit 3 - for tables: has weak keys -** bit 4 - for tables: has weak values -** bit 5 - object is fixed (should not be collected) -** bit 6 - object is "super" fixed (only the main thread) -*/ - - -#define WHITE0BIT 0 -#define WHITE1BIT 1 -#define BLACKBIT 2 -#define FINALIZEDBIT 3 -#define KEYWEAKBIT 3 -#define VALUEWEAKBIT 4 -#define FIXEDBIT 5 -#define SFIXEDBIT 6 -#define WHITEBITS bit2mask(WHITE0BIT, WHITE1BIT) - - -#define iswhite(x) test2bits((x)->gch.marked, WHITE0BIT, WHITE1BIT) -#define isblack(x) testbit((x)->gch.marked, BLACKBIT) -#define isgray(x) (!isblack(x) && !iswhite(x)) - -#define otherwhite(g) (g->currentwhite ^ WHITEBITS) -#define isdead(g,v) ((v)->gch.marked & otherwhite(g) & WHITEBITS) - -#define changewhite(x) ((x)->gch.marked ^= WHITEBITS) -#define gray2black(x) l_setbit((x)->gch.marked, BLACKBIT) - -#define valiswhite(x) (iscollectable(x) && iswhite(gcvalue(x))) - -#define luaC_white(g) cast(lu_byte, (g)->currentwhite & WHITEBITS) - - -#define luaC_checkGC(L) { \ - condhardstacktests(luaD_reallocstack(L, L->stacksize - EXTRA_STACK - 1)); \ - if (G(L)->totalbytes >= G(L)->GCthreshold) \ - luaC_step(L); } - - -#define luaC_barrier(L,p,v) { if (valiswhite(v) && isblack(obj2gco(p))) \ - luaC_barrierf(L,obj2gco(p),gcvalue(v)); } - -#define luaC_barriert(L,t,v) { if (valiswhite(v) && isblack(obj2gco(t))) \ - luaC_barrierback(L,t); } - -#define luaC_objbarrier(L,p,o) \ - { if (iswhite(obj2gco(o)) && isblack(obj2gco(p))) \ - luaC_barrierf(L,obj2gco(p),obj2gco(o)); } - -#define luaC_objbarriert(L,t,o) \ - { if (iswhite(obj2gco(o)) && isblack(obj2gco(t))) luaC_barrierback(L,t); } - -LUAI_FUNC size_t luaC_separateudata (lua_State *L, int all); -LUAI_FUNC void luaC_callGCTM (lua_State *L); -LUAI_FUNC void luaC_freeall (lua_State *L); -LUAI_FUNC void luaC_step (lua_State *L); -LUAI_FUNC void luaC_fullgc (lua_State *L); -LUAI_FUNC void luaC_link (lua_State *L, GCObject *o, lu_byte tt); -LUAI_FUNC void luaC_linkupval (lua_State *L, UpVal *uv); -LUAI_FUNC void luaC_barrierf (lua_State *L, GCObject *o, GCObject *v); -LUAI_FUNC void luaC_barrierback (lua_State *L, Table *t); - - -#endif diff --git a/lua/lua/linit.c b/lua/lua/linit.c deleted file mode 100644 index c1f90dfab7..0000000000 --- a/lua/lua/linit.c +++ /dev/null @@ -1,38 +0,0 @@ -/* -** $Id: linit.c,v 1.14.1.1 2007/12/27 13:02:25 roberto Exp $ -** Initialization of libraries for lua.c -** See Copyright Notice in lua.h -*/ - - -#define linit_c -#define LUA_LIB - -#include "lua.h" - -#include "lualib.h" -#include "lauxlib.h" - - -static const luaL_Reg lualibs[] = { - {"", luaopen_base}, - {LUA_LOADLIBNAME, luaopen_package}, - {LUA_TABLIBNAME, luaopen_table}, - {LUA_IOLIBNAME, luaopen_io}, - {LUA_OSLIBNAME, luaopen_os}, - {LUA_STRLIBNAME, luaopen_string}, - {LUA_MATHLIBNAME, luaopen_math}, - {LUA_DBLIBNAME, luaopen_debug}, - {NULL, NULL} -}; - - -LUALIB_API void luaL_openlibs (lua_State *L) { - const luaL_Reg *lib = lualibs; - for (; lib->func; lib++) { - lua_pushcfunction(L, lib->func); - lua_pushstring(L, lib->name); - lua_call(L, 1, 0); - } -} - diff --git a/lua/lua/liolib.c b/lua/lua/liolib.c deleted file mode 100644 index e79ed1cb2e..0000000000 --- a/lua/lua/liolib.c +++ /dev/null @@ -1,553 +0,0 @@ -/* -** $Id: liolib.c,v 2.73.1.3 2008/01/18 17:47:43 roberto Exp $ -** Standard I/O (and system) library -** See Copyright Notice in lua.h -*/ - - -#include -#include -#include -#include - -#define liolib_c -#define LUA_LIB - -#include "lua.h" - -#include "lauxlib.h" -#include "lualib.h" - - - -#define IO_INPUT 1 -#define IO_OUTPUT 2 - - -static const char *const fnames[] = {"input", "output"}; - - -static int pushresult (lua_State *L, int i, const char *filename) { - int en = errno; /* calls to Lua API may change this value */ - if (i) { - lua_pushboolean(L, 1); - return 1; - } - else { - lua_pushnil(L); - if (filename) - lua_pushfstring(L, "%s: %s", filename, strerror(en)); - else - lua_pushfstring(L, "%s", strerror(en)); - lua_pushinteger(L, en); - return 3; - } -} - - -static void fileerror (lua_State *L, int arg, const char *filename) { - lua_pushfstring(L, "%s: %s", filename, strerror(errno)); - luaL_argerror(L, arg, lua_tostring(L, -1)); -} - - -#define tofilep(L) ((FILE **)luaL_checkudata(L, 1, LUA_FILEHANDLE)) - - -static int io_type (lua_State *L) { - void *ud; - luaL_checkany(L, 1); - ud = lua_touserdata(L, 1); - lua_getfield(L, LUA_REGISTRYINDEX, LUA_FILEHANDLE); - if (ud == NULL || !lua_getmetatable(L, 1) || !lua_rawequal(L, -2, -1)) - lua_pushnil(L); /* not a file */ - else if (*((FILE **)ud) == NULL) - lua_pushliteral(L, "closed file"); - else - lua_pushliteral(L, "file"); - return 1; -} - - -static FILE *tofile (lua_State *L) { - FILE **f = tofilep(L); - if (*f == NULL) - luaL_error(L, "attempt to use a closed file"); - return *f; -} - - - -/* -** When creating file handles, always creates a `closed' file handle -** before opening the actual file; so, if there is a memory error, the -** file is not left opened. -*/ -static FILE **newfile (lua_State *L) { - FILE **pf = (FILE **)lua_newuserdata(L, sizeof(FILE *)); - *pf = NULL; /* file handle is currently `closed' */ - luaL_getmetatable(L, LUA_FILEHANDLE); - lua_setmetatable(L, -2); - return pf; -} - - -/* -** function to (not) close the standard files stdin, stdout, and stderr -*/ -static int io_noclose (lua_State *L) { - lua_pushnil(L); - lua_pushliteral(L, "cannot close standard file"); - return 2; -} - - -/* -** function to close 'popen' files -*/ -static int io_pclose (lua_State *L) { - FILE **p = tofilep(L); - int ok = lua_pclose(L, *p); - *p = NULL; - return pushresult(L, ok, NULL); -} - - -/* -** function to close regular files -*/ -static int io_fclose (lua_State *L) { - FILE **p = tofilep(L); - int ok = (fclose(*p) == 0); - *p = NULL; - return pushresult(L, ok, NULL); -} - - -static int aux_close (lua_State *L) { - lua_getfenv(L, 1); - lua_getfield(L, -1, "__close"); - return (lua_tocfunction(L, -1))(L); -} - - -static int io_close (lua_State *L) { - if (lua_isnone(L, 1)) - lua_rawgeti(L, LUA_ENVIRONINDEX, IO_OUTPUT); - tofile(L); /* make sure argument is a file */ - return aux_close(L); -} - - -static int io_gc (lua_State *L) { - FILE *f = *tofilep(L); - /* ignore closed files */ - if (f != NULL) - aux_close(L); - return 0; -} - - -static int io_tostring (lua_State *L) { - FILE *f = *tofilep(L); - if (f == NULL) - lua_pushliteral(L, "file (closed)"); - else - lua_pushfstring(L, "file (%p)", f); - return 1; -} - - -static int io_open (lua_State *L) { - const char *filename = luaL_checkstring(L, 1); - const char *mode = luaL_optstring(L, 2, "r"); - FILE **pf = newfile(L); - *pf = fopen(filename, mode); - return (*pf == NULL) ? pushresult(L, 0, filename) : 1; -} - - -/* -** this function has a separated environment, which defines the -** correct __close for 'popen' files -*/ -static int io_popen (lua_State *L) { - const char *filename = luaL_checkstring(L, 1); - const char *mode = luaL_optstring(L, 2, "r"); - FILE **pf = newfile(L); - *pf = lua_popen(L, filename, mode); - return (*pf == NULL) ? pushresult(L, 0, filename) : 1; -} - - -static int io_tmpfile (lua_State *L) { - FILE **pf = newfile(L); - *pf = tmpfile(); - return (*pf == NULL) ? pushresult(L, 0, NULL) : 1; -} - - -static FILE *getiofile (lua_State *L, int findex) { - FILE *f; - lua_rawgeti(L, LUA_ENVIRONINDEX, findex); - f = *(FILE **)lua_touserdata(L, -1); - if (f == NULL) - luaL_error(L, "standard %s file is closed", fnames[findex - 1]); - return f; -} - - -static int g_iofile (lua_State *L, int f, const char *mode) { - if (!lua_isnoneornil(L, 1)) { - const char *filename = lua_tostring(L, 1); - if (filename) { - FILE **pf = newfile(L); - *pf = fopen(filename, mode); - if (*pf == NULL) - fileerror(L, 1, filename); - } - else { - tofile(L); /* check that it's a valid file handle */ - lua_pushvalue(L, 1); - } - lua_rawseti(L, LUA_ENVIRONINDEX, f); - } - /* return current value */ - lua_rawgeti(L, LUA_ENVIRONINDEX, f); - return 1; -} - - -static int io_input (lua_State *L) { - return g_iofile(L, IO_INPUT, "r"); -} - - -static int io_output (lua_State *L) { - return g_iofile(L, IO_OUTPUT, "w"); -} - - -static int io_readline (lua_State *L); - - -static void aux_lines (lua_State *L, int idx, int toclose) { - lua_pushvalue(L, idx); - lua_pushboolean(L, toclose); /* close/not close file when finished */ - lua_pushcclosure(L, io_readline, 2); -} - - -static int f_lines (lua_State *L) { - tofile(L); /* check that it's a valid file handle */ - aux_lines(L, 1, 0); - return 1; -} - - -static int io_lines (lua_State *L) { - if (lua_isnoneornil(L, 1)) { /* no arguments? */ - /* will iterate over default input */ - lua_rawgeti(L, LUA_ENVIRONINDEX, IO_INPUT); - return f_lines(L); - } - else { - const char *filename = luaL_checkstring(L, 1); - FILE **pf = newfile(L); - *pf = fopen(filename, "r"); - if (*pf == NULL) - fileerror(L, 1, filename); - aux_lines(L, lua_gettop(L), 1); - return 1; - } -} - - -/* -** {====================================================== -** READ -** ======================================================= -*/ - - -static int read_number (lua_State *L, FILE *f) { - lua_Number d; - if (fscanf(f, LUA_NUMBER_SCAN, &d) == 1) { - lua_pushnumber(L, d); - return 1; - } - else return 0; /* read fails */ -} - - -static int test_eof (lua_State *L, FILE *f) { - int c = getc(f); - ungetc(c, f); - lua_pushlstring(L, NULL, 0); - return (c != EOF); -} - - -static int read_line (lua_State *L, FILE *f) { - luaL_Buffer b; - luaL_buffinit(L, &b); - for (;;) { - size_t l; - char *p = luaL_prepbuffer(&b); - if (fgets(p, LUAL_BUFFERSIZE, f) == NULL) { /* eof? */ - luaL_pushresult(&b); /* close buffer */ - return (lua_objlen(L, -1) > 0); /* check whether read something */ - } - l = strlen(p); - if (l == 0 || p[l-1] != '\n') - luaL_addsize(&b, l); - else { - luaL_addsize(&b, l - 1); /* do not include `eol' */ - luaL_pushresult(&b); /* close buffer */ - return 1; /* read at least an `eol' */ - } - } -} - - -static int read_chars (lua_State *L, FILE *f, size_t n) { - size_t rlen; /* how much to read */ - size_t nr; /* number of chars actually read */ - luaL_Buffer b; - luaL_buffinit(L, &b); - rlen = LUAL_BUFFERSIZE; /* try to read that much each time */ - do { - char *p = luaL_prepbuffer(&b); - if (rlen > n) rlen = n; /* cannot read more than asked */ - nr = fread(p, sizeof(char), rlen, f); - luaL_addsize(&b, nr); - n -= nr; /* still have to read `n' chars */ - } while (n > 0 && nr == rlen); /* until end of count or eof */ - luaL_pushresult(&b); /* close buffer */ - return (n == 0 || lua_objlen(L, -1) > 0); -} - - -static int g_read (lua_State *L, FILE *f, int first) { - int nargs = lua_gettop(L) - 1; - int success; - int n; - clearerr(f); - if (nargs == 0) { /* no arguments? */ - success = read_line(L, f); - n = first+1; /* to return 1 result */ - } - else { /* ensure stack space for all results and for auxlib's buffer */ - luaL_checkstack(L, nargs+LUA_MINSTACK, "too many arguments"); - success = 1; - for (n = first; nargs-- && success; n++) { - if (lua_type(L, n) == LUA_TNUMBER) { - size_t l = (size_t)lua_tointeger(L, n); - success = (l == 0) ? test_eof(L, f) : read_chars(L, f, l); - } - else { - const char *p = lua_tostring(L, n); - luaL_argcheck(L, p && p[0] == '*', n, "invalid option"); - switch (p[1]) { - case 'n': /* number */ - success = read_number(L, f); - break; - case 'l': /* line */ - success = read_line(L, f); - break; - case 'a': /* file */ - read_chars(L, f, ~((size_t)0)); /* read MAX_SIZE_T chars */ - success = 1; /* always success */ - break; - default: - return luaL_argerror(L, n, "invalid format"); - } - } - } - } - if (ferror(f)) - return pushresult(L, 0, NULL); - if (!success) { - lua_pop(L, 1); /* remove last result */ - lua_pushnil(L); /* push nil instead */ - } - return n - first; -} - - -static int io_read (lua_State *L) { - return g_read(L, getiofile(L, IO_INPUT), 1); -} - - -static int f_read (lua_State *L) { - return g_read(L, tofile(L), 2); -} - - -static int io_readline (lua_State *L) { - FILE *f = *(FILE **)lua_touserdata(L, lua_upvalueindex(1)); - int sucess; - if (f == NULL) /* file is already closed? */ - luaL_error(L, "file is already closed"); - sucess = read_line(L, f); - if (ferror(f)) - return luaL_error(L, "%s", strerror(errno)); - if (sucess) return 1; - else { /* EOF */ - if (lua_toboolean(L, lua_upvalueindex(2))) { /* generator created file? */ - lua_settop(L, 0); - lua_pushvalue(L, lua_upvalueindex(1)); - aux_close(L); /* close it */ - } - return 0; - } -} - -/* }====================================================== */ - - -static int g_write (lua_State *L, FILE *f, int arg) { - int nargs = lua_gettop(L) - 1; - int status = 1; - for (; nargs--; arg++) { - if (lua_type(L, arg) == LUA_TNUMBER) { - /* optimization: could be done exactly as for strings */ - status = status && - fprintf(f, LUA_NUMBER_FMT, lua_tonumber(L, arg)) > 0; - } - else { - size_t l; - const char *s = luaL_checklstring(L, arg, &l); - status = status && (fwrite(s, sizeof(char), l, f) == l); - } - } - return pushresult(L, status, NULL); -} - - -static int io_write (lua_State *L) { - return g_write(L, getiofile(L, IO_OUTPUT), 1); -} - - -static int f_write (lua_State *L) { - return g_write(L, tofile(L), 2); -} - - -static int f_seek (lua_State *L) { - static const int mode[] = {SEEK_SET, SEEK_CUR, SEEK_END}; - static const char *const modenames[] = {"set", "cur", "end", NULL}; - FILE *f = tofile(L); - int op = luaL_checkoption(L, 2, "cur", modenames); - long offset = luaL_optlong(L, 3, 0); - op = fseek(f, offset, mode[op]); - if (op) - return pushresult(L, 0, NULL); /* error */ - else { - lua_pushinteger(L, ftell(f)); - return 1; - } -} - - -static int f_setvbuf (lua_State *L) { - static const int mode[] = {_IONBF, _IOFBF, _IOLBF}; - static const char *const modenames[] = {"no", "full", "line", NULL}; - FILE *f = tofile(L); - int op = luaL_checkoption(L, 2, NULL, modenames); - lua_Integer sz = luaL_optinteger(L, 3, LUAL_BUFFERSIZE); - int res = setvbuf(f, NULL, mode[op], sz); - return pushresult(L, res == 0, NULL); -} - - - -static int io_flush (lua_State *L) { - return pushresult(L, fflush(getiofile(L, IO_OUTPUT)) == 0, NULL); -} - - -static int f_flush (lua_State *L) { - return pushresult(L, fflush(tofile(L)) == 0, NULL); -} - - -static const luaL_Reg iolib[] = { - {"close", io_close}, - {"flush", io_flush}, - {"input", io_input}, - {"lines", io_lines}, - {"open", io_open}, - {"output", io_output}, - {"popen", io_popen}, - {"read", io_read}, - {"tmpfile", io_tmpfile}, - {"type", io_type}, - {"write", io_write}, - {NULL, NULL} -}; - - -static const luaL_Reg flib[] = { - {"close", io_close}, - {"flush", f_flush}, - {"lines", f_lines}, - {"read", f_read}, - {"seek", f_seek}, - {"setvbuf", f_setvbuf}, - {"write", f_write}, - {"__gc", io_gc}, - {"__tostring", io_tostring}, - {NULL, NULL} -}; - - -static void createmeta (lua_State *L) { - luaL_newmetatable(L, LUA_FILEHANDLE); /* create metatable for file handles */ - lua_pushvalue(L, -1); /* push metatable */ - lua_setfield(L, -2, "__index"); /* metatable.__index = metatable */ - luaL_register(L, NULL, flib); /* file methods */ -} - - -static void createstdfile (lua_State *L, FILE *f, int k, const char *fname) { - *newfile(L) = f; - if (k > 0) { - lua_pushvalue(L, -1); - lua_rawseti(L, LUA_ENVIRONINDEX, k); - } - lua_pushvalue(L, -2); /* copy environment */ - lua_setfenv(L, -2); /* set it */ - lua_setfield(L, -3, fname); -} - - -static void newfenv (lua_State *L, lua_CFunction cls) { - lua_createtable(L, 0, 1); - lua_pushcfunction(L, cls); - lua_setfield(L, -2, "__close"); -} - - -LUALIB_API int luaopen_io (lua_State *L) { - createmeta(L); - /* create (private) environment (with fields IO_INPUT, IO_OUTPUT, __close) */ - newfenv(L, io_fclose); - lua_replace(L, LUA_ENVIRONINDEX); - /* open library */ - luaL_register(L, LUA_IOLIBNAME, iolib); - /* create (and set) default files */ - newfenv(L, io_noclose); /* close function for default files */ - createstdfile(L, stdin, IO_INPUT, "stdin"); - createstdfile(L, stdout, IO_OUTPUT, "stdout"); - createstdfile(L, stderr, 0, "stderr"); - lua_pop(L, 1); /* pop environment for default files */ - lua_getfield(L, -1, "popen"); - newfenv(L, io_pclose); /* create environment for 'popen' */ - lua_setfenv(L, -2); /* set fenv for 'popen' */ - lua_pop(L, 1); /* pop 'popen' */ - return 1; -} - diff --git a/lua/lua/llex.c b/lua/lua/llex.c deleted file mode 100644 index 6dc319358c..0000000000 --- a/lua/lua/llex.c +++ /dev/null @@ -1,461 +0,0 @@ -/* -** $Id: llex.c,v 2.20.1.1 2007/12/27 13:02:25 roberto Exp $ -** Lexical Analyzer -** See Copyright Notice in lua.h -*/ - - -#include -#include -#include - -#define llex_c -#define LUA_CORE - -#include "lua.h" - -#include "ldo.h" -#include "llex.h" -#include "lobject.h" -#include "lparser.h" -#include "lstate.h" -#include "lstring.h" -#include "ltable.h" -#include "lzio.h" - - - -#define next(ls) (ls->current = zgetc(ls->z)) - - - - -#define currIsNewline(ls) (ls->current == '\n' || ls->current == '\r') - - -/* ORDER RESERVED */ -const char *const luaX_tokens [] = { - "and", "break", "do", "else", "elseif", - "end", "false", "for", "function", "if", - "in", "local", "nil", "not", "or", "repeat", - "return", "then", "true", "until", "while", - "..", "...", "==", ">=", "<=", "~=", - "", "", "", "", - NULL -}; - - -#define save_and_next(ls) (save(ls, ls->current), next(ls)) - - -static void save (LexState *ls, int c) { - Mbuffer *b = ls->buff; - if (b->n + 1 > b->buffsize) { - size_t newsize; - if (b->buffsize >= MAX_SIZET/2) - luaX_lexerror(ls, "lexical element too long", 0); - newsize = b->buffsize * 2; - luaZ_resizebuffer(ls->L, b, newsize); - } - b->buffer[b->n++] = cast(char, c); -} - - -void luaX_init (lua_State *L) { - int i; - for (i=0; itsv.reserved = cast_byte(i+1); /* reserved word */ - } -} - - -#define MAXSRC 80 - - -const char *luaX_token2str (LexState *ls, int token) { - if (token < FIRST_RESERVED) { - lua_assert(token == cast(unsigned char, token)); - return (iscntrl(token)) ? luaO_pushfstring(ls->L, "char(%d)", token) : - luaO_pushfstring(ls->L, "%c", token); - } - else - return luaX_tokens[token-FIRST_RESERVED]; -} - - -static const char *txtToken (LexState *ls, int token) { - switch (token) { - case TK_NAME: - case TK_STRING: - case TK_NUMBER: - save(ls, '\0'); - return luaZ_buffer(ls->buff); - default: - return luaX_token2str(ls, token); - } -} - - -void luaX_lexerror (LexState *ls, const char *msg, int token) { - char buff[MAXSRC]; - luaO_chunkid(buff, getstr(ls->source), MAXSRC); - msg = luaO_pushfstring(ls->L, "%s:%d: %s", buff, ls->linenumber, msg); - if (token) - luaO_pushfstring(ls->L, "%s near " LUA_QS, msg, txtToken(ls, token)); - luaD_throw(ls->L, LUA_ERRSYNTAX); -} - - -void luaX_syntaxerror (LexState *ls, const char *msg) { - luaX_lexerror(ls, msg, ls->t.token); -} - - -TString *luaX_newstring (LexState *ls, const char *str, size_t l) { - lua_State *L = ls->L; - TString *ts = luaS_newlstr(L, str, l); - TValue *o = luaH_setstr(L, ls->fs->h, ts); /* entry for `str' */ - if (ttisnil(o)) - setbvalue(o, 1); /* make sure `str' will not be collected */ - return ts; -} - - -static void inclinenumber (LexState *ls) { - int old = ls->current; - lua_assert(currIsNewline(ls)); - next(ls); /* skip `\n' or `\r' */ - if (currIsNewline(ls) && ls->current != old) - next(ls); /* skip `\n\r' or `\r\n' */ - if (++ls->linenumber >= MAX_INT) - luaX_syntaxerror(ls, "chunk has too many lines"); -} - - -void luaX_setinput (lua_State *L, LexState *ls, ZIO *z, TString *source) { - ls->decpoint = '.'; - ls->L = L; - ls->lookahead.token = TK_EOS; /* no look-ahead token */ - ls->z = z; - ls->fs = NULL; - ls->linenumber = 1; - ls->lastline = 1; - ls->source = source; - luaZ_resizebuffer(ls->L, ls->buff, LUA_MINBUFFER); /* initialize buffer */ - next(ls); /* read first char */ -} - - - -/* -** ======================================================= -** LEXICAL ANALYZER -** ======================================================= -*/ - - - -static int check_next (LexState *ls, const char *set) { - if (!strchr(set, ls->current)) - return 0; - save_and_next(ls); - return 1; -} - - -static void buffreplace (LexState *ls, char from, char to) { - size_t n = luaZ_bufflen(ls->buff); - char *p = luaZ_buffer(ls->buff); - while (n--) - if (p[n] == from) p[n] = to; -} - - -static void trydecpoint (LexState *ls, SemInfo *seminfo) { - /* format error: try to update decimal point separator */ - struct lconv *cv = localeconv(); - char old = ls->decpoint; - ls->decpoint = (cv ? cv->decimal_point[0] : '.'); - buffreplace(ls, old, ls->decpoint); /* try updated decimal separator */ - if (!luaO_str2d(luaZ_buffer(ls->buff), &seminfo->r)) { - /* format error with correct decimal point: no more options */ - buffreplace(ls, ls->decpoint, '.'); /* undo change (for error message) */ - luaX_lexerror(ls, "malformed number", TK_NUMBER); - } -} - - -/* LUA_NUMBER */ -static void read_numeral (LexState *ls, SemInfo *seminfo) { - lua_assert(isdigit(ls->current)); - do { - save_and_next(ls); - } while (isdigit(ls->current) || ls->current == '.'); - if (check_next(ls, "Ee")) /* `E'? */ - check_next(ls, "+-"); /* optional exponent sign */ - while (isalnum(ls->current) || ls->current == '_') - save_and_next(ls); - save(ls, '\0'); - buffreplace(ls, '.', ls->decpoint); /* follow locale for decimal point */ - if (!luaO_str2d(luaZ_buffer(ls->buff), &seminfo->r)) /* format error? */ - trydecpoint(ls, seminfo); /* try to update decimal point separator */ -} - - -static int skip_sep (LexState *ls) { - int count = 0; - int s = ls->current; - lua_assert(s == '[' || s == ']'); - save_and_next(ls); - while (ls->current == '=') { - save_and_next(ls); - count++; - } - return (ls->current == s) ? count : (-count) - 1; -} - - -static void read_long_string (LexState *ls, SemInfo *seminfo, int sep) { - int cont = 0; - (void)(cont); /* avoid warnings when `cont' is not used */ - save_and_next(ls); /* skip 2nd `[' */ - if (currIsNewline(ls)) /* string starts with a newline? */ - inclinenumber(ls); /* skip it */ - for (;;) { - switch (ls->current) { - case EOZ: - luaX_lexerror(ls, (seminfo) ? "unfinished long string" : - "unfinished long comment", TK_EOS); - break; /* to avoid warnings */ -#if defined(LUA_COMPAT_LSTR) - case '[': { - if (skip_sep(ls) == sep) { - save_and_next(ls); /* skip 2nd `[' */ - cont++; -#if LUA_COMPAT_LSTR == 1 - if (sep == 0) - luaX_lexerror(ls, "nesting of [[...]] is deprecated", '['); -#endif - } - break; - } -#endif - case ']': { - if (skip_sep(ls) == sep) { - save_and_next(ls); /* skip 2nd `]' */ -#if defined(LUA_COMPAT_LSTR) && LUA_COMPAT_LSTR == 2 - cont--; - if (sep == 0 && cont >= 0) break; -#endif - goto endloop; - } - break; - } - case '\n': - case '\r': { - save(ls, '\n'); - inclinenumber(ls); - if (!seminfo) luaZ_resetbuffer(ls->buff); /* avoid wasting space */ - break; - } - default: { - if (seminfo) save_and_next(ls); - else next(ls); - } - } - } endloop: - if (seminfo) - seminfo->ts = luaX_newstring(ls, luaZ_buffer(ls->buff) + (2 + sep), - luaZ_bufflen(ls->buff) - 2*(2 + sep)); -} - - -static void read_string (LexState *ls, int del, SemInfo *seminfo) { - save_and_next(ls); - while (ls->current != del) { - switch (ls->current) { - case EOZ: - luaX_lexerror(ls, "unfinished string", TK_EOS); - continue; /* to avoid warnings */ - case '\n': - case '\r': - luaX_lexerror(ls, "unfinished string", TK_STRING); - continue; /* to avoid warnings */ - case '\\': { - int c; - next(ls); /* do not save the `\' */ - switch (ls->current) { - case 'a': c = '\a'; break; - case 'b': c = '\b'; break; - case 'f': c = '\f'; break; - case 'n': c = '\n'; break; - case 'r': c = '\r'; break; - case 't': c = '\t'; break; - case 'v': c = '\v'; break; - case '\n': /* go through */ - case '\r': save(ls, '\n'); inclinenumber(ls); continue; - case EOZ: continue; /* will raise an error next loop */ - default: { - if (!isdigit(ls->current)) - save_and_next(ls); /* handles \\, \", \', and \? */ - else { /* \xxx */ - int i = 0; - c = 0; - do { - c = 10*c + (ls->current-'0'); - next(ls); - } while (++i<3 && isdigit(ls->current)); - if (c > UCHAR_MAX) - luaX_lexerror(ls, "escape sequence too large", TK_STRING); - save(ls, c); - } - continue; - } - } - save(ls, c); - next(ls); - continue; - } - default: - save_and_next(ls); - } - } - save_and_next(ls); /* skip delimiter */ - seminfo->ts = luaX_newstring(ls, luaZ_buffer(ls->buff) + 1, - luaZ_bufflen(ls->buff) - 2); -} - - -static int llex (LexState *ls, SemInfo *seminfo) { - luaZ_resetbuffer(ls->buff); - for (;;) { - switch (ls->current) { - case '\n': - case '\r': { - inclinenumber(ls); - continue; - } - case '-': { - next(ls); - if (ls->current != '-') return '-'; - /* else is a comment */ - next(ls); - if (ls->current == '[') { - int sep = skip_sep(ls); - luaZ_resetbuffer(ls->buff); /* `skip_sep' may dirty the buffer */ - if (sep >= 0) { - read_long_string(ls, NULL, sep); /* long comment */ - luaZ_resetbuffer(ls->buff); - continue; - } - } - /* else short comment */ - while (!currIsNewline(ls) && ls->current != EOZ) - next(ls); - continue; - } - case '[': { - int sep = skip_sep(ls); - if (sep >= 0) { - read_long_string(ls, seminfo, sep); - return TK_STRING; - } - else if (sep == -1) return '['; - else luaX_lexerror(ls, "invalid long string delimiter", TK_STRING); - } - case '=': { - next(ls); - if (ls->current != '=') return '='; - else { next(ls); return TK_EQ; } - } - case '<': { - next(ls); - if (ls->current != '=') return '<'; - else { next(ls); return TK_LE; } - } - case '>': { - next(ls); - if (ls->current != '=') return '>'; - else { next(ls); return TK_GE; } - } - case '~': { - next(ls); - if (ls->current != '=') return '~'; - else { next(ls); return TK_NE; } - } - case '"': - case '\'': { - read_string(ls, ls->current, seminfo); - return TK_STRING; - } - case '.': { - save_and_next(ls); - if (check_next(ls, ".")) { - if (check_next(ls, ".")) - return TK_DOTS; /* ... */ - else return TK_CONCAT; /* .. */ - } - else if (!isdigit(ls->current)) return '.'; - else { - read_numeral(ls, seminfo); - return TK_NUMBER; - } - } - case EOZ: { - return TK_EOS; - } - default: { - if (isspace(ls->current)) { - lua_assert(!currIsNewline(ls)); - next(ls); - continue; - } - else if (isdigit(ls->current)) { - read_numeral(ls, seminfo); - return TK_NUMBER; - } - else if (isalpha(ls->current) || ls->current == '_') { - /* identifier or reserved word */ - TString *ts; - do { - save_and_next(ls); - } while (isalnum(ls->current) || ls->current == '_'); - ts = luaX_newstring(ls, luaZ_buffer(ls->buff), - luaZ_bufflen(ls->buff)); - if (ts->tsv.reserved > 0) /* reserved word? */ - return ts->tsv.reserved - 1 + FIRST_RESERVED; - else { - seminfo->ts = ts; - return TK_NAME; - } - } - else { - int c = ls->current; - next(ls); - return c; /* single-char tokens (+ - / ...) */ - } - } - } - } -} - - -void luaX_next (LexState *ls) { - ls->lastline = ls->linenumber; - if (ls->lookahead.token != TK_EOS) { /* is there a look-ahead token? */ - ls->t = ls->lookahead; /* use this one */ - ls->lookahead.token = TK_EOS; /* and discharge it */ - } - else - ls->t.token = llex(ls, &ls->t.seminfo); /* read next token */ -} - - -void luaX_lookahead (LexState *ls) { - lua_assert(ls->lookahead.token == TK_EOS); - ls->lookahead.token = llex(ls, &ls->lookahead.seminfo); -} - diff --git a/lua/lua/llex.h b/lua/lua/llex.h deleted file mode 100644 index a9201cee48..0000000000 --- a/lua/lua/llex.h +++ /dev/null @@ -1,81 +0,0 @@ -/* -** $Id: llex.h,v 1.58.1.1 2007/12/27 13:02:25 roberto Exp $ -** Lexical Analyzer -** See Copyright Notice in lua.h -*/ - -#ifndef llex_h -#define llex_h - -#include "lobject.h" -#include "lzio.h" - - -#define FIRST_RESERVED 257 - -/* maximum length of a reserved word */ -#define TOKEN_LEN (sizeof("function")/sizeof(char)) - - -/* -* WARNING: if you change the order of this enumeration, -* grep "ORDER RESERVED" -*/ -enum RESERVED { - /* terminal symbols denoted by reserved words */ - TK_AND = FIRST_RESERVED, TK_BREAK, - TK_DO, TK_ELSE, TK_ELSEIF, TK_END, TK_FALSE, TK_FOR, TK_FUNCTION, - TK_IF, TK_IN, TK_LOCAL, TK_NIL, TK_NOT, TK_OR, TK_REPEAT, - TK_RETURN, TK_THEN, TK_TRUE, TK_UNTIL, TK_WHILE, - /* other terminal symbols */ - TK_CONCAT, TK_DOTS, TK_EQ, TK_GE, TK_LE, TK_NE, TK_NUMBER, - TK_NAME, TK_STRING, TK_EOS -}; - -/* number of reserved words */ -#define NUM_RESERVED (cast(int, TK_WHILE-FIRST_RESERVED+1)) - - -/* array with token `names' */ -LUAI_DATA const char *const luaX_tokens []; - - -typedef union { - lua_Number r; - TString *ts; -} SemInfo; /* semantics information */ - - -typedef struct Token { - int token; - SemInfo seminfo; -} Token; - - -typedef struct LexState { - int current; /* current character (charint) */ - int linenumber; /* input line counter */ - int lastline; /* line of last token `consumed' */ - Token t; /* current token */ - Token lookahead; /* look ahead token */ - struct FuncState *fs; /* `FuncState' is private to the parser */ - struct lua_State *L; - ZIO *z; /* input stream */ - Mbuffer *buff; /* buffer for tokens */ - TString *source; /* current source name */ - char decpoint; /* locale decimal point */ -} LexState; - - -LUAI_FUNC void luaX_init (lua_State *L); -LUAI_FUNC void luaX_setinput (lua_State *L, LexState *ls, ZIO *z, - TString *source); -LUAI_FUNC TString *luaX_newstring (LexState *ls, const char *str, size_t l); -LUAI_FUNC void luaX_next (LexState *ls); -LUAI_FUNC void luaX_lookahead (LexState *ls); -LUAI_FUNC void luaX_lexerror (LexState *ls, const char *msg, int token); -LUAI_FUNC void luaX_syntaxerror (LexState *ls, const char *s); -LUAI_FUNC const char *luaX_token2str (LexState *ls, int token); - - -#endif diff --git a/lua/lua/llimits.h b/lua/lua/llimits.h deleted file mode 100644 index ca8dcb7224..0000000000 --- a/lua/lua/llimits.h +++ /dev/null @@ -1,128 +0,0 @@ -/* -** $Id: llimits.h,v 1.69.1.1 2007/12/27 13:02:25 roberto Exp $ -** Limits, basic types, and some other `installation-dependent' definitions -** See Copyright Notice in lua.h -*/ - -#ifndef llimits_h -#define llimits_h - - -#include -#include - - -#include "lua.h" - - -typedef LUAI_UINT32 lu_int32; - -typedef LUAI_UMEM lu_mem; - -typedef LUAI_MEM l_mem; - - - -/* chars used as small naturals (so that `char' is reserved for characters) */ -typedef unsigned char lu_byte; - - -#define MAX_SIZET ((size_t)(~(size_t)0)-2) - -#define MAX_LUMEM ((lu_mem)(~(lu_mem)0)-2) - - -#define MAX_INT (INT_MAX-2) /* maximum value of an int (-2 for safety) */ - -/* -** conversion of pointer to integer -** this is for hashing only; there is no problem if the integer -** cannot hold the whole pointer value -*/ -#define IntPoint(p) ((unsigned int)(lu_mem)(p)) - - - -/* type to ensure maximum alignment */ -typedef LUAI_USER_ALIGNMENT_T L_Umaxalign; - - -/* result of a `usual argument conversion' over lua_Number */ -typedef LUAI_UACNUMBER l_uacNumber; - - -/* internal assertions for in-house debugging */ -#ifdef lua_assert - -#define check_exp(c,e) (lua_assert(c), (e)) -#define api_check(l,e) lua_assert(e) - -#else - -#define lua_assert(c) ((void)0) -#define check_exp(c,e) (e) -#define api_check luai_apicheck - -#endif - - -#ifndef UNUSED -#define UNUSED(x) ((void)(x)) /* to avoid warnings */ -#endif - - -#ifndef cast -#define cast(t, exp) ((t)(exp)) -#endif - -#define cast_byte(i) cast(lu_byte, (i)) -#define cast_num(i) cast(lua_Number, (i)) -#define cast_int(i) cast(int, (i)) - - - -/* -** type for virtual-machine instructions -** must be an unsigned with (at least) 4 bytes (see details in lopcodes.h) -*/ -typedef lu_int32 Instruction; - - - -/* maximum stack for a Lua function */ -#define MAXSTACK 250 - - - -/* minimum size for the string table (must be power of 2) */ -#ifndef MINSTRTABSIZE -#define MINSTRTABSIZE 32 -#endif - - -/* minimum size for string buffer */ -#ifndef LUA_MINBUFFER -#define LUA_MINBUFFER 32 -#endif - - -#ifndef lua_lock -#define lua_lock(L) ((void) 0) -#define lua_unlock(L) ((void) 0) -#endif - -#ifndef luai_threadyield -#define luai_threadyield(L) {lua_unlock(L); lua_lock(L);} -#endif - - -/* -** macro to control inclusion of some hard tests on stack reallocation -*/ -#ifndef HARDSTACKTESTS -#define condhardstacktests(x) ((void)0) -#else -#define condhardstacktests(x) x -#endif - -#endif diff --git a/lua/lua/lmathlib.c b/lua/lua/lmathlib.c deleted file mode 100644 index 441fbf736c..0000000000 --- a/lua/lua/lmathlib.c +++ /dev/null @@ -1,263 +0,0 @@ -/* -** $Id: lmathlib.c,v 1.67.1.1 2007/12/27 13:02:25 roberto Exp $ -** Standard mathematical library -** See Copyright Notice in lua.h -*/ - - -#include -#include - -#define lmathlib_c -#define LUA_LIB - -#include "lua.h" - -#include "lauxlib.h" -#include "lualib.h" - - -#undef PI -#define PI (3.14159265358979323846) -#define RADIANS_PER_DEGREE (PI/180.0) - - - -static int math_abs (lua_State *L) { - lua_pushnumber(L, fabs(luaL_checknumber(L, 1))); - return 1; -} - -static int math_sin (lua_State *L) { - lua_pushnumber(L, sin(luaL_checknumber(L, 1))); - return 1; -} - -static int math_sinh (lua_State *L) { - lua_pushnumber(L, sinh(luaL_checknumber(L, 1))); - return 1; -} - -static int math_cos (lua_State *L) { - lua_pushnumber(L, cos(luaL_checknumber(L, 1))); - return 1; -} - -static int math_cosh (lua_State *L) { - lua_pushnumber(L, cosh(luaL_checknumber(L, 1))); - return 1; -} - -static int math_tan (lua_State *L) { - lua_pushnumber(L, tan(luaL_checknumber(L, 1))); - return 1; -} - -static int math_tanh (lua_State *L) { - lua_pushnumber(L, tanh(luaL_checknumber(L, 1))); - return 1; -} - -static int math_asin (lua_State *L) { - lua_pushnumber(L, asin(luaL_checknumber(L, 1))); - return 1; -} - -static int math_acos (lua_State *L) { - lua_pushnumber(L, acos(luaL_checknumber(L, 1))); - return 1; -} - -static int math_atan (lua_State *L) { - lua_pushnumber(L, atan(luaL_checknumber(L, 1))); - return 1; -} - -static int math_atan2 (lua_State *L) { - lua_pushnumber(L, atan2(luaL_checknumber(L, 1), luaL_checknumber(L, 2))); - return 1; -} - -static int math_ceil (lua_State *L) { - lua_pushnumber(L, ceil(luaL_checknumber(L, 1))); - return 1; -} - -static int math_floor (lua_State *L) { - lua_pushnumber(L, floor(luaL_checknumber(L, 1))); - return 1; -} - -static int math_fmod (lua_State *L) { - lua_pushnumber(L, fmod(luaL_checknumber(L, 1), luaL_checknumber(L, 2))); - return 1; -} - -static int math_modf (lua_State *L) { - double ip; - double fp = modf(luaL_checknumber(L, 1), &ip); - lua_pushnumber(L, ip); - lua_pushnumber(L, fp); - return 2; -} - -static int math_sqrt (lua_State *L) { - lua_pushnumber(L, sqrt(luaL_checknumber(L, 1))); - return 1; -} - -static int math_pow (lua_State *L) { - lua_pushnumber(L, pow(luaL_checknumber(L, 1), luaL_checknumber(L, 2))); - return 1; -} - -static int math_log (lua_State *L) { - lua_pushnumber(L, log(luaL_checknumber(L, 1))); - return 1; -} - -static int math_log10 (lua_State *L) { - lua_pushnumber(L, log10(luaL_checknumber(L, 1))); - return 1; -} - -static int math_exp (lua_State *L) { - lua_pushnumber(L, exp(luaL_checknumber(L, 1))); - return 1; -} - -static int math_deg (lua_State *L) { - lua_pushnumber(L, luaL_checknumber(L, 1)/RADIANS_PER_DEGREE); - return 1; -} - -static int math_rad (lua_State *L) { - lua_pushnumber(L, luaL_checknumber(L, 1)*RADIANS_PER_DEGREE); - return 1; -} - -static int math_frexp (lua_State *L) { - int e; - lua_pushnumber(L, frexp(luaL_checknumber(L, 1), &e)); - lua_pushinteger(L, e); - return 2; -} - -static int math_ldexp (lua_State *L) { - lua_pushnumber(L, ldexp(luaL_checknumber(L, 1), luaL_checkint(L, 2))); - return 1; -} - - - -static int math_min (lua_State *L) { - int n = lua_gettop(L); /* number of arguments */ - lua_Number dmin = luaL_checknumber(L, 1); - int i; - for (i=2; i<=n; i++) { - lua_Number d = luaL_checknumber(L, i); - if (d < dmin) - dmin = d; - } - lua_pushnumber(L, dmin); - return 1; -} - - -static int math_max (lua_State *L) { - int n = lua_gettop(L); /* number of arguments */ - lua_Number dmax = luaL_checknumber(L, 1); - int i; - for (i=2; i<=n; i++) { - lua_Number d = luaL_checknumber(L, i); - if (d > dmax) - dmax = d; - } - lua_pushnumber(L, dmax); - return 1; -} - - -static int math_random (lua_State *L) { - /* the `%' avoids the (rare) case of r==1, and is needed also because on - some systems (SunOS!) `rand()' may return a value larger than RAND_MAX */ - lua_Number r = (lua_Number)(rand()%RAND_MAX) / (lua_Number)RAND_MAX; - switch (lua_gettop(L)) { /* check number of arguments */ - case 0: { /* no arguments */ - lua_pushnumber(L, r); /* Number between 0 and 1 */ - break; - } - case 1: { /* only upper limit */ - int u = luaL_checkint(L, 1); - luaL_argcheck(L, 1<=u, 1, "interval is empty"); - lua_pushnumber(L, floor(r*u)+1); /* int between 1 and `u' */ - break; - } - case 2: { /* lower and upper limits */ - int l = luaL_checkint(L, 1); - int u = luaL_checkint(L, 2); - luaL_argcheck(L, l<=u, 2, "interval is empty"); - lua_pushnumber(L, floor(r*(u-l+1))+l); /* int between `l' and `u' */ - break; - } - default: return luaL_error(L, "wrong number of arguments"); - } - return 1; -} - - -static int math_randomseed (lua_State *L) { - srand(luaL_checkint(L, 1)); - return 0; -} - - -static const luaL_Reg mathlib[] = { - {"abs", math_abs}, - {"acos", math_acos}, - {"asin", math_asin}, - {"atan2", math_atan2}, - {"atan", math_atan}, - {"ceil", math_ceil}, - {"cosh", math_cosh}, - {"cos", math_cos}, - {"deg", math_deg}, - {"exp", math_exp}, - {"floor", math_floor}, - {"fmod", math_fmod}, - {"frexp", math_frexp}, - {"ldexp", math_ldexp}, - {"log10", math_log10}, - {"log", math_log}, - {"max", math_max}, - {"min", math_min}, - {"modf", math_modf}, - {"pow", math_pow}, - {"rad", math_rad}, - {"random", math_random}, - {"randomseed", math_randomseed}, - {"sinh", math_sinh}, - {"sin", math_sin}, - {"sqrt", math_sqrt}, - {"tanh", math_tanh}, - {"tan", math_tan}, - {NULL, NULL} -}; - - -/* -** Open math library -*/ -LUALIB_API int luaopen_math (lua_State *L) { - luaL_register(L, LUA_MATHLIBNAME, mathlib); - lua_pushnumber(L, PI); - lua_setfield(L, -2, "pi"); - lua_pushnumber(L, HUGE_VAL); - lua_setfield(L, -2, "huge"); -#if defined(LUA_COMPAT_MOD) - lua_getfield(L, -1, "fmod"); - lua_setfield(L, -2, "mod"); -#endif - return 1; -} - diff --git a/lua/lua/lmem.c b/lua/lua/lmem.c deleted file mode 100644 index ae7d8c965f..0000000000 --- a/lua/lua/lmem.c +++ /dev/null @@ -1,86 +0,0 @@ -/* -** $Id: lmem.c,v 1.70.1.1 2007/12/27 13:02:25 roberto Exp $ -** Interface to Memory Manager -** See Copyright Notice in lua.h -*/ - - -#include - -#define lmem_c -#define LUA_CORE - -#include "lua.h" - -#include "ldebug.h" -#include "ldo.h" -#include "lmem.h" -#include "lobject.h" -#include "lstate.h" - - - -/* -** About the realloc function: -** void * frealloc (void *ud, void *ptr, size_t osize, size_t nsize); -** (`osize' is the old size, `nsize' is the new size) -** -** Lua ensures that (ptr == NULL) iff (osize == 0). -** -** * frealloc(ud, NULL, 0, x) creates a new block of size `x' -** -** * frealloc(ud, p, x, 0) frees the block `p' -** (in this specific case, frealloc must return NULL). -** particularly, frealloc(ud, NULL, 0, 0) does nothing -** (which is equivalent to free(NULL) in ANSI C) -** -** frealloc returns NULL if it cannot create or reallocate the area -** (any reallocation to an equal or smaller size cannot fail!) -*/ - - - -#define MINSIZEARRAY 4 - - -void *luaM_growaux_ (lua_State *L, void *block, int *size, size_t size_elems, - int limit, const char *errormsg) { - void *newblock; - int newsize; - if (*size >= limit/2) { /* cannot double it? */ - if (*size >= limit) /* cannot grow even a little? */ - luaG_runerror(L, errormsg); - newsize = limit; /* still have at least one free place */ - } - else { - newsize = (*size)*2; - if (newsize < MINSIZEARRAY) - newsize = MINSIZEARRAY; /* minimum size */ - } - newblock = luaM_reallocv(L, block, *size, newsize, size_elems); - *size = newsize; /* update only when everything else is OK */ - return newblock; -} - - -void *luaM_toobig (lua_State *L) { - luaG_runerror(L, "memory allocation error: block too big"); - return NULL; /* to avoid warnings */ -} - - - -/* -** generic allocation routine. -*/ -void *luaM_realloc_ (lua_State *L, void *block, size_t osize, size_t nsize) { - global_State *g = G(L); - lua_assert((osize == 0) == (block == NULL)); - block = (*g->frealloc)(g->ud, block, osize, nsize); - if (block == NULL && nsize > 0) - luaD_throw(L, LUA_ERRMEM); - lua_assert((nsize == 0) == (block == NULL)); - g->totalbytes = (g->totalbytes - osize) + nsize; - return block; -} - diff --git a/lua/lua/lmem.h b/lua/lua/lmem.h deleted file mode 100644 index 7c2dcb3220..0000000000 --- a/lua/lua/lmem.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -** $Id: lmem.h,v 1.31.1.1 2007/12/27 13:02:25 roberto Exp $ -** Interface to Memory Manager -** See Copyright Notice in lua.h -*/ - -#ifndef lmem_h -#define lmem_h - - -#include - -#include "llimits.h" -#include "lua.h" - -#define MEMERRMSG "not enough memory" - - -#define luaM_reallocv(L,b,on,n,e) \ - ((cast(size_t, (n)+1) <= MAX_SIZET/(e)) ? /* +1 to avoid warnings */ \ - luaM_realloc_(L, (b), (on)*(e), (n)*(e)) : \ - luaM_toobig(L)) - -#define luaM_freemem(L, b, s) luaM_realloc_(L, (b), (s), 0) -#define luaM_free(L, b) luaM_realloc_(L, (b), sizeof(*(b)), 0) -#define luaM_freearray(L, b, n, t) luaM_reallocv(L, (b), n, 0, sizeof(t)) - -#define luaM_malloc(L,t) luaM_realloc_(L, NULL, 0, (t)) -#define luaM_new(L,t) cast(t *, luaM_malloc(L, sizeof(t))) -#define luaM_newvector(L,n,t) \ - cast(t *, luaM_reallocv(L, NULL, 0, n, sizeof(t))) - -#define luaM_growvector(L,v,nelems,size,t,limit,e) \ - if ((nelems)+1 > (size)) \ - ((v)=cast(t *, luaM_growaux_(L,v,&(size),sizeof(t),limit,e))) - -#define luaM_reallocvector(L, v,oldn,n,t) \ - ((v)=cast(t *, luaM_reallocv(L, v, oldn, n, sizeof(t)))) - - -LUAI_FUNC void *luaM_realloc_ (lua_State *L, void *block, size_t oldsize, - size_t size); -LUAI_FUNC void *luaM_toobig (lua_State *L); -LUAI_FUNC void *luaM_growaux_ (lua_State *L, void *block, int *size, - size_t size_elem, int limit, - const char *errormsg); - -#endif - diff --git a/lua/lua/loadlib.c b/lua/lua/loadlib.c deleted file mode 100644 index 0d401eba1c..0000000000 --- a/lua/lua/loadlib.c +++ /dev/null @@ -1,666 +0,0 @@ -/* -** $Id: loadlib.c,v 1.52.1.3 2008/08/06 13:29:28 roberto Exp $ -** Dynamic library loader for Lua -** See Copyright Notice in lua.h -** -** This module contains an implementation of loadlib for Unix systems -** that have dlfcn, an implementation for Darwin (Mac OS X), an -** implementation for Windows, and a stub for other systems. -*/ - - -#include -#include - - -#define loadlib_c -#define LUA_LIB - -#include "lua.h" - -#include "lauxlib.h" -#include "lualib.h" - - -/* prefix for open functions in C libraries */ -#define LUA_POF "luaopen_" - -/* separator for open functions in C libraries */ -#define LUA_OFSEP "_" - - -#define LIBPREFIX "LOADLIB: " - -#define POF LUA_POF -#define LIB_FAIL "open" - - -/* error codes for ll_loadfunc */ -#define ERRLIB 1 -#define ERRFUNC 2 - -#define setprogdir(L) ((void)0) - - -static void ll_unloadlib (void *lib); -static void *ll_load (lua_State *L, const char *path); -static lua_CFunction ll_sym (lua_State *L, void *lib, const char *sym); - - - -#if defined(LUA_DL_DLOPEN) -/* -** {======================================================================== -** This is an implementation of loadlib based on the dlfcn interface. -** The dlfcn interface is available in Linux, SunOS, Solaris, IRIX, FreeBSD, -** NetBSD, AIX 4.2, HPUX 11, and probably most other Unix flavors, at least -** as an emulation layer on top of native functions. -** ========================================================================= -*/ - -#include - -static void ll_unloadlib (void *lib) { - dlclose(lib); -} - - -static void *ll_load (lua_State *L, const char *path) { - void *lib = dlopen(path, RTLD_NOW); - if (lib == NULL) lua_pushstring(L, dlerror()); - return lib; -} - - -static lua_CFunction ll_sym (lua_State *L, void *lib, const char *sym) { - lua_CFunction f = (lua_CFunction)dlsym(lib, sym); - if (f == NULL) lua_pushstring(L, dlerror()); - return f; -} - -/* }====================================================== */ - - - -#elif defined(LUA_DL_DLL) -/* -** {====================================================================== -** This is an implementation of loadlib for Windows using native functions. -** ======================================================================= -*/ - -#include - - -#undef setprogdir - -static void setprogdir (lua_State *L) { - char buff[MAX_PATH + 1]; - char *lb; - DWORD nsize = sizeof(buff)/sizeof(char); - DWORD n = GetModuleFileNameA(NULL, buff, nsize); - if (n == 0 || n == nsize || (lb = strrchr(buff, '\\')) == NULL) - luaL_error(L, "unable to get ModuleFileName"); - else { - *lb = '\0'; - luaL_gsub(L, lua_tostring(L, -1), LUA_EXECDIR, buff); - lua_remove(L, -2); /* remove original string */ - } -} - - -static void pusherror (lua_State *L) { - int error = GetLastError(); - char buffer[128]; - if (FormatMessageA(FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, error, 0, buffer, sizeof(buffer), NULL)) - lua_pushstring(L, buffer); - else - lua_pushfstring(L, "system error %d\n", error); -} - -static void ll_unloadlib (void *lib) { - FreeLibrary((HINSTANCE)lib); -} - - -static void *ll_load (lua_State *L, const char *path) { - HINSTANCE lib = LoadLibraryA(path); - if (lib == NULL) pusherror(L); - return lib; -} - - -static lua_CFunction ll_sym (lua_State *L, void *lib, const char *sym) { - lua_CFunction f = (lua_CFunction)GetProcAddress((HINSTANCE)lib, sym); - if (f == NULL) pusherror(L); - return f; -} - -/* }====================================================== */ - - - -#elif defined(LUA_DL_DYLD) -/* -** {====================================================================== -** Native Mac OS X / Darwin Implementation -** ======================================================================= -*/ - -#include - - -/* Mac appends a `_' before C function names */ -#undef POF -#define POF "_" LUA_POF - - -static void pusherror (lua_State *L) { - const char *err_str; - const char *err_file; - NSLinkEditErrors err; - int err_num; - NSLinkEditError(&err, &err_num, &err_file, &err_str); - lua_pushstring(L, err_str); -} - - -static const char *errorfromcode (NSObjectFileImageReturnCode ret) { - switch (ret) { - case NSObjectFileImageInappropriateFile: - return "file is not a bundle"; - case NSObjectFileImageArch: - return "library is for wrong CPU type"; - case NSObjectFileImageFormat: - return "bad format"; - case NSObjectFileImageAccess: - return "cannot access file"; - case NSObjectFileImageFailure: - default: - return "unable to load library"; - } -} - - -static void ll_unloadlib (void *lib) { - NSUnLinkModule((NSModule)lib, NSUNLINKMODULE_OPTION_RESET_LAZY_REFERENCES); -} - - -static void *ll_load (lua_State *L, const char *path) { - NSObjectFileImage img; - NSObjectFileImageReturnCode ret; - /* this would be a rare case, but prevents crashing if it happens */ - if(!_dyld_present()) { - lua_pushliteral(L, "dyld not present"); - return NULL; - } - ret = NSCreateObjectFileImageFromFile(path, &img); - if (ret == NSObjectFileImageSuccess) { - NSModule mod = NSLinkModule(img, path, NSLINKMODULE_OPTION_PRIVATE | - NSLINKMODULE_OPTION_RETURN_ON_ERROR); - NSDestroyObjectFileImage(img); - if (mod == NULL) pusherror(L); - return mod; - } - lua_pushstring(L, errorfromcode(ret)); - return NULL; -} - - -static lua_CFunction ll_sym (lua_State *L, void *lib, const char *sym) { - NSSymbol nss = NSLookupSymbolInModule((NSModule)lib, sym); - if (nss == NULL) { - lua_pushfstring(L, "symbol " LUA_QS " not found", sym); - return NULL; - } - return (lua_CFunction)NSAddressOfSymbol(nss); -} - -/* }====================================================== */ - - - -#else -/* -** {====================================================== -** Fallback for other systems -** ======================================================= -*/ - -#undef LIB_FAIL -#define LIB_FAIL "absent" - - -#define DLMSG "dynamic libraries not enabled; check your Lua installation" - - -static void ll_unloadlib (void *lib) { - (void)lib; /* to avoid warnings */ -} - - -static void *ll_load (lua_State *L, const char *path) { - (void)path; /* to avoid warnings */ - lua_pushliteral(L, DLMSG); - return NULL; -} - - -static lua_CFunction ll_sym (lua_State *L, void *lib, const char *sym) { - (void)lib; (void)sym; /* to avoid warnings */ - lua_pushliteral(L, DLMSG); - return NULL; -} - -/* }====================================================== */ -#endif - - - -static void **ll_register (lua_State *L, const char *path) { - void **plib; - lua_pushfstring(L, "%s%s", LIBPREFIX, path); - lua_gettable(L, LUA_REGISTRYINDEX); /* check library in registry? */ - if (!lua_isnil(L, -1)) /* is there an entry? */ - plib = (void **)lua_touserdata(L, -1); - else { /* no entry yet; create one */ - lua_pop(L, 1); - plib = (void **)lua_newuserdata(L, sizeof(const void *)); - *plib = NULL; - luaL_getmetatable(L, "_LOADLIB"); - lua_setmetatable(L, -2); - lua_pushfstring(L, "%s%s", LIBPREFIX, path); - lua_pushvalue(L, -2); - lua_settable(L, LUA_REGISTRYINDEX); - } - return plib; -} - - -/* -** __gc tag method: calls library's `ll_unloadlib' function with the lib -** handle -*/ -static int gctm (lua_State *L) { - void **lib = (void **)luaL_checkudata(L, 1, "_LOADLIB"); - if (*lib) ll_unloadlib(*lib); - *lib = NULL; /* mark library as closed */ - return 0; -} - - -static int ll_loadfunc (lua_State *L, const char *path, const char *sym) { - void **reg = ll_register(L, path); - if (*reg == NULL) *reg = ll_load(L, path); - if (*reg == NULL) - return ERRLIB; /* unable to load library */ - else { - lua_CFunction f = ll_sym(L, *reg, sym); - if (f == NULL) - return ERRFUNC; /* unable to find function */ - lua_pushcfunction(L, f); - return 0; /* return function */ - } -} - - -static int ll_loadlib (lua_State *L) { - const char *path = luaL_checkstring(L, 1); - const char *init = luaL_checkstring(L, 2); - int stat = ll_loadfunc(L, path, init); - if (stat == 0) /* no errors? */ - return 1; /* return the loaded function */ - else { /* error; error message is on stack top */ - lua_pushnil(L); - lua_insert(L, -2); - lua_pushstring(L, (stat == ERRLIB) ? LIB_FAIL : "init"); - return 3; /* return nil, error message, and where */ - } -} - - - -/* -** {====================================================== -** 'require' function -** ======================================================= -*/ - - -static int readable (const char *filename) { - FILE *f = fopen(filename, "r"); /* try to open file */ - if (f == NULL) return 0; /* open failed */ - fclose(f); - return 1; -} - - -static const char *pushnexttemplate (lua_State *L, const char *path) { - const char *l; - while (*path == *LUA_PATHSEP) path++; /* skip separators */ - if (*path == '\0') return NULL; /* no more templates */ - l = strchr(path, *LUA_PATHSEP); /* find next separator */ - if (l == NULL) l = path + strlen(path); - lua_pushlstring(L, path, l - path); /* template */ - return l; -} - - -static const char *findfile (lua_State *L, const char *name, - const char *pname) { - const char *path; - name = luaL_gsub(L, name, ".", LUA_DIRSEP); - lua_getfield(L, LUA_ENVIRONINDEX, pname); - path = lua_tostring(L, -1); - if (path == NULL) - luaL_error(L, LUA_QL("package.%s") " must be a string", pname); - lua_pushliteral(L, ""); /* error accumulator */ - while ((path = pushnexttemplate(L, path)) != NULL) { - const char *filename; - filename = luaL_gsub(L, lua_tostring(L, -1), LUA_PATH_MARK, name); - lua_remove(L, -2); /* remove path template */ - if (readable(filename)) /* does file exist and is readable? */ - return filename; /* return that file name */ - lua_pushfstring(L, "\n\tno file " LUA_QS, filename); - lua_remove(L, -2); /* remove file name */ - lua_concat(L, 2); /* add entry to possible error message */ - } - return NULL; /* not found */ -} - - -static void loaderror (lua_State *L, const char *filename) { - luaL_error(L, "error loading module " LUA_QS " from file " LUA_QS ":\n\t%s", - lua_tostring(L, 1), filename, lua_tostring(L, -1)); -} - - -static int loader_Lua (lua_State *L) { - const char *filename; - const char *name = luaL_checkstring(L, 1); - filename = findfile(L, name, "path"); - if (filename == NULL) return 1; /* library not found in this path */ - if (luaL_loadfile(L, filename) != 0) - loaderror(L, filename); - return 1; /* library loaded successfully */ -} - - -static const char *mkfuncname (lua_State *L, const char *modname) { - const char *funcname; - const char *mark = strchr(modname, *LUA_IGMARK); - if (mark) modname = mark + 1; - funcname = luaL_gsub(L, modname, ".", LUA_OFSEP); - funcname = lua_pushfstring(L, POF"%s", funcname); - lua_remove(L, -2); /* remove 'gsub' result */ - return funcname; -} - - -static int loader_C (lua_State *L) { - const char *funcname; - const char *name = luaL_checkstring(L, 1); - const char *filename = findfile(L, name, "cpath"); - if (filename == NULL) return 1; /* library not found in this path */ - funcname = mkfuncname(L, name); - if (ll_loadfunc(L, filename, funcname) != 0) - loaderror(L, filename); - return 1; /* library loaded successfully */ -} - - -static int loader_Croot (lua_State *L) { - const char *funcname; - const char *filename; - const char *name = luaL_checkstring(L, 1); - const char *p = strchr(name, '.'); - int stat; - if (p == NULL) return 0; /* is root */ - lua_pushlstring(L, name, p - name); - filename = findfile(L, lua_tostring(L, -1), "cpath"); - if (filename == NULL) return 1; /* root not found */ - funcname = mkfuncname(L, name); - if ((stat = ll_loadfunc(L, filename, funcname)) != 0) { - if (stat != ERRFUNC) loaderror(L, filename); /* real error */ - lua_pushfstring(L, "\n\tno module " LUA_QS " in file " LUA_QS, - name, filename); - return 1; /* function not found */ - } - return 1; -} - - -static int loader_preload (lua_State *L) { - const char *name = luaL_checkstring(L, 1); - lua_getfield(L, LUA_ENVIRONINDEX, "preload"); - if (!lua_istable(L, -1)) - luaL_error(L, LUA_QL("package.preload") " must be a table"); - lua_getfield(L, -1, name); - if (lua_isnil(L, -1)) /* not found? */ - lua_pushfstring(L, "\n\tno field package.preload['%s']", name); - return 1; -} - - -static const int sentinel_ = 0; -#define sentinel ((void *)&sentinel_) - - -static int ll_require (lua_State *L) { - const char *name = luaL_checkstring(L, 1); - int i; - lua_settop(L, 1); /* _LOADED table will be at index 2 */ - lua_getfield(L, LUA_REGISTRYINDEX, "_LOADED"); - lua_getfield(L, 2, name); - if (lua_toboolean(L, -1)) { /* is it there? */ - if (lua_touserdata(L, -1) == sentinel) /* check loops */ - luaL_error(L, "loop or previous error loading module " LUA_QS, name); - return 1; /* package is already loaded */ - } - /* else must load it; iterate over available loaders */ - lua_getfield(L, LUA_ENVIRONINDEX, "loaders"); - if (!lua_istable(L, -1)) - luaL_error(L, LUA_QL("package.loaders") " must be a table"); - lua_pushliteral(L, ""); /* error message accumulator */ - for (i=1; ; i++) { - lua_rawgeti(L, -2, i); /* get a loader */ - if (lua_isnil(L, -1)) - luaL_error(L, "module " LUA_QS " not found:%s", - name, lua_tostring(L, -2)); - lua_pushstring(L, name); - lua_call(L, 1, 1); /* call it */ - if (lua_isfunction(L, -1)) /* did it find module? */ - break; /* module loaded successfully */ - else if (lua_isstring(L, -1)) /* loader returned error message? */ - lua_concat(L, 2); /* accumulate it */ - else - lua_pop(L, 1); - } - lua_pushlightuserdata(L, sentinel); - lua_setfield(L, 2, name); /* _LOADED[name] = sentinel */ - lua_pushstring(L, name); /* pass name as argument to module */ - lua_call(L, 1, 1); /* run loaded module */ - if (!lua_isnil(L, -1)) /* non-nil return? */ - lua_setfield(L, 2, name); /* _LOADED[name] = returned value */ - lua_getfield(L, 2, name); - if (lua_touserdata(L, -1) == sentinel) { /* module did not set a value? */ - lua_pushboolean(L, 1); /* use true as result */ - lua_pushvalue(L, -1); /* extra copy to be returned */ - lua_setfield(L, 2, name); /* _LOADED[name] = true */ - } - return 1; -} - -/* }====================================================== */ - - - -/* -** {====================================================== -** 'module' function -** ======================================================= -*/ - - -static void setfenv (lua_State *L) { - lua_Debug ar; - if (lua_getstack(L, 1, &ar) == 0 || - lua_getinfo(L, "f", &ar) == 0 || /* get calling function */ - lua_iscfunction(L, -1)) - luaL_error(L, LUA_QL("module") " not called from a Lua function"); - lua_pushvalue(L, -2); - lua_setfenv(L, -2); - lua_pop(L, 1); -} - - -static void dooptions (lua_State *L, int n) { - int i; - for (i = 2; i <= n; i++) { - lua_pushvalue(L, i); /* get option (a function) */ - lua_pushvalue(L, -2); /* module */ - lua_call(L, 1, 0); - } -} - - -static void modinit (lua_State *L, const char *modname) { - const char *dot; - lua_pushvalue(L, -1); - lua_setfield(L, -2, "_M"); /* module._M = module */ - lua_pushstring(L, modname); - lua_setfield(L, -2, "_NAME"); - dot = strrchr(modname, '.'); /* look for last dot in module name */ - if (dot == NULL) dot = modname; - else dot++; - /* set _PACKAGE as package name (full module name minus last part) */ - lua_pushlstring(L, modname, dot - modname); - lua_setfield(L, -2, "_PACKAGE"); -} - - -static int ll_module (lua_State *L) { - const char *modname = luaL_checkstring(L, 1); - int loaded = lua_gettop(L) + 1; /* index of _LOADED table */ - lua_getfield(L, LUA_REGISTRYINDEX, "_LOADED"); - lua_getfield(L, loaded, modname); /* get _LOADED[modname] */ - if (!lua_istable(L, -1)) { /* not found? */ - lua_pop(L, 1); /* remove previous result */ - /* try global variable (and create one if it does not exist) */ - if (luaL_findtable(L, LUA_GLOBALSINDEX, modname, 1) != NULL) - return luaL_error(L, "name conflict for module " LUA_QS, modname); - lua_pushvalue(L, -1); - lua_setfield(L, loaded, modname); /* _LOADED[modname] = new table */ - } - /* check whether table already has a _NAME field */ - lua_getfield(L, -1, "_NAME"); - if (!lua_isnil(L, -1)) /* is table an initialized module? */ - lua_pop(L, 1); - else { /* no; initialize it */ - lua_pop(L, 1); - modinit(L, modname); - } - lua_pushvalue(L, -1); - setfenv(L); - dooptions(L, loaded - 1); - return 0; -} - - -static int ll_seeall (lua_State *L) { - luaL_checktype(L, 1, LUA_TTABLE); - if (!lua_getmetatable(L, 1)) { - lua_createtable(L, 0, 1); /* create new metatable */ - lua_pushvalue(L, -1); - lua_setmetatable(L, 1); - } - lua_pushvalue(L, LUA_GLOBALSINDEX); - lua_setfield(L, -2, "__index"); /* mt.__index = _G */ - return 0; -} - - -/* }====================================================== */ - - - -/* auxiliary mark (for internal use) */ -#define AUXMARK "\1" - -static void setpath (lua_State *L, const char *fieldname, const char *envname, - const char *def) { - const char *path = getenv(envname); - if (path == NULL) /* no environment variable? */ - lua_pushstring(L, def); /* use default */ - else { - /* replace ";;" by ";AUXMARK;" and then AUXMARK by default path */ - path = luaL_gsub(L, path, LUA_PATHSEP LUA_PATHSEP, - LUA_PATHSEP AUXMARK LUA_PATHSEP); - luaL_gsub(L, path, AUXMARK, def); - lua_remove(L, -2); - } - setprogdir(L); - lua_setfield(L, -2, fieldname); -} - - -static const luaL_Reg pk_funcs[] = { - {"loadlib", ll_loadlib}, - {"seeall", ll_seeall}, - {NULL, NULL} -}; - - -static const luaL_Reg ll_funcs[] = { - {"module", ll_module}, - {"require", ll_require}, - {NULL, NULL} -}; - - -static const lua_CFunction loaders[] = - {loader_preload, loader_Lua, loader_C, loader_Croot, NULL}; - - -LUALIB_API int luaopen_package (lua_State *L) { - int i; - /* create new type _LOADLIB */ - luaL_newmetatable(L, "_LOADLIB"); - lua_pushcfunction(L, gctm); - lua_setfield(L, -2, "__gc"); - /* create `package' table */ - luaL_register(L, LUA_LOADLIBNAME, pk_funcs); -#if defined(LUA_COMPAT_LOADLIB) - lua_getfield(L, -1, "loadlib"); - lua_setfield(L, LUA_GLOBALSINDEX, "loadlib"); -#endif - lua_pushvalue(L, -1); - lua_replace(L, LUA_ENVIRONINDEX); - /* create `loaders' table */ - lua_createtable(L, 0, sizeof(loaders)/sizeof(loaders[0]) - 1); - /* fill it with pre-defined loaders */ - for (i=0; loaders[i] != NULL; i++) { - lua_pushcfunction(L, loaders[i]); - lua_rawseti(L, -2, i+1); - } - lua_setfield(L, -2, "loaders"); /* put it in field `loaders' */ - setpath(L, "path", LUA_PATH, LUA_PATH_DEFAULT); /* set field `path' */ - setpath(L, "cpath", LUA_CPATH, LUA_CPATH_DEFAULT); /* set field `cpath' */ - /* store config information */ - lua_pushliteral(L, LUA_DIRSEP "\n" LUA_PATHSEP "\n" LUA_PATH_MARK "\n" - LUA_EXECDIR "\n" LUA_IGMARK); - lua_setfield(L, -2, "config"); - /* set field `loaded' */ - luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 2); - lua_setfield(L, -2, "loaded"); - /* set field `preload' */ - lua_newtable(L); - lua_setfield(L, -2, "preload"); - lua_pushvalue(L, LUA_GLOBALSINDEX); - luaL_register(L, NULL, ll_funcs); /* open lib into global table */ - lua_pop(L, 1); - return 1; /* return 'package' table */ -} - diff --git a/lua/lua/lobject.c b/lua/lua/lobject.c deleted file mode 100644 index 4ff50732a4..0000000000 --- a/lua/lua/lobject.c +++ /dev/null @@ -1,214 +0,0 @@ -/* -** $Id: lobject.c,v 2.22.1.1 2007/12/27 13:02:25 roberto Exp $ -** Some generic functions over Lua objects -** See Copyright Notice in lua.h -*/ - -#include -#include -#include -#include -#include - -#define lobject_c -#define LUA_CORE - -#include "lua.h" - -#include "ldo.h" -#include "lmem.h" -#include "lobject.h" -#include "lstate.h" -#include "lstring.h" -#include "lvm.h" - - - -const TValue luaO_nilobject_ = {{NULL}, LUA_TNIL}; - - -/* -** converts an integer to a "floating point byte", represented as -** (eeeeexxx), where the real value is (1xxx) * 2^(eeeee - 1) if -** eeeee != 0 and (xxx) otherwise. -*/ -int luaO_int2fb (unsigned int x) { - int e = 0; /* expoent */ - while (x >= 16) { - x = (x+1) >> 1; - e++; - } - if (x < 8) return x; - else return ((e+1) << 3) | (cast_int(x) - 8); -} - - -/* converts back */ -int luaO_fb2int (int x) { - int e = (x >> 3) & 31; - if (e == 0) return x; - else return ((x & 7)+8) << (e - 1); -} - - -int luaO_log2 (unsigned int x) { - static const lu_byte log_2[256] = { - 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 - }; - int l = -1; - while (x >= 256) { l += 8; x >>= 8; } - return l + log_2[x]; - -} - - -int luaO_rawequalObj (const TValue *t1, const TValue *t2) { - if (ttype(t1) != ttype(t2)) return 0; - else switch (ttype(t1)) { - case LUA_TNIL: - return 1; - case LUA_TNUMBER: - return luai_numeq(nvalue(t1), nvalue(t2)); - case LUA_TBOOLEAN: - return bvalue(t1) == bvalue(t2); /* boolean true must be 1 !! */ - case LUA_TLIGHTUSERDATA: - return pvalue(t1) == pvalue(t2); - default: - lua_assert(iscollectable(t1)); - return gcvalue(t1) == gcvalue(t2); - } -} - - -int luaO_str2d (const char *s, lua_Number *result) { - char *endptr; - *result = lua_str2number(s, &endptr); - if (endptr == s) return 0; /* conversion failed */ - if (*endptr == 'x' || *endptr == 'X') /* maybe an hexadecimal constant? */ - *result = cast_num(strtoul(s, &endptr, 16)); - if (*endptr == '\0') return 1; /* most common case */ - while (isspace(cast(unsigned char, *endptr))) endptr++; - if (*endptr != '\0') return 0; /* invalid trailing characters? */ - return 1; -} - - - -static void pushstr (lua_State *L, const char *str) { - setsvalue2s(L, L->top, luaS_new(L, str)); - incr_top(L); -} - - -/* this function handles only `%d', `%c', %f, %p, and `%s' formats */ -const char *luaO_pushvfstring (lua_State *L, const char *fmt, va_list argp) { - int n = 1; - pushstr(L, ""); - for (;;) { - const char *e = strchr(fmt, '%'); - if (e == NULL) break; - setsvalue2s(L, L->top, luaS_newlstr(L, fmt, e-fmt)); - incr_top(L); - switch (*(e+1)) { - case 's': { - const char *s = va_arg(argp, char *); - if (s == NULL) s = "(null)"; - pushstr(L, s); - break; - } - case 'c': { - char buff[2]; - buff[0] = cast(char, va_arg(argp, int)); - buff[1] = '\0'; - pushstr(L, buff); - break; - } - case 'd': { - setnvalue(L->top, cast_num(va_arg(argp, int))); - incr_top(L); - break; - } - case 'f': { - setnvalue(L->top, cast_num(va_arg(argp, l_uacNumber))); - incr_top(L); - break; - } - case 'p': { - char buff[4*sizeof(void *) + 8]; /* should be enough space for a `%p' */ - sprintf(buff, "%p", va_arg(argp, void *)); - pushstr(L, buff); - break; - } - case '%': { - pushstr(L, "%"); - break; - } - default: { - char buff[3]; - buff[0] = '%'; - buff[1] = *(e+1); - buff[2] = '\0'; - pushstr(L, buff); - break; - } - } - n += 2; - fmt = e+2; - } - pushstr(L, fmt); - luaV_concat(L, n+1, cast_int(L->top - L->base) - 1); - L->top -= n; - return svalue(L->top - 1); -} - - -const char *luaO_pushfstring (lua_State *L, const char *fmt, ...) { - const char *msg; - va_list argp; - va_start(argp, fmt); - msg = luaO_pushvfstring(L, fmt, argp); - va_end(argp); - return msg; -} - - -void luaO_chunkid (char *out, const char *source, size_t bufflen) { - if (*source == '=') { - strncpy(out, source+1, bufflen); /* remove first char */ - out[bufflen-1] = '\0'; /* ensures null termination */ - } - else { /* out = "source", or "...source" */ - if (*source == '@') { - size_t l; - source++; /* skip the `@' */ - bufflen -= sizeof(" '...' "); - l = strlen(source); - strcpy(out, ""); - if (l > bufflen) { - source += (l-bufflen); /* get last part of file name */ - strcat(out, "..."); - } - strcat(out, source); - } - else { /* out = [string "string"] */ - size_t len = strcspn(source, "\n\r"); /* stop at first newline */ - bufflen -= sizeof(" [string \"...\"] "); - if (len > bufflen) len = bufflen; - strcpy(out, "[string \""); - if (source[len] != '\0') { /* must truncate? */ - strncat(out, source, len); - strcat(out, "..."); - } - else - strcat(out, source); - strcat(out, "\"]"); - } - } -} diff --git a/lua/lua/lobject.h b/lua/lua/lobject.h deleted file mode 100644 index f1e447ef3b..0000000000 --- a/lua/lua/lobject.h +++ /dev/null @@ -1,381 +0,0 @@ -/* -** $Id: lobject.h,v 2.20.1.2 2008/08/06 13:29:48 roberto Exp $ -** Type definitions for Lua objects -** See Copyright Notice in lua.h -*/ - - -#ifndef lobject_h -#define lobject_h - - -#include - - -#include "llimits.h" -#include "lua.h" - - -/* tags for values visible from Lua */ -#define LAST_TAG LUA_TTHREAD - -#define NUM_TAGS (LAST_TAG+1) - - -/* -** Extra tags for non-values -*/ -#define LUA_TPROTO (LAST_TAG+1) -#define LUA_TUPVAL (LAST_TAG+2) -#define LUA_TDEADKEY (LAST_TAG+3) - - -/* -** Union of all collectable objects -*/ -typedef union GCObject GCObject; - - -/* -** Common Header for all collectable objects (in macro form, to be -** included in other objects) -*/ -#define CommonHeader GCObject *next; lu_byte tt; lu_byte marked - - -/* -** Common header in struct form -*/ -typedef struct GCheader { - CommonHeader; -} GCheader; - - - - -/* -** Union of all Lua values -*/ -typedef union { - GCObject *gc; - void *p; - lua_Number n; - int b; -} Value; - - -/* -** Tagged Values -*/ - -#define TValuefields Value value; int tt - -typedef struct lua_TValue { - TValuefields; -} TValue; - - -/* Macros to test type */ -#define ttisnil(o) (ttype(o) == LUA_TNIL) -#define ttisnumber(o) (ttype(o) == LUA_TNUMBER) -#define ttisstring(o) (ttype(o) == LUA_TSTRING) -#define ttistable(o) (ttype(o) == LUA_TTABLE) -#define ttisfunction(o) (ttype(o) == LUA_TFUNCTION) -#define ttisboolean(o) (ttype(o) == LUA_TBOOLEAN) -#define ttisuserdata(o) (ttype(o) == LUA_TUSERDATA) -#define ttisthread(o) (ttype(o) == LUA_TTHREAD) -#define ttislightuserdata(o) (ttype(o) == LUA_TLIGHTUSERDATA) - -/* Macros to access values */ -#define ttype(o) ((o)->tt) -#define gcvalue(o) check_exp(iscollectable(o), (o)->value.gc) -#define pvalue(o) check_exp(ttislightuserdata(o), (o)->value.p) -#define nvalue(o) check_exp(ttisnumber(o), (o)->value.n) -#define rawtsvalue(o) check_exp(ttisstring(o), &(o)->value.gc->ts) -#define tsvalue(o) (&rawtsvalue(o)->tsv) -#define rawuvalue(o) check_exp(ttisuserdata(o), &(o)->value.gc->u) -#define uvalue(o) (&rawuvalue(o)->uv) -#define clvalue(o) check_exp(ttisfunction(o), &(o)->value.gc->cl) -#define hvalue(o) check_exp(ttistable(o), &(o)->value.gc->h) -#define bvalue(o) check_exp(ttisboolean(o), (o)->value.b) -#define thvalue(o) check_exp(ttisthread(o), &(o)->value.gc->th) - -#define l_isfalse(o) (ttisnil(o) || (ttisboolean(o) && bvalue(o) == 0)) - -/* -** for internal debug only -*/ -#define checkconsistency(obj) \ - lua_assert(!iscollectable(obj) || (ttype(obj) == (obj)->value.gc->gch.tt)) - -#define checkliveness(g,obj) \ - lua_assert(!iscollectable(obj) || \ - ((ttype(obj) == (obj)->value.gc->gch.tt) && !isdead(g, (obj)->value.gc))) - - -/* Macros to set values */ -#define setnilvalue(obj) ((obj)->tt=LUA_TNIL) - -#define setnvalue(obj,x) \ - { TValue *i_o=(obj); i_o->value.n=(x); i_o->tt=LUA_TNUMBER; } - -#define setpvalue(obj,x) \ - { TValue *i_o=(obj); i_o->value.p=(x); i_o->tt=LUA_TLIGHTUSERDATA; } - -#define setbvalue(obj,x) \ - { TValue *i_o=(obj); i_o->value.b=(x); i_o->tt=LUA_TBOOLEAN; } - -#define setsvalue(L,obj,x) \ - { TValue *i_o=(obj); \ - i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TSTRING; \ - checkliveness(G(L),i_o); } - -#define setuvalue(L,obj,x) \ - { TValue *i_o=(obj); \ - i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TUSERDATA; \ - checkliveness(G(L),i_o); } - -#define setthvalue(L,obj,x) \ - { TValue *i_o=(obj); \ - i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TTHREAD; \ - checkliveness(G(L),i_o); } - -#define setclvalue(L,obj,x) \ - { TValue *i_o=(obj); \ - i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TFUNCTION; \ - checkliveness(G(L),i_o); } - -#define sethvalue(L,obj,x) \ - { TValue *i_o=(obj); \ - i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TTABLE; \ - checkliveness(G(L),i_o); } - -#define setptvalue(L,obj,x) \ - { TValue *i_o=(obj); \ - i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TPROTO; \ - checkliveness(G(L),i_o); } - - - - -#define setobj(L,obj1,obj2) \ - { const TValue *o2=(obj2); TValue *o1=(obj1); \ - o1->value = o2->value; o1->tt=o2->tt; \ - checkliveness(G(L),o1); } - - -/* -** different types of sets, according to destination -*/ - -/* from stack to (same) stack */ -#define setobjs2s setobj -/* to stack (not from same stack) */ -#define setobj2s setobj -#define setsvalue2s setsvalue -#define sethvalue2s sethvalue -#define setptvalue2s setptvalue -/* from table to same table */ -#define setobjt2t setobj -/* to table */ -#define setobj2t setobj -/* to new object */ -#define setobj2n setobj -#define setsvalue2n setsvalue - -#define setttype(obj, tt) (ttype(obj) = (tt)) - - -#define iscollectable(o) (ttype(o) >= LUA_TSTRING) - - - -typedef TValue *StkId; /* index to stack elements */ - - -/* -** String headers for string table -*/ -typedef union TString { - L_Umaxalign dummy; /* ensures maximum alignment for strings */ - struct { - CommonHeader; - lu_byte reserved; - unsigned int hash; - size_t len; - } tsv; -} TString; - - -#define getstr(ts) cast(const char *, (ts) + 1) -#define svalue(o) getstr(rawtsvalue(o)) - - - -typedef union Udata { - L_Umaxalign dummy; /* ensures maximum alignment for `local' udata */ - struct { - CommonHeader; - struct Table *metatable; - struct Table *env; - size_t len; - } uv; -} Udata; - - - - -/* -** Function Prototypes -*/ -typedef struct Proto { - CommonHeader; - TValue *k; /* constants used by the function */ - Instruction *code; - struct Proto **p; /* functions defined inside the function */ - int *lineinfo; /* map from opcodes to source lines */ - struct LocVar *locvars; /* information about local variables */ - TString **upvalues; /* upvalue names */ - TString *source; - int sizeupvalues; - int sizek; /* size of `k' */ - int sizecode; - int sizelineinfo; - int sizep; /* size of `p' */ - int sizelocvars; - int linedefined; - int lastlinedefined; - GCObject *gclist; - lu_byte nups; /* number of upvalues */ - lu_byte numparams; - lu_byte is_vararg; - lu_byte maxstacksize; -} Proto; - - -/* masks for new-style vararg */ -#define VARARG_HASARG 1 -#define VARARG_ISVARARG 2 -#define VARARG_NEEDSARG 4 - - -typedef struct LocVar { - TString *varname; - int startpc; /* first point where variable is active */ - int endpc; /* first point where variable is dead */ -} LocVar; - - - -/* -** Upvalues -*/ - -typedef struct UpVal { - CommonHeader; - TValue *v; /* points to stack or to its own value */ - union { - TValue value; /* the value (when closed) */ - struct { /* double linked list (when open) */ - struct UpVal *prev; - struct UpVal *next; - } l; - } u; -} UpVal; - - -/* -** Closures -*/ - -#define ClosureHeader \ - CommonHeader; lu_byte isC; lu_byte nupvalues; GCObject *gclist; \ - struct Table *env - -typedef struct CClosure { - ClosureHeader; - lua_CFunction f; - TValue upvalue[1]; -} CClosure; - - -typedef struct LClosure { - ClosureHeader; - struct Proto *p; - UpVal *upvals[1]; -} LClosure; - - -typedef union Closure { - CClosure c; - LClosure l; -} Closure; - - -#define iscfunction(o) (ttype(o) == LUA_TFUNCTION && clvalue(o)->c.isC) -#define isLfunction(o) (ttype(o) == LUA_TFUNCTION && !clvalue(o)->c.isC) - - -/* -** Tables -*/ - -typedef union TKey { - struct { - TValuefields; - struct Node *next; /* for chaining */ - } nk; - TValue tvk; -} TKey; - - -typedef struct Node { - TValue i_val; - TKey i_key; -} Node; - - -typedef struct Table { - CommonHeader; - lu_byte flags; /* 1<

lsizenode)) - - -#define luaO_nilobject (&luaO_nilobject_) - -LUAI_DATA const TValue luaO_nilobject_; - -#define ceillog2(x) (luaO_log2((x)-1) + 1) - -LUAI_FUNC int luaO_log2 (unsigned int x); -LUAI_FUNC int luaO_int2fb (unsigned int x); -LUAI_FUNC int luaO_fb2int (int x); -LUAI_FUNC int luaO_rawequalObj (const TValue *t1, const TValue *t2); -LUAI_FUNC int luaO_str2d (const char *s, lua_Number *result); -LUAI_FUNC const char *luaO_pushvfstring (lua_State *L, const char *fmt, - va_list argp); -LUAI_FUNC const char *luaO_pushfstring (lua_State *L, const char *fmt, ...); -LUAI_FUNC void luaO_chunkid (char *out, const char *source, size_t len); - - -#endif - diff --git a/lua/lua/lopcodes.c b/lua/lua/lopcodes.c deleted file mode 100644 index 4cc745230b..0000000000 --- a/lua/lua/lopcodes.c +++ /dev/null @@ -1,102 +0,0 @@ -/* -** $Id: lopcodes.c,v 1.37.1.1 2007/12/27 13:02:25 roberto Exp $ -** See Copyright Notice in lua.h -*/ - - -#define lopcodes_c -#define LUA_CORE - - -#include "lopcodes.h" - - -/* ORDER OP */ - -const char *const luaP_opnames[NUM_OPCODES+1] = { - "MOVE", - "LOADK", - "LOADBOOL", - "LOADNIL", - "GETUPVAL", - "GETGLOBAL", - "GETTABLE", - "SETGLOBAL", - "SETUPVAL", - "SETTABLE", - "NEWTABLE", - "SELF", - "ADD", - "SUB", - "MUL", - "DIV", - "MOD", - "POW", - "UNM", - "NOT", - "LEN", - "CONCAT", - "JMP", - "EQ", - "LT", - "LE", - "TEST", - "TESTSET", - "CALL", - "TAILCALL", - "RETURN", - "FORLOOP", - "FORPREP", - "TFORLOOP", - "SETLIST", - "CLOSE", - "CLOSURE", - "VARARG", - NULL -}; - - -#define opmode(t,a,b,c,m) (((t)<<7) | ((a)<<6) | ((b)<<4) | ((c)<<2) | (m)) - -const lu_byte luaP_opmodes[NUM_OPCODES] = { -/* T A B C mode opcode */ - opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_MOVE */ - ,opmode(0, 1, OpArgK, OpArgN, iABx) /* OP_LOADK */ - ,opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_LOADBOOL */ - ,opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_LOADNIL */ - ,opmode(0, 1, OpArgU, OpArgN, iABC) /* OP_GETUPVAL */ - ,opmode(0, 1, OpArgK, OpArgN, iABx) /* OP_GETGLOBAL */ - ,opmode(0, 1, OpArgR, OpArgK, iABC) /* OP_GETTABLE */ - ,opmode(0, 0, OpArgK, OpArgN, iABx) /* OP_SETGLOBAL */ - ,opmode(0, 0, OpArgU, OpArgN, iABC) /* OP_SETUPVAL */ - ,opmode(0, 0, OpArgK, OpArgK, iABC) /* OP_SETTABLE */ - ,opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_NEWTABLE */ - ,opmode(0, 1, OpArgR, OpArgK, iABC) /* OP_SELF */ - ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_ADD */ - ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_SUB */ - ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_MUL */ - ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_DIV */ - ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_MOD */ - ,opmode(0, 1, OpArgK, OpArgK, iABC) /* OP_POW */ - ,opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_UNM */ - ,opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_NOT */ - ,opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_LEN */ - ,opmode(0, 1, OpArgR, OpArgR, iABC) /* OP_CONCAT */ - ,opmode(0, 0, OpArgR, OpArgN, iAsBx) /* OP_JMP */ - ,opmode(1, 0, OpArgK, OpArgK, iABC) /* OP_EQ */ - ,opmode(1, 0, OpArgK, OpArgK, iABC) /* OP_LT */ - ,opmode(1, 0, OpArgK, OpArgK, iABC) /* OP_LE */ - ,opmode(1, 1, OpArgR, OpArgU, iABC) /* OP_TEST */ - ,opmode(1, 1, OpArgR, OpArgU, iABC) /* OP_TESTSET */ - ,opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_CALL */ - ,opmode(0, 1, OpArgU, OpArgU, iABC) /* OP_TAILCALL */ - ,opmode(0, 0, OpArgU, OpArgN, iABC) /* OP_RETURN */ - ,opmode(0, 1, OpArgR, OpArgN, iAsBx) /* OP_FORLOOP */ - ,opmode(0, 1, OpArgR, OpArgN, iAsBx) /* OP_FORPREP */ - ,opmode(1, 0, OpArgN, OpArgU, iABC) /* OP_TFORLOOP */ - ,opmode(0, 0, OpArgU, OpArgU, iABC) /* OP_SETLIST */ - ,opmode(0, 0, OpArgN, OpArgN, iABC) /* OP_CLOSE */ - ,opmode(0, 1, OpArgU, OpArgN, iABx) /* OP_CLOSURE */ - ,opmode(0, 1, OpArgU, OpArgN, iABC) /* OP_VARARG */ -}; - diff --git a/lua/lua/lopcodes.h b/lua/lua/lopcodes.h deleted file mode 100644 index 41224d6ee1..0000000000 --- a/lua/lua/lopcodes.h +++ /dev/null @@ -1,268 +0,0 @@ -/* -** $Id: lopcodes.h,v 1.125.1.1 2007/12/27 13:02:25 roberto Exp $ -** Opcodes for Lua virtual machine -** See Copyright Notice in lua.h -*/ - -#ifndef lopcodes_h -#define lopcodes_h - -#include "llimits.h" - - -/*=========================================================================== - We assume that instructions are unsigned numbers. - All instructions have an opcode in the first 6 bits. - Instructions can have the following fields: - `A' : 8 bits - `B' : 9 bits - `C' : 9 bits - `Bx' : 18 bits (`B' and `C' together) - `sBx' : signed Bx - - A signed argument is represented in excess K; that is, the number - value is the unsigned value minus K. K is exactly the maximum value - for that argument (so that -max is represented by 0, and +max is - represented by 2*max), which is half the maximum for the corresponding - unsigned argument. -===========================================================================*/ - - -enum OpMode {iABC, iABx, iAsBx}; /* basic instruction format */ - - -/* -** size and position of opcode arguments. -*/ -#define SIZE_C 9 -#define SIZE_B 9 -#define SIZE_Bx (SIZE_C + SIZE_B) -#define SIZE_A 8 - -#define SIZE_OP 6 - -#define POS_OP 0 -#define POS_A (POS_OP + SIZE_OP) -#define POS_C (POS_A + SIZE_A) -#define POS_B (POS_C + SIZE_C) -#define POS_Bx POS_C - - -/* -** limits for opcode arguments. -** we use (signed) int to manipulate most arguments, -** so they must fit in LUAI_BITSINT-1 bits (-1 for sign) -*/ -#if SIZE_Bx < LUAI_BITSINT-1 -#define MAXARG_Bx ((1<>1) /* `sBx' is signed */ -#else -#define MAXARG_Bx MAX_INT -#define MAXARG_sBx MAX_INT -#endif - - -#define MAXARG_A ((1<>POS_OP) & MASK1(SIZE_OP,0))) -#define SET_OPCODE(i,o) ((i) = (((i)&MASK0(SIZE_OP,POS_OP)) | \ - ((cast(Instruction, o)<>POS_A) & MASK1(SIZE_A,0))) -#define SETARG_A(i,u) ((i) = (((i)&MASK0(SIZE_A,POS_A)) | \ - ((cast(Instruction, u)<>POS_B) & MASK1(SIZE_B,0))) -#define SETARG_B(i,b) ((i) = (((i)&MASK0(SIZE_B,POS_B)) | \ - ((cast(Instruction, b)<>POS_C) & MASK1(SIZE_C,0))) -#define SETARG_C(i,b) ((i) = (((i)&MASK0(SIZE_C,POS_C)) | \ - ((cast(Instruction, b)<>POS_Bx) & MASK1(SIZE_Bx,0))) -#define SETARG_Bx(i,b) ((i) = (((i)&MASK0(SIZE_Bx,POS_Bx)) | \ - ((cast(Instruction, b)< C) then pc++ */ -OP_TESTSET,/* A B C if (R(B) <=> C) then R(A) := R(B) else pc++ */ - -OP_CALL,/* A B C R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) */ -OP_TAILCALL,/* A B C return R(A)(R(A+1), ... ,R(A+B-1)) */ -OP_RETURN,/* A B return R(A), ... ,R(A+B-2) (see note) */ - -OP_FORLOOP,/* A sBx R(A)+=R(A+2); - if R(A) =) R(A)*/ -OP_CLOSURE,/* A Bx R(A) := closure(KPROTO[Bx], R(A), ... ,R(A+n)) */ - -OP_VARARG/* A B R(A), R(A+1), ..., R(A+B-1) = vararg */ -} OpCode; - - -#define NUM_OPCODES (cast(int, OP_VARARG) + 1) - - - -/*=========================================================================== - Notes: - (*) In OP_CALL, if (B == 0) then B = top. C is the number of returns - 1, - and can be 0: OP_CALL then sets `top' to last_result+1, so - next open instruction (OP_CALL, OP_RETURN, OP_SETLIST) may use `top'. - - (*) In OP_VARARG, if (B == 0) then use actual number of varargs and - set top (like in OP_CALL with C == 0). - - (*) In OP_RETURN, if (B == 0) then return up to `top' - - (*) In OP_SETLIST, if (B == 0) then B = `top'; - if (C == 0) then next `instruction' is real C - - (*) For comparisons, A specifies what condition the test should accept - (true or false). - - (*) All `skips' (pc++) assume that next instruction is a jump -===========================================================================*/ - - -/* -** masks for instruction properties. The format is: -** bits 0-1: op mode -** bits 2-3: C arg mode -** bits 4-5: B arg mode -** bit 6: instruction set register A -** bit 7: operator is a test -*/ - -enum OpArgMask { - OpArgN, /* argument is not used */ - OpArgU, /* argument is used */ - OpArgR, /* argument is a register or a jump offset */ - OpArgK /* argument is a constant or register/constant */ -}; - -LUAI_DATA const lu_byte luaP_opmodes[NUM_OPCODES]; - -#define getOpMode(m) (cast(enum OpMode, luaP_opmodes[m] & 3)) -#define getBMode(m) (cast(enum OpArgMask, (luaP_opmodes[m] >> 4) & 3)) -#define getCMode(m) (cast(enum OpArgMask, (luaP_opmodes[m] >> 2) & 3)) -#define testAMode(m) (luaP_opmodes[m] & (1 << 6)) -#define testTMode(m) (luaP_opmodes[m] & (1 << 7)) - - -LUAI_DATA const char *const luaP_opnames[NUM_OPCODES+1]; /* opcode names */ - - -/* number of list items to accumulate before a SETLIST instruction */ -#define LFIELDS_PER_FLUSH 50 - - -#endif diff --git a/lua/lua/loslib.c b/lua/lua/loslib.c deleted file mode 100644 index da06a572ac..0000000000 --- a/lua/lua/loslib.c +++ /dev/null @@ -1,243 +0,0 @@ -/* -** $Id: loslib.c,v 1.19.1.3 2008/01/18 16:38:18 roberto Exp $ -** Standard Operating System library -** See Copyright Notice in lua.h -*/ - - -#include -#include -#include -#include -#include - -#define loslib_c -#define LUA_LIB - -#include "lua.h" - -#include "lauxlib.h" -#include "lualib.h" - - -static int os_pushresult (lua_State *L, int i, const char *filename) { - int en = errno; /* calls to Lua API may change this value */ - if (i) { - lua_pushboolean(L, 1); - return 1; - } - else { - lua_pushnil(L); - lua_pushfstring(L, "%s: %s", filename, strerror(en)); - lua_pushinteger(L, en); - return 3; - } -} - - -static int os_execute (lua_State *L) { - lua_pushinteger(L, system(luaL_optstring(L, 1, NULL))); - return 1; -} - - -static int os_remove (lua_State *L) { - const char *filename = luaL_checkstring(L, 1); - return os_pushresult(L, remove(filename) == 0, filename); -} - - -static int os_rename (lua_State *L) { - const char *fromname = luaL_checkstring(L, 1); - const char *toname = luaL_checkstring(L, 2); - return os_pushresult(L, rename(fromname, toname) == 0, fromname); -} - - -static int os_tmpname (lua_State *L) { - char buff[LUA_TMPNAMBUFSIZE]; - int err; - lua_tmpnam(buff, err); - if (err) - return luaL_error(L, "unable to generate a unique filename"); - lua_pushstring(L, buff); - return 1; -} - - -static int os_getenv (lua_State *L) { - lua_pushstring(L, getenv(luaL_checkstring(L, 1))); /* if NULL push nil */ - return 1; -} - - -static int os_clock (lua_State *L) { - lua_pushnumber(L, ((lua_Number)clock())/(lua_Number)CLOCKS_PER_SEC); - return 1; -} - - -/* -** {====================================================== -** Time/Date operations -** { year=%Y, month=%m, day=%d, hour=%H, min=%M, sec=%S, -** wday=%w+1, yday=%j, isdst=? } -** ======================================================= -*/ - -static void setfield (lua_State *L, const char *key, int value) { - lua_pushinteger(L, value); - lua_setfield(L, -2, key); -} - -static void setboolfield (lua_State *L, const char *key, int value) { - if (value < 0) /* undefined? */ - return; /* does not set field */ - lua_pushboolean(L, value); - lua_setfield(L, -2, key); -} - -static int getboolfield (lua_State *L, const char *key) { - int res; - lua_getfield(L, -1, key); - res = lua_isnil(L, -1) ? -1 : lua_toboolean(L, -1); - lua_pop(L, 1); - return res; -} - - -static int getfield (lua_State *L, const char *key, int d) { - int res; - lua_getfield(L, -1, key); - if (lua_isnumber(L, -1)) - res = (int)lua_tointeger(L, -1); - else { - if (d < 0) - return luaL_error(L, "field " LUA_QS " missing in date table", key); - res = d; - } - lua_pop(L, 1); - return res; -} - - -static int os_date (lua_State *L) { - const char *s = luaL_optstring(L, 1, "%c"); - time_t t = luaL_opt(L, (time_t)luaL_checknumber, 2, time(NULL)); - struct tm *stm; - if (*s == '!') { /* UTC? */ - stm = gmtime(&t); - s++; /* skip `!' */ - } - else - stm = localtime(&t); - if (stm == NULL) /* invalid date? */ - lua_pushnil(L); - else if (strcmp(s, "*t") == 0) { - lua_createtable(L, 0, 9); /* 9 = number of fields */ - setfield(L, "sec", stm->tm_sec); - setfield(L, "min", stm->tm_min); - setfield(L, "hour", stm->tm_hour); - setfield(L, "day", stm->tm_mday); - setfield(L, "month", stm->tm_mon+1); - setfield(L, "year", stm->tm_year+1900); - setfield(L, "wday", stm->tm_wday+1); - setfield(L, "yday", stm->tm_yday+1); - setboolfield(L, "isdst", stm->tm_isdst); - } - else { - char cc[3]; - luaL_Buffer b; - cc[0] = '%'; cc[2] = '\0'; - luaL_buffinit(L, &b); - for (; *s; s++) { - if (*s != '%' || *(s + 1) == '\0') /* no conversion specifier? */ - luaL_addchar(&b, *s); - else { - size_t reslen; - char buff[200]; /* should be big enough for any conversion result */ - cc[1] = *(++s); - reslen = strftime(buff, sizeof(buff), cc, stm); - luaL_addlstring(&b, buff, reslen); - } - } - luaL_pushresult(&b); - } - return 1; -} - - -static int os_time (lua_State *L) { - time_t t; - if (lua_isnoneornil(L, 1)) /* called without args? */ - t = time(NULL); /* get current time */ - else { - struct tm ts; - luaL_checktype(L, 1, LUA_TTABLE); - lua_settop(L, 1); /* make sure table is at the top */ - ts.tm_sec = getfield(L, "sec", 0); - ts.tm_min = getfield(L, "min", 0); - ts.tm_hour = getfield(L, "hour", 12); - ts.tm_mday = getfield(L, "day", -1); - ts.tm_mon = getfield(L, "month", -1) - 1; - ts.tm_year = getfield(L, "year", -1) - 1900; - ts.tm_isdst = getboolfield(L, "isdst"); - t = mktime(&ts); - } - if (t == (time_t)(-1)) - lua_pushnil(L); - else - lua_pushnumber(L, (lua_Number)t); - return 1; -} - - -static int os_difftime (lua_State *L) { - lua_pushnumber(L, difftime((time_t)(luaL_checknumber(L, 1)), - (time_t)(luaL_optnumber(L, 2, 0)))); - return 1; -} - -/* }====================================================== */ - - -static int os_setlocale (lua_State *L) { - static const int cat[] = {LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, - LC_NUMERIC, LC_TIME}; - static const char *const catnames[] = {"all", "collate", "ctype", "monetary", - "numeric", "time", NULL}; - const char *l = luaL_optstring(L, 1, NULL); - int op = luaL_checkoption(L, 2, "all", catnames); - lua_pushstring(L, setlocale(cat[op], l)); - return 1; -} - - -static int os_exit (lua_State *L) { - exit(luaL_optint(L, 1, EXIT_SUCCESS)); -} - -static const luaL_Reg syslib[] = { - {"clock", os_clock}, - {"date", os_date}, - {"difftime", os_difftime}, - {"execute", os_execute}, - {"exit", os_exit}, - {"getenv", os_getenv}, - {"remove", os_remove}, - {"rename", os_rename}, - {"setlocale", os_setlocale}, - {"time", os_time}, - {"tmpname", os_tmpname}, - {NULL, NULL} -}; - -/* }====================================================== */ - - - -LUALIB_API int luaopen_os (lua_State *L) { - luaL_register(L, LUA_OSLIBNAME, syslib); - return 1; -} - diff --git a/lua/lua/lparser.c b/lua/lua/lparser.c deleted file mode 100644 index 1e2a9a88b7..0000000000 --- a/lua/lua/lparser.c +++ /dev/null @@ -1,1339 +0,0 @@ -/* -** $Id: lparser.c,v 2.42.1.3 2007/12/28 15:32:23 roberto Exp $ -** Lua Parser -** See Copyright Notice in lua.h -*/ - - -#include - -#define lparser_c -#define LUA_CORE - -#include "lua.h" - -#include "lcode.h" -#include "ldebug.h" -#include "ldo.h" -#include "lfunc.h" -#include "llex.h" -#include "lmem.h" -#include "lobject.h" -#include "lopcodes.h" -#include "lparser.h" -#include "lstate.h" -#include "lstring.h" -#include "ltable.h" - - - -#define hasmultret(k) ((k) == VCALL || (k) == VVARARG) - -#define getlocvar(fs, i) ((fs)->f->locvars[(fs)->actvar[i]]) - -#define luaY_checklimit(fs,v,l,m) if ((v)>(l)) errorlimit(fs,l,m) - - -/* -** nodes for block list (list of active blocks) -*/ -typedef struct BlockCnt { - struct BlockCnt *previous; /* chain */ - int breaklist; /* list of jumps out of this loop */ - lu_byte nactvar; /* # active locals outside the breakable structure */ - lu_byte upval; /* true if some variable in the block is an upvalue */ - lu_byte isbreakable; /* true if `block' is a loop */ -} BlockCnt; - - - -/* -** prototypes for recursive non-terminal functions -*/ -static void chunk (LexState *ls); -static void expr (LexState *ls, expdesc *v); - - -static void anchor_token (LexState *ls) { - if (ls->t.token == TK_NAME || ls->t.token == TK_STRING) { - TString *ts = ls->t.seminfo.ts; - luaX_newstring(ls, getstr(ts), ts->tsv.len); - } -} - - -static void error_expected (LexState *ls, int token) { - luaX_syntaxerror(ls, - luaO_pushfstring(ls->L, LUA_QS " expected", luaX_token2str(ls, token))); -} - - -static void errorlimit (FuncState *fs, int limit, const char *what) { - const char *msg = (fs->f->linedefined == 0) ? - luaO_pushfstring(fs->L, "main function has more than %d %s", limit, what) : - luaO_pushfstring(fs->L, "function at line %d has more than %d %s", - fs->f->linedefined, limit, what); - luaX_lexerror(fs->ls, msg, 0); -} - - -static int testnext (LexState *ls, int c) { - if (ls->t.token == c) { - luaX_next(ls); - return 1; - } - else return 0; -} - - -static void check (LexState *ls, int c) { - if (ls->t.token != c) - error_expected(ls, c); -} - -static void checknext (LexState *ls, int c) { - check(ls, c); - luaX_next(ls); -} - - -#define check_condition(ls,c,msg) { if (!(c)) luaX_syntaxerror(ls, msg); } - - - -static void check_match (LexState *ls, int what, int who, int where) { - if (!testnext(ls, what)) { - if (where == ls->linenumber) - error_expected(ls, what); - else { - luaX_syntaxerror(ls, luaO_pushfstring(ls->L, - LUA_QS " expected (to close " LUA_QS " at line %d)", - luaX_token2str(ls, what), luaX_token2str(ls, who), where)); - } - } -} - - -static TString *str_checkname (LexState *ls) { - TString *ts; - check(ls, TK_NAME); - ts = ls->t.seminfo.ts; - luaX_next(ls); - return ts; -} - - -static void init_exp (expdesc *e, expkind k, int i) { - e->f = e->t = NO_JUMP; - e->k = k; - e->u.s.info = i; -} - - -static void codestring (LexState *ls, expdesc *e, TString *s) { - init_exp(e, VK, luaK_stringK(ls->fs, s)); -} - - -static void checkname(LexState *ls, expdesc *e) { - codestring(ls, e, str_checkname(ls)); -} - - -static int registerlocalvar (LexState *ls, TString *varname) { - FuncState *fs = ls->fs; - Proto *f = fs->f; - int oldsize = f->sizelocvars; - luaM_growvector(ls->L, f->locvars, fs->nlocvars, f->sizelocvars, - LocVar, SHRT_MAX, "too many local variables"); - while (oldsize < f->sizelocvars) f->locvars[oldsize++].varname = NULL; - f->locvars[fs->nlocvars].varname = varname; - luaC_objbarrier(ls->L, f, varname); - return fs->nlocvars++; -} - - -#define new_localvarliteral(ls,v,n) \ - new_localvar(ls, luaX_newstring(ls, "" v, (sizeof(v)/sizeof(char))-1), n) - - -static void new_localvar (LexState *ls, TString *name, int n) { - FuncState *fs = ls->fs; - luaY_checklimit(fs, fs->nactvar+n+1, LUAI_MAXVARS, "local variables"); - fs->actvar[fs->nactvar+n] = cast(unsigned short, registerlocalvar(ls, name)); -} - - -static void adjustlocalvars (LexState *ls, int nvars) { - FuncState *fs = ls->fs; - fs->nactvar = cast_byte(fs->nactvar + nvars); - for (; nvars; nvars--) { - getlocvar(fs, fs->nactvar - nvars).startpc = fs->pc; - } -} - - -static void removevars (LexState *ls, int tolevel) { - FuncState *fs = ls->fs; - while (fs->nactvar > tolevel) - getlocvar(fs, --fs->nactvar).endpc = fs->pc; -} - - -static int indexupvalue (FuncState *fs, TString *name, expdesc *v) { - int i; - Proto *f = fs->f; - int oldsize = f->sizeupvalues; - for (i=0; inups; i++) { - if (fs->upvalues[i].k == v->k && fs->upvalues[i].info == v->u.s.info) { - lua_assert(f->upvalues[i] == name); - return i; - } - } - /* new one */ - luaY_checklimit(fs, f->nups + 1, LUAI_MAXUPVALUES, "upvalues"); - luaM_growvector(fs->L, f->upvalues, f->nups, f->sizeupvalues, - TString *, MAX_INT, ""); - while (oldsize < f->sizeupvalues) f->upvalues[oldsize++] = NULL; - f->upvalues[f->nups] = name; - luaC_objbarrier(fs->L, f, name); - lua_assert(v->k == VLOCAL || v->k == VUPVAL); - fs->upvalues[f->nups].k = cast_byte(v->k); - fs->upvalues[f->nups].info = cast_byte(v->u.s.info); - return f->nups++; -} - - -static int searchvar (FuncState *fs, TString *n) { - int i; - for (i=fs->nactvar-1; i >= 0; i--) { - if (n == getlocvar(fs, i).varname) - return i; - } - return -1; /* not found */ -} - - -static void markupval (FuncState *fs, int level) { - BlockCnt *bl = fs->bl; - while (bl && bl->nactvar > level) bl = bl->previous; - if (bl) bl->upval = 1; -} - - -static int singlevaraux (FuncState *fs, TString *n, expdesc *var, int base) { - if (fs == NULL) { /* no more levels? */ - init_exp(var, VGLOBAL, NO_REG); /* default is global variable */ - return VGLOBAL; - } - else { - int v = searchvar(fs, n); /* look up at current level */ - if (v >= 0) { - init_exp(var, VLOCAL, v); - if (!base) - markupval(fs, v); /* local will be used as an upval */ - return VLOCAL; - } - else { /* not found at current level; try upper one */ - if (singlevaraux(fs->prev, n, var, 0) == VGLOBAL) - return VGLOBAL; - var->u.s.info = indexupvalue(fs, n, var); /* else was LOCAL or UPVAL */ - var->k = VUPVAL; /* upvalue in this level */ - return VUPVAL; - } - } -} - - -static void singlevar (LexState *ls, expdesc *var) { - TString *varname = str_checkname(ls); - FuncState *fs = ls->fs; - if (singlevaraux(fs, varname, var, 1) == VGLOBAL) - var->u.s.info = luaK_stringK(fs, varname); /* info points to global name */ -} - - -static void adjust_assign (LexState *ls, int nvars, int nexps, expdesc *e) { - FuncState *fs = ls->fs; - int extra = nvars - nexps; - if (hasmultret(e->k)) { - extra++; /* includes call itself */ - if (extra < 0) extra = 0; - luaK_setreturns(fs, e, extra); /* last exp. provides the difference */ - if (extra > 1) luaK_reserveregs(fs, extra-1); - } - else { - if (e->k != VVOID) luaK_exp2nextreg(fs, e); /* close last expression */ - if (extra > 0) { - int reg = fs->freereg; - luaK_reserveregs(fs, extra); - luaK_nil(fs, reg, extra); - } - } -} - - -static void enterlevel (LexState *ls) { - if (++ls->L->nCcalls > LUAI_MAXCCALLS) - luaX_lexerror(ls, "chunk has too many syntax levels", 0); -} - - -#define leavelevel(ls) ((ls)->L->nCcalls--) - - -static void enterblock (FuncState *fs, BlockCnt *bl, lu_byte isbreakable) { - bl->breaklist = NO_JUMP; - bl->isbreakable = isbreakable; - bl->nactvar = fs->nactvar; - bl->upval = 0; - bl->previous = fs->bl; - fs->bl = bl; - lua_assert(fs->freereg == fs->nactvar); -} - - -static void leaveblock (FuncState *fs) { - BlockCnt *bl = fs->bl; - fs->bl = bl->previous; - removevars(fs->ls, bl->nactvar); - if (bl->upval) - luaK_codeABC(fs, OP_CLOSE, bl->nactvar, 0, 0); - /* a block either controls scope or breaks (never both) */ - lua_assert(!bl->isbreakable || !bl->upval); - lua_assert(bl->nactvar == fs->nactvar); - fs->freereg = fs->nactvar; /* free registers */ - luaK_patchtohere(fs, bl->breaklist); -} - - -static void pushclosure (LexState *ls, FuncState *func, expdesc *v) { - FuncState *fs = ls->fs; - Proto *f = fs->f; - int oldsize = f->sizep; - int i; - luaM_growvector(ls->L, f->p, fs->np, f->sizep, Proto *, - MAXARG_Bx, "constant table overflow"); - while (oldsize < f->sizep) f->p[oldsize++] = NULL; - f->p[fs->np++] = func->f; - luaC_objbarrier(ls->L, f, func->f); - init_exp(v, VRELOCABLE, luaK_codeABx(fs, OP_CLOSURE, 0, fs->np-1)); - for (i=0; if->nups; i++) { - OpCode o = (func->upvalues[i].k == VLOCAL) ? OP_MOVE : OP_GETUPVAL; - luaK_codeABC(fs, o, 0, func->upvalues[i].info, 0); - } -} - - -static void open_func (LexState *ls, FuncState *fs) { - lua_State *L = ls->L; - Proto *f = luaF_newproto(L); - fs->f = f; - fs->prev = ls->fs; /* linked list of funcstates */ - fs->ls = ls; - fs->L = L; - ls->fs = fs; - fs->pc = 0; - fs->lasttarget = -1; - fs->jpc = NO_JUMP; - fs->freereg = 0; - fs->nk = 0; - fs->np = 0; - fs->nlocvars = 0; - fs->nactvar = 0; - fs->bl = NULL; - f->source = ls->source; - f->maxstacksize = 2; /* registers 0/1 are always valid */ - fs->h = luaH_new(L, 0, 0); - /* anchor table of constants and prototype (to avoid being collected) */ - sethvalue2s(L, L->top, fs->h); - incr_top(L); - setptvalue2s(L, L->top, f); - incr_top(L); -} - - -static void close_func (LexState *ls) { - lua_State *L = ls->L; - FuncState *fs = ls->fs; - Proto *f = fs->f; - removevars(ls, 0); - luaK_ret(fs, 0, 0); /* final return */ - luaM_reallocvector(L, f->code, f->sizecode, fs->pc, Instruction); - f->sizecode = fs->pc; - luaM_reallocvector(L, f->lineinfo, f->sizelineinfo, fs->pc, int); - f->sizelineinfo = fs->pc; - luaM_reallocvector(L, f->k, f->sizek, fs->nk, TValue); - f->sizek = fs->nk; - luaM_reallocvector(L, f->p, f->sizep, fs->np, Proto *); - f->sizep = fs->np; - luaM_reallocvector(L, f->locvars, f->sizelocvars, fs->nlocvars, LocVar); - f->sizelocvars = fs->nlocvars; - luaM_reallocvector(L, f->upvalues, f->sizeupvalues, f->nups, TString *); - f->sizeupvalues = f->nups; - lua_assert(luaG_checkcode(f)); - lua_assert(fs->bl == NULL); - ls->fs = fs->prev; - L->top -= 2; /* remove table and prototype from the stack */ - /* last token read was anchored in defunct function; must reanchor it */ - if (fs) anchor_token(ls); -} - - -Proto *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff, const char *name) { - struct LexState lexstate; - struct FuncState funcstate; - lexstate.buff = buff; - luaX_setinput(L, &lexstate, z, luaS_new(L, name)); - open_func(&lexstate, &funcstate); - funcstate.f->is_vararg = VARARG_ISVARARG; /* main func. is always vararg */ - luaX_next(&lexstate); /* read first token */ - chunk(&lexstate); - check(&lexstate, TK_EOS); - close_func(&lexstate); - lua_assert(funcstate.prev == NULL); - lua_assert(funcstate.f->nups == 0); - lua_assert(lexstate.fs == NULL); - return funcstate.f; -} - - - -/*============================================================*/ -/* GRAMMAR RULES */ -/*============================================================*/ - - -static void field (LexState *ls, expdesc *v) { - /* field -> ['.' | ':'] NAME */ - FuncState *fs = ls->fs; - expdesc key; - luaK_exp2anyreg(fs, v); - luaX_next(ls); /* skip the dot or colon */ - checkname(ls, &key); - luaK_indexed(fs, v, &key); -} - - -static void yindex (LexState *ls, expdesc *v) { - /* index -> '[' expr ']' */ - luaX_next(ls); /* skip the '[' */ - expr(ls, v); - luaK_exp2val(ls->fs, v); - checknext(ls, ']'); -} - - -/* -** {====================================================================== -** Rules for Constructors -** ======================================================================= -*/ - - -struct ConsControl { - expdesc v; /* last list item read */ - expdesc *t; /* table descriptor */ - int nh; /* total number of `record' elements */ - int na; /* total number of array elements */ - int tostore; /* number of array elements pending to be stored */ -}; - - -static void recfield (LexState *ls, struct ConsControl *cc) { - /* recfield -> (NAME | `['exp1`]') = exp1 */ - FuncState *fs = ls->fs; - int reg = ls->fs->freereg; - expdesc key, val; - int rkkey; - if (ls->t.token == TK_NAME) { - luaY_checklimit(fs, cc->nh, MAX_INT, "items in a constructor"); - checkname(ls, &key); - } - else /* ls->t.token == '[' */ - yindex(ls, &key); - cc->nh++; - checknext(ls, '='); - rkkey = luaK_exp2RK(fs, &key); - expr(ls, &val); - luaK_codeABC(fs, OP_SETTABLE, cc->t->u.s.info, rkkey, luaK_exp2RK(fs, &val)); - fs->freereg = reg; /* free registers */ -} - - -static void closelistfield (FuncState *fs, struct ConsControl *cc) { - if (cc->v.k == VVOID) return; /* there is no list item */ - luaK_exp2nextreg(fs, &cc->v); - cc->v.k = VVOID; - if (cc->tostore == LFIELDS_PER_FLUSH) { - luaK_setlist(fs, cc->t->u.s.info, cc->na, cc->tostore); /* flush */ - cc->tostore = 0; /* no more items pending */ - } -} - - -static void lastlistfield (FuncState *fs, struct ConsControl *cc) { - if (cc->tostore == 0) return; - if (hasmultret(cc->v.k)) { - luaK_setmultret(fs, &cc->v); - luaK_setlist(fs, cc->t->u.s.info, cc->na, LUA_MULTRET); - cc->na--; /* do not count last expression (unknown number of elements) */ - } - else { - if (cc->v.k != VVOID) - luaK_exp2nextreg(fs, &cc->v); - luaK_setlist(fs, cc->t->u.s.info, cc->na, cc->tostore); - } -} - - -static void listfield (LexState *ls, struct ConsControl *cc) { - expr(ls, &cc->v); - luaY_checklimit(ls->fs, cc->na, MAX_INT, "items in a constructor"); - cc->na++; - cc->tostore++; -} - - -static void constructor (LexState *ls, expdesc *t) { - /* constructor -> ?? */ - FuncState *fs = ls->fs; - int line = ls->linenumber; - int pc = luaK_codeABC(fs, OP_NEWTABLE, 0, 0, 0); - struct ConsControl cc; - cc.na = cc.nh = cc.tostore = 0; - cc.t = t; - init_exp(t, VRELOCABLE, pc); - init_exp(&cc.v, VVOID, 0); /* no value (yet) */ - luaK_exp2nextreg(ls->fs, t); /* fix it at stack top (for gc) */ - checknext(ls, '{'); - do { - lua_assert(cc.v.k == VVOID || cc.tostore > 0); - if (ls->t.token == '}') break; - closelistfield(fs, &cc); - switch(ls->t.token) { - case TK_NAME: { /* may be listfields or recfields */ - luaX_lookahead(ls); - if (ls->lookahead.token != '=') /* expression? */ - listfield(ls, &cc); - else - recfield(ls, &cc); - break; - } - case '[': { /* constructor_item -> recfield */ - recfield(ls, &cc); - break; - } - default: { /* constructor_part -> listfield */ - listfield(ls, &cc); - break; - } - } - } while (testnext(ls, ',') || testnext(ls, ';')); - check_match(ls, '}', '{', line); - lastlistfield(fs, &cc); - SETARG_B(fs->f->code[pc], luaO_int2fb(cc.na)); /* set initial array size */ - SETARG_C(fs->f->code[pc], luaO_int2fb(cc.nh)); /* set initial table size */ -} - -/* }====================================================================== */ - - - -static void parlist (LexState *ls) { - /* parlist -> [ param { `,' param } ] */ - FuncState *fs = ls->fs; - Proto *f = fs->f; - int nparams = 0; - f->is_vararg = 0; - if (ls->t.token != ')') { /* is `parlist' not empty? */ - do { - switch (ls->t.token) { - case TK_NAME: { /* param -> NAME */ - new_localvar(ls, str_checkname(ls), nparams++); - break; - } - case TK_DOTS: { /* param -> `...' */ - luaX_next(ls); -#if defined(LUA_COMPAT_VARARG) - /* use `arg' as default name */ - new_localvarliteral(ls, "arg", nparams++); - f->is_vararg = VARARG_HASARG | VARARG_NEEDSARG; -#endif - f->is_vararg |= VARARG_ISVARARG; - break; - } - default: luaX_syntaxerror(ls, " or " LUA_QL("...") " expected"); - } - } while (!f->is_vararg && testnext(ls, ',')); - } - adjustlocalvars(ls, nparams); - f->numparams = cast_byte(fs->nactvar - (f->is_vararg & VARARG_HASARG)); - luaK_reserveregs(fs, fs->nactvar); /* reserve register for parameters */ -} - - -static void body (LexState *ls, expdesc *e, int needself, int line) { - /* body -> `(' parlist `)' chunk END */ - FuncState new_fs; - open_func(ls, &new_fs); - new_fs.f->linedefined = line; - checknext(ls, '('); - if (needself) { - new_localvarliteral(ls, "self", 0); - adjustlocalvars(ls, 1); - } - parlist(ls); - checknext(ls, ')'); - chunk(ls); - new_fs.f->lastlinedefined = ls->linenumber; - check_match(ls, TK_END, TK_FUNCTION, line); - close_func(ls); - pushclosure(ls, &new_fs, e); -} - - -static int explist1 (LexState *ls, expdesc *v) { - /* explist1 -> expr { `,' expr } */ - int n = 1; /* at least one expression */ - expr(ls, v); - while (testnext(ls, ',')) { - luaK_exp2nextreg(ls->fs, v); - expr(ls, v); - n++; - } - return n; -} - - -static void funcargs (LexState *ls, expdesc *f) { - FuncState *fs = ls->fs; - expdesc args; - int base, nparams; - int line = ls->linenumber; - switch (ls->t.token) { - case '(': { /* funcargs -> `(' [ explist1 ] `)' */ - if (line != ls->lastline) - luaX_syntaxerror(ls,"ambiguous syntax (function call x new statement)"); - luaX_next(ls); - if (ls->t.token == ')') /* arg list is empty? */ - args.k = VVOID; - else { - explist1(ls, &args); - luaK_setmultret(fs, &args); - } - check_match(ls, ')', '(', line); - break; - } - case '{': { /* funcargs -> constructor */ - constructor(ls, &args); - break; - } - case TK_STRING: { /* funcargs -> STRING */ - codestring(ls, &args, ls->t.seminfo.ts); - luaX_next(ls); /* must use `seminfo' before `next' */ - break; - } - default: { - luaX_syntaxerror(ls, "function arguments expected"); - return; - } - } - lua_assert(f->k == VNONRELOC); - base = f->u.s.info; /* base register for call */ - if (hasmultret(args.k)) - nparams = LUA_MULTRET; /* open call */ - else { - if (args.k != VVOID) - luaK_exp2nextreg(fs, &args); /* close last argument */ - nparams = fs->freereg - (base+1); - } - init_exp(f, VCALL, luaK_codeABC(fs, OP_CALL, base, nparams+1, 2)); - luaK_fixline(fs, line); - fs->freereg = base+1; /* call remove function and arguments and leaves - (unless changed) one result */ -} - - - - -/* -** {====================================================================== -** Expression parsing -** ======================================================================= -*/ - - -static void prefixexp (LexState *ls, expdesc *v) { - /* prefixexp -> NAME | '(' expr ')' */ - switch (ls->t.token) { - case '(': { - int line = ls->linenumber; - luaX_next(ls); - expr(ls, v); - check_match(ls, ')', '(', line); - luaK_dischargevars(ls->fs, v); - return; - } - case TK_NAME: { - singlevar(ls, v); - return; - } - default: { - luaX_syntaxerror(ls, "unexpected symbol"); - return; - } - } -} - - -static void primaryexp (LexState *ls, expdesc *v) { - /* primaryexp -> - prefixexp { `.' NAME | `[' exp `]' | `:' NAME funcargs | funcargs } */ - FuncState *fs = ls->fs; - prefixexp(ls, v); - for (;;) { - switch (ls->t.token) { - case '.': { /* field */ - field(ls, v); - break; - } - case '[': { /* `[' exp1 `]' */ - expdesc key; - luaK_exp2anyreg(fs, v); - yindex(ls, &key); - luaK_indexed(fs, v, &key); - break; - } - case ':': { /* `:' NAME funcargs */ - expdesc key; - luaX_next(ls); - checkname(ls, &key); - luaK_self(fs, v, &key); - funcargs(ls, v); - break; - } - case '(': case TK_STRING: case '{': { /* funcargs */ - luaK_exp2nextreg(fs, v); - funcargs(ls, v); - break; - } - default: return; - } - } -} - - -static void simpleexp (LexState *ls, expdesc *v) { - /* simpleexp -> NUMBER | STRING | NIL | true | false | ... | - constructor | FUNCTION body | primaryexp */ - switch (ls->t.token) { - case TK_NUMBER: { - init_exp(v, VKNUM, 0); - v->u.nval = ls->t.seminfo.r; - break; - } - case TK_STRING: { - codestring(ls, v, ls->t.seminfo.ts); - break; - } - case TK_NIL: { - init_exp(v, VNIL, 0); - break; - } - case TK_TRUE: { - init_exp(v, VTRUE, 0); - break; - } - case TK_FALSE: { - init_exp(v, VFALSE, 0); - break; - } - case TK_DOTS: { /* vararg */ - FuncState *fs = ls->fs; - check_condition(ls, fs->f->is_vararg, - "cannot use " LUA_QL("...") " outside a vararg function"); - fs->f->is_vararg &= ~VARARG_NEEDSARG; /* don't need 'arg' */ - init_exp(v, VVARARG, luaK_codeABC(fs, OP_VARARG, 0, 1, 0)); - break; - } - case '{': { /* constructor */ - constructor(ls, v); - return; - } - case TK_FUNCTION: { - luaX_next(ls); - body(ls, v, 0, ls->linenumber); - return; - } - default: { - primaryexp(ls, v); - return; - } - } - luaX_next(ls); -} - - -static UnOpr getunopr (int op) { - switch (op) { - case TK_NOT: return OPR_NOT; - case '-': return OPR_MINUS; - case '#': return OPR_LEN; - default: return OPR_NOUNOPR; - } -} - - -static BinOpr getbinopr (int op) { - switch (op) { - case '+': return OPR_ADD; - case '-': return OPR_SUB; - case '*': return OPR_MUL; - case '/': return OPR_DIV; - case '%': return OPR_MOD; - case '^': return OPR_POW; - case TK_CONCAT: return OPR_CONCAT; - case TK_NE: return OPR_NE; - case TK_EQ: return OPR_EQ; - case '<': return OPR_LT; - case TK_LE: return OPR_LE; - case '>': return OPR_GT; - case TK_GE: return OPR_GE; - case TK_AND: return OPR_AND; - case TK_OR: return OPR_OR; - default: return OPR_NOBINOPR; - } -} - - -static const struct { - lu_byte left; /* left priority for each binary operator */ - lu_byte right; /* right priority */ -} priority[] = { /* ORDER OPR */ - {6, 6}, {6, 6}, {7, 7}, {7, 7}, {7, 7}, /* `+' `-' `/' `%' */ - {10, 9}, {5, 4}, /* power and concat (right associative) */ - {3, 3}, {3, 3}, /* equality and inequality */ - {3, 3}, {3, 3}, {3, 3}, {3, 3}, /* order */ - {2, 2}, {1, 1} /* logical (and/or) */ -}; - -#define UNARY_PRIORITY 8 /* priority for unary operators */ - - -/* -** subexpr -> (simpleexp | unop subexpr) { binop subexpr } -** where `binop' is any binary operator with a priority higher than `limit' -*/ -static BinOpr subexpr (LexState *ls, expdesc *v, unsigned int limit) { - BinOpr op; - UnOpr uop; - enterlevel(ls); - uop = getunopr(ls->t.token); - if (uop != OPR_NOUNOPR) { - luaX_next(ls); - subexpr(ls, v, UNARY_PRIORITY); - luaK_prefix(ls->fs, uop, v); - } - else simpleexp(ls, v); - /* expand while operators have priorities higher than `limit' */ - op = getbinopr(ls->t.token); - while (op != OPR_NOBINOPR && priority[op].left > limit) { - expdesc v2; - BinOpr nextop; - luaX_next(ls); - luaK_infix(ls->fs, op, v); - /* read sub-expression with higher priority */ - nextop = subexpr(ls, &v2, priority[op].right); - luaK_posfix(ls->fs, op, v, &v2); - op = nextop; - } - leavelevel(ls); - return op; /* return first untreated operator */ -} - - -static void expr (LexState *ls, expdesc *v) { - subexpr(ls, v, 0); -} - -/* }==================================================================== */ - - - -/* -** {====================================================================== -** Rules for Statements -** ======================================================================= -*/ - - -static int block_follow (int token) { - switch (token) { - case TK_ELSE: case TK_ELSEIF: case TK_END: - case TK_UNTIL: case TK_EOS: - return 1; - default: return 0; - } -} - - -static void block (LexState *ls) { - /* block -> chunk */ - FuncState *fs = ls->fs; - BlockCnt bl; - enterblock(fs, &bl, 0); - chunk(ls); - lua_assert(bl.breaklist == NO_JUMP); - leaveblock(fs); -} - - -/* -** structure to chain all variables in the left-hand side of an -** assignment -*/ -struct LHS_assign { - struct LHS_assign *prev; - expdesc v; /* variable (global, local, upvalue, or indexed) */ -}; - - -/* -** check whether, in an assignment to a local variable, the local variable -** is needed in a previous assignment (to a table). If so, save original -** local value in a safe place and use this safe copy in the previous -** assignment. -*/ -static void check_conflict (LexState *ls, struct LHS_assign *lh, expdesc *v) { - FuncState *fs = ls->fs; - int extra = fs->freereg; /* eventual position to save local variable */ - int conflict = 0; - for (; lh; lh = lh->prev) { - if (lh->v.k == VINDEXED) { - if (lh->v.u.s.info == v->u.s.info) { /* conflict? */ - conflict = 1; - lh->v.u.s.info = extra; /* previous assignment will use safe copy */ - } - if (lh->v.u.s.aux == v->u.s.info) { /* conflict? */ - conflict = 1; - lh->v.u.s.aux = extra; /* previous assignment will use safe copy */ - } - } - } - if (conflict) { - luaK_codeABC(fs, OP_MOVE, fs->freereg, v->u.s.info, 0); /* make copy */ - luaK_reserveregs(fs, 1); - } -} - - -static void assignment (LexState *ls, struct LHS_assign *lh, int nvars) { - expdesc e; - check_condition(ls, VLOCAL <= lh->v.k && lh->v.k <= VINDEXED, - "syntax error"); - if (testnext(ls, ',')) { /* assignment -> `,' primaryexp assignment */ - struct LHS_assign nv; - nv.prev = lh; - primaryexp(ls, &nv.v); - if (nv.v.k == VLOCAL) - check_conflict(ls, lh, &nv.v); - luaY_checklimit(ls->fs, nvars, LUAI_MAXCCALLS - ls->L->nCcalls, - "variables in assignment"); - assignment(ls, &nv, nvars+1); - } - else { /* assignment -> `=' explist1 */ - int nexps; - checknext(ls, '='); - nexps = explist1(ls, &e); - if (nexps != nvars) { - adjust_assign(ls, nvars, nexps, &e); - if (nexps > nvars) - ls->fs->freereg -= nexps - nvars; /* remove extra values */ - } - else { - luaK_setoneret(ls->fs, &e); /* close last expression */ - luaK_storevar(ls->fs, &lh->v, &e); - return; /* avoid default */ - } - } - init_exp(&e, VNONRELOC, ls->fs->freereg-1); /* default assignment */ - luaK_storevar(ls->fs, &lh->v, &e); -} - - -static int cond (LexState *ls) { - /* cond -> exp */ - expdesc v; - expr(ls, &v); /* read condition */ - if (v.k == VNIL) v.k = VFALSE; /* `falses' are all equal here */ - luaK_goiftrue(ls->fs, &v); - return v.f; -} - - -static void breakstat (LexState *ls) { - FuncState *fs = ls->fs; - BlockCnt *bl = fs->bl; - int upval = 0; - while (bl && !bl->isbreakable) { - upval |= bl->upval; - bl = bl->previous; - } - if (!bl) - luaX_syntaxerror(ls, "no loop to break"); - if (upval) - luaK_codeABC(fs, OP_CLOSE, bl->nactvar, 0, 0); - luaK_concat(fs, &bl->breaklist, luaK_jump(fs)); -} - - -static void whilestat (LexState *ls, int line) { - /* whilestat -> WHILE cond DO block END */ - FuncState *fs = ls->fs; - int whileinit; - int condexit; - BlockCnt bl; - luaX_next(ls); /* skip WHILE */ - whileinit = luaK_getlabel(fs); - condexit = cond(ls); - enterblock(fs, &bl, 1); - checknext(ls, TK_DO); - block(ls); - luaK_patchlist(fs, luaK_jump(fs), whileinit); - check_match(ls, TK_END, TK_WHILE, line); - leaveblock(fs); - luaK_patchtohere(fs, condexit); /* false conditions finish the loop */ -} - - -static void repeatstat (LexState *ls, int line) { - /* repeatstat -> REPEAT block UNTIL cond */ - int condexit; - FuncState *fs = ls->fs; - int repeat_init = luaK_getlabel(fs); - BlockCnt bl1, bl2; - enterblock(fs, &bl1, 1); /* loop block */ - enterblock(fs, &bl2, 0); /* scope block */ - luaX_next(ls); /* skip REPEAT */ - chunk(ls); - check_match(ls, TK_UNTIL, TK_REPEAT, line); - condexit = cond(ls); /* read condition (inside scope block) */ - if (!bl2.upval) { /* no upvalues? */ - leaveblock(fs); /* finish scope */ - luaK_patchlist(ls->fs, condexit, repeat_init); /* close the loop */ - } - else { /* complete semantics when there are upvalues */ - breakstat(ls); /* if condition then break */ - luaK_patchtohere(ls->fs, condexit); /* else... */ - leaveblock(fs); /* finish scope... */ - luaK_patchlist(ls->fs, luaK_jump(fs), repeat_init); /* and repeat */ - } - leaveblock(fs); /* finish loop */ -} - - -static int exp1 (LexState *ls) { - expdesc e; - int k; - expr(ls, &e); - k = e.k; - luaK_exp2nextreg(ls->fs, &e); - return k; -} - - -static void forbody (LexState *ls, int base, int line, int nvars, int isnum) { - /* forbody -> DO block */ - BlockCnt bl; - FuncState *fs = ls->fs; - int prep, endfor; - adjustlocalvars(ls, 3); /* control variables */ - checknext(ls, TK_DO); - prep = isnum ? luaK_codeAsBx(fs, OP_FORPREP, base, NO_JUMP) : luaK_jump(fs); - enterblock(fs, &bl, 0); /* scope for declared variables */ - adjustlocalvars(ls, nvars); - luaK_reserveregs(fs, nvars); - block(ls); - leaveblock(fs); /* end of scope for declared variables */ - luaK_patchtohere(fs, prep); - endfor = (isnum) ? luaK_codeAsBx(fs, OP_FORLOOP, base, NO_JUMP) : - luaK_codeABC(fs, OP_TFORLOOP, base, 0, nvars); - luaK_fixline(fs, line); /* pretend that `OP_FOR' starts the loop */ - luaK_patchlist(fs, (isnum ? endfor : luaK_jump(fs)), prep + 1); -} - - -static void fornum (LexState *ls, TString *varname, int line) { - /* fornum -> NAME = exp1,exp1[,exp1] forbody */ - FuncState *fs = ls->fs; - int base = fs->freereg; - new_localvarliteral(ls, "(for index)", 0); - new_localvarliteral(ls, "(for limit)", 1); - new_localvarliteral(ls, "(for step)", 2); - new_localvar(ls, varname, 3); - checknext(ls, '='); - exp1(ls); /* initial value */ - checknext(ls, ','); - exp1(ls); /* limit */ - if (testnext(ls, ',')) - exp1(ls); /* optional step */ - else { /* default step = 1 */ - luaK_codeABx(fs, OP_LOADK, fs->freereg, luaK_numberK(fs, 1)); - luaK_reserveregs(fs, 1); - } - forbody(ls, base, line, 1, 1); -} - - -static void forlist (LexState *ls, TString *indexname) { - /* forlist -> NAME {,NAME} IN explist1 forbody */ - FuncState *fs = ls->fs; - expdesc e; - int nvars = 0; - int line; - int base = fs->freereg; - /* create control variables */ - new_localvarliteral(ls, "(for generator)", nvars++); - new_localvarliteral(ls, "(for state)", nvars++); - new_localvarliteral(ls, "(for control)", nvars++); - /* create declared variables */ - new_localvar(ls, indexname, nvars++); - while (testnext(ls, ',')) - new_localvar(ls, str_checkname(ls), nvars++); - checknext(ls, TK_IN); - line = ls->linenumber; - adjust_assign(ls, 3, explist1(ls, &e), &e); - luaK_checkstack(fs, 3); /* extra space to call generator */ - forbody(ls, base, line, nvars - 3, 0); -} - - -static void forstat (LexState *ls, int line) { - /* forstat -> FOR (fornum | forlist) END */ - FuncState *fs = ls->fs; - TString *varname; - BlockCnt bl; - enterblock(fs, &bl, 1); /* scope for loop and control variables */ - luaX_next(ls); /* skip `for' */ - varname = str_checkname(ls); /* first variable name */ - switch (ls->t.token) { - case '=': fornum(ls, varname, line); break; - case ',': case TK_IN: forlist(ls, varname); break; - default: luaX_syntaxerror(ls, LUA_QL("=") " or " LUA_QL("in") " expected"); - } - check_match(ls, TK_END, TK_FOR, line); - leaveblock(fs); /* loop scope (`break' jumps to this point) */ -} - - -static int test_then_block (LexState *ls) { - /* test_then_block -> [IF | ELSEIF] cond THEN block */ - int condexit; - luaX_next(ls); /* skip IF or ELSEIF */ - condexit = cond(ls); - checknext(ls, TK_THEN); - block(ls); /* `then' part */ - return condexit; -} - - -static void ifstat (LexState *ls, int line) { - /* ifstat -> IF cond THEN block {ELSEIF cond THEN block} [ELSE block] END */ - FuncState *fs = ls->fs; - int flist; - int escapelist = NO_JUMP; - flist = test_then_block(ls); /* IF cond THEN block */ - while (ls->t.token == TK_ELSEIF) { - luaK_concat(fs, &escapelist, luaK_jump(fs)); - luaK_patchtohere(fs, flist); - flist = test_then_block(ls); /* ELSEIF cond THEN block */ - } - if (ls->t.token == TK_ELSE) { - luaK_concat(fs, &escapelist, luaK_jump(fs)); - luaK_patchtohere(fs, flist); - luaX_next(ls); /* skip ELSE (after patch, for correct line info) */ - block(ls); /* `else' part */ - } - else - luaK_concat(fs, &escapelist, flist); - luaK_patchtohere(fs, escapelist); - check_match(ls, TK_END, TK_IF, line); -} - - -static void localfunc (LexState *ls) { - expdesc v, b; - FuncState *fs = ls->fs; - new_localvar(ls, str_checkname(ls), 0); - init_exp(&v, VLOCAL, fs->freereg); - luaK_reserveregs(fs, 1); - adjustlocalvars(ls, 1); - body(ls, &b, 0, ls->linenumber); - luaK_storevar(fs, &v, &b); - /* debug information will only see the variable after this point! */ - getlocvar(fs, fs->nactvar - 1).startpc = fs->pc; -} - - -static void localstat (LexState *ls) { - /* stat -> LOCAL NAME {`,' NAME} [`=' explist1] */ - int nvars = 0; - int nexps; - expdesc e; - do { - new_localvar(ls, str_checkname(ls), nvars++); - } while (testnext(ls, ',')); - if (testnext(ls, '=')) - nexps = explist1(ls, &e); - else { - e.k = VVOID; - nexps = 0; - } - adjust_assign(ls, nvars, nexps, &e); - adjustlocalvars(ls, nvars); -} - - -static int funcname (LexState *ls, expdesc *v) { - /* funcname -> NAME {field} [`:' NAME] */ - int needself = 0; - singlevar(ls, v); - while (ls->t.token == '.') - field(ls, v); - if (ls->t.token == ':') { - needself = 1; - field(ls, v); - } - return needself; -} - - -static void funcstat (LexState *ls, int line) { - /* funcstat -> FUNCTION funcname body */ - int needself; - expdesc v, b; - luaX_next(ls); /* skip FUNCTION */ - needself = funcname(ls, &v); - body(ls, &b, needself, line); - luaK_storevar(ls->fs, &v, &b); - luaK_fixline(ls->fs, line); /* definition `happens' in the first line */ -} - - -static void exprstat (LexState *ls) { - /* stat -> func | assignment */ - FuncState *fs = ls->fs; - struct LHS_assign v; - primaryexp(ls, &v.v); - if (v.v.k == VCALL) /* stat -> func */ - SETARG_C(getcode(fs, &v.v), 1); /* call statement uses no results */ - else { /* stat -> assignment */ - v.prev = NULL; - assignment(ls, &v, 1); - } -} - - -static void retstat (LexState *ls) { - /* stat -> RETURN explist */ - FuncState *fs = ls->fs; - expdesc e; - int first, nret; /* registers with returned values */ - luaX_next(ls); /* skip RETURN */ - if (block_follow(ls->t.token) || ls->t.token == ';') - first = nret = 0; /* return no values */ - else { - nret = explist1(ls, &e); /* optional return values */ - if (hasmultret(e.k)) { - luaK_setmultret(fs, &e); - if (e.k == VCALL && nret == 1) { /* tail call? */ - SET_OPCODE(getcode(fs,&e), OP_TAILCALL); - lua_assert(GETARG_A(getcode(fs,&e)) == fs->nactvar); - } - first = fs->nactvar; - nret = LUA_MULTRET; /* return all values */ - } - else { - if (nret == 1) /* only one single value? */ - first = luaK_exp2anyreg(fs, &e); - else { - luaK_exp2nextreg(fs, &e); /* values must go to the `stack' */ - first = fs->nactvar; /* return all `active' values */ - lua_assert(nret == fs->freereg - first); - } - } - } - luaK_ret(fs, first, nret); -} - - -static int statement (LexState *ls) { - int line = ls->linenumber; /* may be needed for error messages */ - switch (ls->t.token) { - case TK_IF: { /* stat -> ifstat */ - ifstat(ls, line); - return 0; - } - case TK_WHILE: { /* stat -> whilestat */ - whilestat(ls, line); - return 0; - } - case TK_DO: { /* stat -> DO block END */ - luaX_next(ls); /* skip DO */ - block(ls); - check_match(ls, TK_END, TK_DO, line); - return 0; - } - case TK_FOR: { /* stat -> forstat */ - forstat(ls, line); - return 0; - } - case TK_REPEAT: { /* stat -> repeatstat */ - repeatstat(ls, line); - return 0; - } - case TK_FUNCTION: { - funcstat(ls, line); /* stat -> funcstat */ - return 0; - } - case TK_LOCAL: { /* stat -> localstat */ - luaX_next(ls); /* skip LOCAL */ - if (testnext(ls, TK_FUNCTION)) /* local function? */ - localfunc(ls); - else - localstat(ls); - return 0; - } - case TK_RETURN: { /* stat -> retstat */ - retstat(ls); - return 1; /* must be last statement */ - } - case TK_BREAK: { /* stat -> breakstat */ - luaX_next(ls); /* skip BREAK */ - breakstat(ls); - return 1; /* must be last statement */ - } - default: { - exprstat(ls); - return 0; /* to avoid warnings */ - } - } -} - - -static void chunk (LexState *ls) { - /* chunk -> { stat [`;'] } */ - int islast = 0; - enterlevel(ls); - while (!islast && !block_follow(ls->t.token)) { - islast = statement(ls); - testnext(ls, ';'); - lua_assert(ls->fs->f->maxstacksize >= ls->fs->freereg && - ls->fs->freereg >= ls->fs->nactvar); - ls->fs->freereg = ls->fs->nactvar; /* free registers */ - } - leavelevel(ls); -} - -/* }====================================================================== */ diff --git a/lua/lua/lparser.h b/lua/lua/lparser.h deleted file mode 100644 index 18836afd1c..0000000000 --- a/lua/lua/lparser.h +++ /dev/null @@ -1,82 +0,0 @@ -/* -** $Id: lparser.h,v 1.57.1.1 2007/12/27 13:02:25 roberto Exp $ -** Lua Parser -** See Copyright Notice in lua.h -*/ - -#ifndef lparser_h -#define lparser_h - -#include "llimits.h" -#include "lobject.h" -#include "lzio.h" - - -/* -** Expression descriptor -*/ - -typedef enum { - VVOID, /* no value */ - VNIL, - VTRUE, - VFALSE, - VK, /* info = index of constant in `k' */ - VKNUM, /* nval = numerical value */ - VLOCAL, /* info = local register */ - VUPVAL, /* info = index of upvalue in `upvalues' */ - VGLOBAL, /* info = index of table; aux = index of global name in `k' */ - VINDEXED, /* info = table register; aux = index register (or `k') */ - VJMP, /* info = instruction pc */ - VRELOCABLE, /* info = instruction pc */ - VNONRELOC, /* info = result register */ - VCALL, /* info = instruction pc */ - VVARARG /* info = instruction pc */ -} expkind; - -typedef struct expdesc { - expkind k; - union { - struct { int info, aux; } s; - lua_Number nval; - } u; - int t; /* patch list of `exit when true' */ - int f; /* patch list of `exit when false' */ -} expdesc; - - -typedef struct upvaldesc { - lu_byte k; - lu_byte info; -} upvaldesc; - - -struct BlockCnt; /* defined in lparser.c */ - - -/* state needed to generate code for a given function */ -typedef struct FuncState { - Proto *f; /* current function header */ - Table *h; /* table to find (and reuse) elements in `k' */ - struct FuncState *prev; /* enclosing function */ - struct LexState *ls; /* lexical state */ - struct lua_State *L; /* copy of the Lua state */ - struct BlockCnt *bl; /* chain of current blocks */ - int pc; /* next position to code (equivalent to `ncode') */ - int lasttarget; /* `pc' of last `jump target' */ - int jpc; /* list of pending jumps to `pc' */ - int freereg; /* first free register */ - int nk; /* number of elements in `k' */ - int np; /* number of elements in `p' */ - short nlocvars; /* number of elements in `locvars' */ - lu_byte nactvar; /* number of active local variables */ - upvaldesc upvalues[LUAI_MAXUPVALUES]; /* upvalues */ - unsigned short actvar[LUAI_MAXVARS]; /* declared-variable stack */ -} FuncState; - - -LUAI_FUNC Proto *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff, - const char *name); - - -#endif diff --git a/lua/lua/lstate.c b/lua/lua/lstate.c deleted file mode 100644 index 4313b83a0c..0000000000 --- a/lua/lua/lstate.c +++ /dev/null @@ -1,214 +0,0 @@ -/* -** $Id: lstate.c,v 2.36.1.2 2008/01/03 15:20:39 roberto Exp $ -** Global State -** See Copyright Notice in lua.h -*/ - - -#include - -#define lstate_c -#define LUA_CORE - -#include "lua.h" - -#include "ldebug.h" -#include "ldo.h" -#include "lfunc.h" -#include "lgc.h" -#include "llex.h" -#include "lmem.h" -#include "lstate.h" -#include "lstring.h" -#include "ltable.h" -#include "ltm.h" - - -#define state_size(x) (sizeof(x) + LUAI_EXTRASPACE) -#define fromstate(l) (cast(lu_byte *, (l)) - LUAI_EXTRASPACE) -#define tostate(l) (cast(lua_State *, cast(lu_byte *, l) + LUAI_EXTRASPACE)) - - -/* -** Main thread combines a thread state and the global state -*/ -typedef struct LG { - lua_State l; - global_State g; -} LG; - - - -static void stack_init (lua_State *L1, lua_State *L) { - /* initialize CallInfo array */ - L1->base_ci = luaM_newvector(L, BASIC_CI_SIZE, CallInfo); - L1->ci = L1->base_ci; - L1->size_ci = BASIC_CI_SIZE; - L1->end_ci = L1->base_ci + L1->size_ci - 1; - /* initialize stack array */ - L1->stack = luaM_newvector(L, BASIC_STACK_SIZE + EXTRA_STACK, TValue); - L1->stacksize = BASIC_STACK_SIZE + EXTRA_STACK; - L1->top = L1->stack; - L1->stack_last = L1->stack+(L1->stacksize - EXTRA_STACK)-1; - /* initialize first ci */ - L1->ci->func = L1->top; - setnilvalue(L1->top++); /* `function' entry for this `ci' */ - L1->base = L1->ci->base = L1->top; - L1->ci->top = L1->top + LUA_MINSTACK; -} - - -static void freestack (lua_State *L, lua_State *L1) { - luaM_freearray(L, L1->base_ci, L1->size_ci, CallInfo); - luaM_freearray(L, L1->stack, L1->stacksize, TValue); -} - - -/* -** open parts that may cause memory-allocation errors -*/ -static void f_luaopen (lua_State *L, void *ud) { - global_State *g = G(L); - UNUSED(ud); - stack_init(L, L); /* init stack */ - sethvalue(L, gt(L), luaH_new(L, 0, 2)); /* table of globals */ - sethvalue(L, registry(L), luaH_new(L, 0, 2)); /* registry */ - luaS_resize(L, MINSTRTABSIZE); /* initial size of string table */ - luaT_init(L); - luaX_init(L); - luaS_fix(luaS_newliteral(L, MEMERRMSG)); - g->GCthreshold = 4*g->totalbytes; -} - - -static void preinit_state (lua_State *L, global_State *g) { - G(L) = g; - L->stack = NULL; - L->stacksize = 0; - L->errorJmp = NULL; - L->hook = NULL; - L->hookmask = 0; - L->basehookcount = 0; - L->allowhook = 1; - resethookcount(L); - L->openupval = NULL; - L->size_ci = 0; - L->nCcalls = L->baseCcalls = 0; - L->status = 0; - L->base_ci = L->ci = NULL; - L->savedpc = NULL; - L->errfunc = 0; - setnilvalue(gt(L)); -} - - -static void close_state (lua_State *L) { - global_State *g = G(L); - luaF_close(L, L->stack); /* close all upvalues for this thread */ - luaC_freeall(L); /* collect all objects */ - lua_assert(g->rootgc == obj2gco(L)); - lua_assert(g->strt.nuse == 0); - luaM_freearray(L, G(L)->strt.hash, G(L)->strt.size, TString *); - luaZ_freebuffer(L, &g->buff); - freestack(L, L); - lua_assert(g->totalbytes == sizeof(LG)); - (*g->frealloc)(g->ud, fromstate(L), state_size(LG), 0); -} - - -lua_State *luaE_newthread (lua_State *L) { - lua_State *L1 = tostate(luaM_malloc(L, state_size(lua_State))); - luaC_link(L, obj2gco(L1), LUA_TTHREAD); - preinit_state(L1, G(L)); - stack_init(L1, L); /* init stack */ - setobj2n(L, gt(L1), gt(L)); /* share table of globals */ - L1->hookmask = L->hookmask; - L1->basehookcount = L->basehookcount; - L1->hook = L->hook; - resethookcount(L1); - lua_assert(iswhite(obj2gco(L1))); - return L1; -} - - -void luaE_freethread (lua_State *L, lua_State *L1) { - luaF_close(L1, L1->stack); /* close all upvalues for this thread */ - lua_assert(L1->openupval == NULL); - luai_userstatefree(L1); - freestack(L, L1); - luaM_freemem(L, fromstate(L1), state_size(lua_State)); -} - - -LUA_API lua_State *lua_newstate (lua_Alloc f, void *ud) { - int i; - lua_State *L; - global_State *g; - void *l = (*f)(ud, NULL, 0, state_size(LG)); - if (l == NULL) return NULL; - L = tostate(l); - g = &((LG *)L)->g; - L->next = NULL; - L->tt = LUA_TTHREAD; - g->currentwhite = bit2mask(WHITE0BIT, FIXEDBIT); - L->marked = luaC_white(g); - set2bits(L->marked, FIXEDBIT, SFIXEDBIT); - preinit_state(L, g); - g->frealloc = f; - g->ud = ud; - g->mainthread = L; - g->uvhead.u.l.prev = &g->uvhead; - g->uvhead.u.l.next = &g->uvhead; - g->GCthreshold = 0; /* mark it as unfinished state */ - g->strt.size = 0; - g->strt.nuse = 0; - g->strt.hash = NULL; - setnilvalue(registry(L)); - luaZ_initbuffer(L, &g->buff); - g->panic = NULL; - g->gcstate = GCSpause; - g->rootgc = obj2gco(L); - g->sweepstrgc = 0; - g->sweepgc = &g->rootgc; - g->gray = NULL; - g->grayagain = NULL; - g->weak = NULL; - g->tmudata = NULL; - g->totalbytes = sizeof(LG); - g->gcpause = LUAI_GCPAUSE; - g->gcstepmul = LUAI_GCMUL; - g->gcdept = 0; - for (i=0; imt[i] = NULL; - if (luaD_rawrunprotected(L, f_luaopen, NULL) != 0) { - /* memory allocation error: free partial state */ - close_state(L); - L = NULL; - } - else - luai_userstateopen(L); - return L; -} - - -static void callallgcTM (lua_State *L, void *ud) { - UNUSED(ud); - luaC_callGCTM(L); /* call GC metamethods for all udata */ -} - - -LUA_API void lua_close (lua_State *L) { - L = G(L)->mainthread; /* only the main thread can be closed */ - lua_lock(L); - luaF_close(L, L->stack); /* close all upvalues for this thread */ - luaC_separateudata(L, 1); /* separate udata that have GC metamethods */ - L->errfunc = 0; /* no error function during GC metamethods */ - do { /* repeat until no more errors */ - L->ci = L->base_ci; - L->base = L->top = L->ci->base; - L->nCcalls = L->baseCcalls = 0; - } while (luaD_rawrunprotected(L, callallgcTM, NULL) != 0); - lua_assert(G(L)->tmudata == NULL); - luai_userstateclose(L); - close_state(L); -} - diff --git a/lua/lua/lstate.h b/lua/lua/lstate.h deleted file mode 100644 index 3bc575b6bc..0000000000 --- a/lua/lua/lstate.h +++ /dev/null @@ -1,169 +0,0 @@ -/* -** $Id: lstate.h,v 2.24.1.2 2008/01/03 15:20:39 roberto Exp $ -** Global State -** See Copyright Notice in lua.h -*/ - -#ifndef lstate_h -#define lstate_h - -#include "lua.h" - -#include "lobject.h" -#include "ltm.h" -#include "lzio.h" - - - -struct lua_longjmp; /* defined in ldo.c */ - - -/* table of globals */ -#define gt(L) (&L->l_gt) - -/* registry */ -#define registry(L) (&G(L)->l_registry) - - -/* extra stack space to handle TM calls and some other extras */ -#define EXTRA_STACK 5 - - -#define BASIC_CI_SIZE 8 - -#define BASIC_STACK_SIZE (2*LUA_MINSTACK) - - - -typedef struct stringtable { - GCObject **hash; - lu_int32 nuse; /* number of elements */ - int size; -} stringtable; - - -/* -** informations about a call -*/ -typedef struct CallInfo { - StkId base; /* base for this function */ - StkId func; /* function index in the stack */ - StkId top; /* top for this function */ - const Instruction *savedpc; - int nresults; /* expected number of results from this function */ - int tailcalls; /* number of tail calls lost under this entry */ -} CallInfo; - - - -#define curr_func(L) (clvalue(L->ci->func)) -#define ci_func(ci) (clvalue((ci)->func)) -#define f_isLua(ci) (!ci_func(ci)->c.isC) -#define isLua(ci) (ttisfunction((ci)->func) && f_isLua(ci)) - - -/* -** `global state', shared by all threads of this state -*/ -typedef struct global_State { - stringtable strt; /* hash table for strings */ - lua_Alloc frealloc; /* function to reallocate memory */ - void *ud; /* auxiliary data to `frealloc' */ - lu_byte currentwhite; - lu_byte gcstate; /* state of garbage collector */ - int sweepstrgc; /* position of sweep in `strt' */ - GCObject *rootgc; /* list of all collectable objects */ - GCObject **sweepgc; /* position of sweep in `rootgc' */ - GCObject *gray; /* list of gray objects */ - GCObject *grayagain; /* list of objects to be traversed atomically */ - GCObject *weak; /* list of weak tables (to be cleared) */ - GCObject *tmudata; /* last element of list of userdata to be GC */ - Mbuffer buff; /* temporary buffer for string concatentation */ - lu_mem GCthreshold; - lu_mem totalbytes; /* number of bytes currently allocated */ - lu_mem estimate; /* an estimate of number of bytes actually in use */ - lu_mem gcdept; /* how much GC is `behind schedule' */ - int gcpause; /* size of pause between successive GCs */ - int gcstepmul; /* GC `granularity' */ - lua_CFunction panic; /* to be called in unprotected errors */ - TValue l_registry; - struct lua_State *mainthread; - UpVal uvhead; /* head of double-linked list of all open upvalues */ - struct Table *mt[NUM_TAGS]; /* metatables for basic types */ - TString *tmname[TM_N]; /* array with tag-method names */ -} global_State; - - -/* -** `per thread' state -*/ -struct lua_State { - CommonHeader; - lu_byte status; - StkId top; /* first free slot in the stack */ - StkId base; /* base of current function */ - global_State *l_G; - CallInfo *ci; /* call info for current function */ - const Instruction *savedpc; /* `savedpc' of current function */ - StkId stack_last; /* last free slot in the stack */ - StkId stack; /* stack base */ - CallInfo *end_ci; /* points after end of ci array*/ - CallInfo *base_ci; /* array of CallInfo's */ - int stacksize; - int size_ci; /* size of array `base_ci' */ - unsigned short nCcalls; /* number of nested C calls */ - unsigned short baseCcalls; /* nested C calls when resuming coroutine */ - lu_byte hookmask; - lu_byte allowhook; - int basehookcount; - int hookcount; - lua_Hook hook; - TValue l_gt; /* table of globals */ - TValue env; /* temporary place for environments */ - GCObject *openupval; /* list of open upvalues in this stack */ - GCObject *gclist; - struct lua_longjmp *errorJmp; /* current error recover point */ - ptrdiff_t errfunc; /* current error handling function (stack index) */ -}; - - -#define G(L) (L->l_G) - - -/* -** Union of all collectable objects -*/ -union GCObject { - GCheader gch; - union TString ts; - union Udata u; - union Closure cl; - struct Table h; - struct Proto p; - struct UpVal uv; - struct lua_State th; /* thread */ -}; - - -/* macros to convert a GCObject into a specific value */ -#define rawgco2ts(o) check_exp((o)->gch.tt == LUA_TSTRING, &((o)->ts)) -#define gco2ts(o) (&rawgco2ts(o)->tsv) -#define rawgco2u(o) check_exp((o)->gch.tt == LUA_TUSERDATA, &((o)->u)) -#define gco2u(o) (&rawgco2u(o)->uv) -#define gco2cl(o) check_exp((o)->gch.tt == LUA_TFUNCTION, &((o)->cl)) -#define gco2h(o) check_exp((o)->gch.tt == LUA_TTABLE, &((o)->h)) -#define gco2p(o) check_exp((o)->gch.tt == LUA_TPROTO, &((o)->p)) -#define gco2uv(o) check_exp((o)->gch.tt == LUA_TUPVAL, &((o)->uv)) -#define ngcotouv(o) \ - check_exp((o) == NULL || (o)->gch.tt == LUA_TUPVAL, &((o)->uv)) -#define gco2th(o) check_exp((o)->gch.tt == LUA_TTHREAD, &((o)->th)) - -/* macro to convert any Lua object into a GCObject */ -#define obj2gco(v) (cast(GCObject *, (v))) - - -LUAI_FUNC lua_State *luaE_newthread (lua_State *L); -LUAI_FUNC void luaE_freethread (lua_State *L, lua_State *L1); - -#endif - diff --git a/lua/lua/lstring.c b/lua/lua/lstring.c deleted file mode 100644 index 49113151cc..0000000000 --- a/lua/lua/lstring.c +++ /dev/null @@ -1,111 +0,0 @@ -/* -** $Id: lstring.c,v 2.8.1.1 2007/12/27 13:02:25 roberto Exp $ -** String table (keeps all strings handled by Lua) -** See Copyright Notice in lua.h -*/ - - -#include - -#define lstring_c -#define LUA_CORE - -#include "lua.h" - -#include "lmem.h" -#include "lobject.h" -#include "lstate.h" -#include "lstring.h" - - - -void luaS_resize (lua_State *L, int newsize) { - GCObject **newhash; - stringtable *tb; - int i; - if (G(L)->gcstate == GCSsweepstring) - return; /* cannot resize during GC traverse */ - newhash = luaM_newvector(L, newsize, GCObject *); - tb = &G(L)->strt; - for (i=0; isize; i++) { - GCObject *p = tb->hash[i]; - while (p) { /* for each node in the list */ - GCObject *next = p->gch.next; /* save next */ - unsigned int h = gco2ts(p)->hash; - int h1 = lmod(h, newsize); /* new position */ - lua_assert(cast_int(h%newsize) == lmod(h, newsize)); - p->gch.next = newhash[h1]; /* chain it */ - newhash[h1] = p; - p = next; - } - } - luaM_freearray(L, tb->hash, tb->size, TString *); - tb->size = newsize; - tb->hash = newhash; -} - - -static TString *newlstr (lua_State *L, const char *str, size_t l, - unsigned int h) { - TString *ts; - stringtable *tb; - if (l+1 > (MAX_SIZET - sizeof(TString))/sizeof(char)) - luaM_toobig(L); - ts = cast(TString *, luaM_malloc(L, (l+1)*sizeof(char)+sizeof(TString))); - ts->tsv.len = l; - ts->tsv.hash = h; - ts->tsv.marked = luaC_white(G(L)); - ts->tsv.tt = LUA_TSTRING; - ts->tsv.reserved = 0; - memcpy(ts+1, str, l*sizeof(char)); - ((char *)(ts+1))[l] = '\0'; /* ending 0 */ - tb = &G(L)->strt; - h = lmod(h, tb->size); - ts->tsv.next = tb->hash[h]; /* chain new entry */ - tb->hash[h] = obj2gco(ts); - tb->nuse++; - if (tb->nuse > cast(lu_int32, tb->size) && tb->size <= MAX_INT/2) - luaS_resize(L, tb->size*2); /* too crowded */ - return ts; -} - - -TString *luaS_newlstr (lua_State *L, const char *str, size_t l) { - GCObject *o; - unsigned int h = cast(unsigned int, l); /* seed */ - size_t step = (l>>5)+1; /* if string is too long, don't hash all its chars */ - size_t l1; - for (l1=l; l1>=step; l1-=step) /* compute hash */ - h = h ^ ((h<<5)+(h>>2)+cast(unsigned char, str[l1-1])); - for (o = G(L)->strt.hash[lmod(h, G(L)->strt.size)]; - o != NULL; - o = o->gch.next) { - TString *ts = rawgco2ts(o); - if (ts->tsv.len == l && (memcmp(str, getstr(ts), l) == 0)) { - /* string may be dead */ - if (isdead(G(L), o)) changewhite(o); - return ts; - } - } - return newlstr(L, str, l, h); /* not found */ -} - - -Udata *luaS_newudata (lua_State *L, size_t s, Table *e) { - Udata *u; - if (s > MAX_SIZET - sizeof(Udata)) - luaM_toobig(L); - u = cast(Udata *, luaM_malloc(L, s + sizeof(Udata))); - u->uv.marked = luaC_white(G(L)); /* is not finalized */ - u->uv.tt = LUA_TUSERDATA; - u->uv.len = s; - u->uv.metatable = NULL; - u->uv.env = e; - /* chain it on udata list (after main thread) */ - u->uv.next = G(L)->mainthread->next; - G(L)->mainthread->next = obj2gco(u); - return u; -} - diff --git a/lua/lua/lstring.h b/lua/lua/lstring.h deleted file mode 100644 index 73a2ff8b38..0000000000 --- a/lua/lua/lstring.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -** $Id: lstring.h,v 1.43.1.1 2007/12/27 13:02:25 roberto Exp $ -** String table (keep all strings handled by Lua) -** See Copyright Notice in lua.h -*/ - -#ifndef lstring_h -#define lstring_h - - -#include "lgc.h" -#include "lobject.h" -#include "lstate.h" - - -#define sizestring(s) (sizeof(union TString)+((s)->len+1)*sizeof(char)) - -#define sizeudata(u) (sizeof(union Udata)+(u)->len) - -#define luaS_new(L, s) (luaS_newlstr(L, s, strlen(s))) -#define luaS_newliteral(L, s) (luaS_newlstr(L, "" s, \ - (sizeof(s)/sizeof(char))-1)) - -#define luaS_fix(s) l_setbit((s)->tsv.marked, FIXEDBIT) - -LUAI_FUNC void luaS_resize (lua_State *L, int newsize); -LUAI_FUNC Udata *luaS_newudata (lua_State *L, size_t s, Table *e); -LUAI_FUNC TString *luaS_newlstr (lua_State *L, const char *str, size_t l); - - -#endif diff --git a/lua/lua/lstrlib.c b/lua/lua/lstrlib.c deleted file mode 100644 index 1b4763d4ee..0000000000 --- a/lua/lua/lstrlib.c +++ /dev/null @@ -1,869 +0,0 @@ -/* -** $Id: lstrlib.c,v 1.132.1.4 2008/07/11 17:27:21 roberto Exp $ -** Standard library for string operations and pattern-matching -** See Copyright Notice in lua.h -*/ - - -#include -#include -#include -#include -#include - -#define lstrlib_c -#define LUA_LIB - -#include "lua.h" - -#include "lauxlib.h" -#include "lualib.h" - - -/* macro to `unsign' a character */ -#define uchar(c) ((unsigned char)(c)) - - - -static int str_len (lua_State *L) { - size_t l; - luaL_checklstring(L, 1, &l); - lua_pushinteger(L, l); - return 1; -} - - -static ptrdiff_t posrelat (ptrdiff_t pos, size_t len) { - /* relative string position: negative means back from end */ - if (pos < 0) pos += (ptrdiff_t)len + 1; - return (pos >= 0) ? pos : 0; -} - - -static int str_sub (lua_State *L) { - size_t l; - const char *s = luaL_checklstring(L, 1, &l); - ptrdiff_t start = posrelat(luaL_checkinteger(L, 2), l); - ptrdiff_t end = posrelat(luaL_optinteger(L, 3, -1), l); - if (start < 1) start = 1; - if (end > (ptrdiff_t)l) end = (ptrdiff_t)l; - if (start <= end) - lua_pushlstring(L, s+start-1, end-start+1); - else lua_pushliteral(L, ""); - return 1; -} - - -static int str_reverse (lua_State *L) { - size_t l; - luaL_Buffer b; - const char *s = luaL_checklstring(L, 1, &l); - luaL_buffinit(L, &b); - while (l--) luaL_addchar(&b, s[l]); - luaL_pushresult(&b); - return 1; -} - - -static int str_lower (lua_State *L) { - size_t l; - size_t i; - luaL_Buffer b; - const char *s = luaL_checklstring(L, 1, &l); - luaL_buffinit(L, &b); - for (i=0; i 0) - luaL_addlstring(&b, s, l); - luaL_pushresult(&b); - return 1; -} - - -static int str_byte (lua_State *L) { - size_t l; - const char *s = luaL_checklstring(L, 1, &l); - ptrdiff_t posi = posrelat(luaL_optinteger(L, 2, 1), l); - ptrdiff_t pose = posrelat(luaL_optinteger(L, 3, posi), l); - int n, i; - if (posi <= 0) posi = 1; - if ((size_t)pose > l) pose = l; - if (posi > pose) return 0; /* empty interval; return no values */ - n = (int)(pose - posi + 1); - if (posi + n <= pose) /* overflow? */ - luaL_error(L, "string slice too long"); - luaL_checkstack(L, n, "string slice too long"); - for (i=0; i= ms->level || ms->capture[l].len == CAP_UNFINISHED) - return luaL_error(ms->L, "invalid capture index"); - return l; -} - - -static int capture_to_close (MatchState *ms) { - int level = ms->level; - for (level--; level>=0; level--) - if (ms->capture[level].len == CAP_UNFINISHED) return level; - return luaL_error(ms->L, "invalid pattern capture"); -} - - -static const char *classend (MatchState *ms, const char *p) { - switch (*p++) { - case L_ESC: { - if (*p == '\0') - luaL_error(ms->L, "malformed pattern (ends with " LUA_QL("%%") ")"); - return p+1; - } - case '[': { - if (*p == '^') p++; - do { /* look for a `]' */ - if (*p == '\0') - luaL_error(ms->L, "malformed pattern (missing " LUA_QL("]") ")"); - if (*(p++) == L_ESC && *p != '\0') - p++; /* skip escapes (e.g. `%]') */ - } while (*p != ']'); - return p+1; - } - default: { - return p; - } - } -} - - -static int match_class (int c, int cl) { - int res; - switch (tolower(cl)) { - case 'a' : res = isalpha(c); break; - case 'c' : res = iscntrl(c); break; - case 'd' : res = isdigit(c); break; - case 'l' : res = islower(c); break; - case 'p' : res = ispunct(c); break; - case 's' : res = isspace(c); break; - case 'u' : res = isupper(c); break; - case 'w' : res = isalnum(c); break; - case 'x' : res = isxdigit(c); break; - case 'z' : res = (c == 0); break; - default: return (cl == c); - } - return (islower(cl) ? res : !res); -} - - -static int matchbracketclass (int c, const char *p, const char *ec) { - int sig = 1; - if (*(p+1) == '^') { - sig = 0; - p++; /* skip the `^' */ - } - while (++p < ec) { - if (*p == L_ESC) { - p++; - if (match_class(c, uchar(*p))) - return sig; - } - else if ((*(p+1) == '-') && (p+2 < ec)) { - p+=2; - if (uchar(*(p-2)) <= c && c <= uchar(*p)) - return sig; - } - else if (uchar(*p) == c) return sig; - } - return !sig; -} - - -static int singlematch (int c, const char *p, const char *ep) { - switch (*p) { - case '.': return 1; /* matches any char */ - case L_ESC: return match_class(c, uchar(*(p+1))); - case '[': return matchbracketclass(c, p, ep-1); - default: return (uchar(*p) == c); - } -} - - -static const char *match (MatchState *ms, const char *s, const char *p); - - -static const char *matchbalance (MatchState *ms, const char *s, - const char *p) { - if (*p == 0 || *(p+1) == 0) - luaL_error(ms->L, "unbalanced pattern"); - if (*s != *p) return NULL; - else { - int b = *p; - int e = *(p+1); - int cont = 1; - while (++s < ms->src_end) { - if (*s == e) { - if (--cont == 0) return s+1; - } - else if (*s == b) cont++; - } - } - return NULL; /* string ends out of balance */ -} - - -static const char *max_expand (MatchState *ms, const char *s, - const char *p, const char *ep) { - ptrdiff_t i = 0; /* counts maximum expand for item */ - while ((s+i)src_end && singlematch(uchar(*(s+i)), p, ep)) - i++; - /* keeps trying to match with the maximum repetitions */ - while (i>=0) { - const char *res = match(ms, (s+i), ep+1); - if (res) return res; - i--; /* else didn't match; reduce 1 repetition to try again */ - } - return NULL; -} - - -static const char *min_expand (MatchState *ms, const char *s, - const char *p, const char *ep) { - for (;;) { - const char *res = match(ms, s, ep+1); - if (res != NULL) - return res; - else if (ssrc_end && singlematch(uchar(*s), p, ep)) - s++; /* try with one more repetition */ - else return NULL; - } -} - - -static const char *start_capture (MatchState *ms, const char *s, - const char *p, int what) { - const char *res; - int level = ms->level; - if (level >= LUA_MAXCAPTURES) luaL_error(ms->L, "too many captures"); - ms->capture[level].init = s; - ms->capture[level].len = what; - ms->level = level+1; - if ((res=match(ms, s, p)) == NULL) /* match failed? */ - ms->level--; /* undo capture */ - return res; -} - - -static const char *end_capture (MatchState *ms, const char *s, - const char *p) { - int l = capture_to_close(ms); - const char *res; - ms->capture[l].len = s - ms->capture[l].init; /* close capture */ - if ((res = match(ms, s, p)) == NULL) /* match failed? */ - ms->capture[l].len = CAP_UNFINISHED; /* undo capture */ - return res; -} - - -static const char *match_capture (MatchState *ms, const char *s, int l) { - size_t len; - l = check_capture(ms, l); - len = ms->capture[l].len; - if ((size_t)(ms->src_end-s) >= len && - memcmp(ms->capture[l].init, s, len) == 0) - return s+len; - else return NULL; -} - - -static const char *match (MatchState *ms, const char *s, const char *p) { - init: /* using goto's to optimize tail recursion */ - switch (*p) { - case '(': { /* start capture */ - if (*(p+1) == ')') /* position capture? */ - return start_capture(ms, s, p+2, CAP_POSITION); - else - return start_capture(ms, s, p+1, CAP_UNFINISHED); - } - case ')': { /* end capture */ - return end_capture(ms, s, p+1); - } - case L_ESC: { - switch (*(p+1)) { - case 'b': { /* balanced string? */ - s = matchbalance(ms, s, p+2); - if (s == NULL) return NULL; - p+=4; goto init; /* else return match(ms, s, p+4); */ - } - case 'f': { /* frontier? */ - const char *ep; char previous; - p += 2; - if (*p != '[') - luaL_error(ms->L, "missing " LUA_QL("[") " after " - LUA_QL("%%f") " in pattern"); - ep = classend(ms, p); /* points to what is next */ - previous = (s == ms->src_init) ? '\0' : *(s-1); - if (matchbracketclass(uchar(previous), p, ep-1) || - !matchbracketclass(uchar(*s), p, ep-1)) return NULL; - p=ep; goto init; /* else return match(ms, s, ep); */ - } - default: { - if (isdigit(uchar(*(p+1)))) { /* capture results (%0-%9)? */ - s = match_capture(ms, s, uchar(*(p+1))); - if (s == NULL) return NULL; - p+=2; goto init; /* else return match(ms, s, p+2) */ - } - goto dflt; /* case default */ - } - } - } - case '\0': { /* end of pattern */ - return s; /* match succeeded */ - } - case '$': { - if (*(p+1) == '\0') /* is the `$' the last char in pattern? */ - return (s == ms->src_end) ? s : NULL; /* check end of string */ - else goto dflt; - } - default: dflt: { /* it is a pattern item */ - const char *ep = classend(ms, p); /* points to what is next */ - int m = ssrc_end && singlematch(uchar(*s), p, ep); - switch (*ep) { - case '?': { /* optional */ - const char *res; - if (m && ((res=match(ms, s+1, ep+1)) != NULL)) - return res; - p=ep+1; goto init; /* else return match(ms, s, ep+1); */ - } - case '*': { /* 0 or more repetitions */ - return max_expand(ms, s, p, ep); - } - case '+': { /* 1 or more repetitions */ - return (m ? max_expand(ms, s+1, p, ep) : NULL); - } - case '-': { /* 0 or more repetitions (minimum) */ - return min_expand(ms, s, p, ep); - } - default: { - if (!m) return NULL; - s++; p=ep; goto init; /* else return match(ms, s+1, ep); */ - } - } - } - } -} - - - -static const char *lmemfind (const char *s1, size_t l1, - const char *s2, size_t l2) { - if (l2 == 0) return s1; /* empty strings are everywhere */ - else if (l2 > l1) return NULL; /* avoids a negative `l1' */ - else { - const char *init; /* to search for a `*s2' inside `s1' */ - l2--; /* 1st char will be checked by `memchr' */ - l1 = l1-l2; /* `s2' cannot be found after that */ - while (l1 > 0 && (init = (const char *)memchr(s1, *s2, l1)) != NULL) { - init++; /* 1st char is already checked */ - if (memcmp(init, s2+1, l2) == 0) - return init-1; - else { /* correct `l1' and `s1' to try again */ - l1 -= init-s1; - s1 = init; - } - } - return NULL; /* not found */ - } -} - - -static void push_onecapture (MatchState *ms, int i, const char *s, - const char *e) { - if (i >= ms->level) { - if (i == 0) /* ms->level == 0, too */ - lua_pushlstring(ms->L, s, e - s); /* add whole match */ - else - luaL_error(ms->L, "invalid capture index"); - } - else { - ptrdiff_t l = ms->capture[i].len; - if (l == CAP_UNFINISHED) luaL_error(ms->L, "unfinished capture"); - if (l == CAP_POSITION) - lua_pushinteger(ms->L, ms->capture[i].init - ms->src_init + 1); - else - lua_pushlstring(ms->L, ms->capture[i].init, l); - } -} - - -static int push_captures (MatchState *ms, const char *s, const char *e) { - int i; - int nlevels = (ms->level == 0 && s) ? 1 : ms->level; - luaL_checkstack(ms->L, nlevels, "too many captures"); - for (i = 0; i < nlevels; i++) - push_onecapture(ms, i, s, e); - return nlevels; /* number of strings pushed */ -} - - -static int str_find_aux (lua_State *L, int find) { - size_t l1, l2; - const char *s = luaL_checklstring(L, 1, &l1); - const char *p = luaL_checklstring(L, 2, &l2); - ptrdiff_t init = posrelat(luaL_optinteger(L, 3, 1), l1) - 1; - if (init < 0) init = 0; - else if ((size_t)(init) > l1) init = (ptrdiff_t)l1; - if (find && (lua_toboolean(L, 4) || /* explicit request? */ - strpbrk(p, SPECIALS) == NULL)) { /* or no special characters? */ - /* do a plain search */ - const char *s2 = lmemfind(s+init, l1-init, p, l2); - if (s2) { - lua_pushinteger(L, s2-s+1); - lua_pushinteger(L, s2-s+l2); - return 2; - } - } - else { - MatchState ms; - int anchor = (*p == '^') ? (p++, 1) : 0; - const char *s1=s+init; - ms.L = L; - ms.src_init = s; - ms.src_end = s+l1; - do { - const char *res; - ms.level = 0; - if ((res=match(&ms, s1, p)) != NULL) { - if (find) { - lua_pushinteger(L, s1-s+1); /* start */ - lua_pushinteger(L, res-s); /* end */ - return push_captures(&ms, NULL, 0) + 2; - } - else - return push_captures(&ms, s1, res); - } - } while (s1++ < ms.src_end && !anchor); - } - lua_pushnil(L); /* not found */ - return 1; -} - - -static int str_find (lua_State *L) { - return str_find_aux(L, 1); -} - - -static int str_match (lua_State *L) { - return str_find_aux(L, 0); -} - - -static int gmatch_aux (lua_State *L) { - MatchState ms; - size_t ls; - const char *s = lua_tolstring(L, lua_upvalueindex(1), &ls); - const char *p = lua_tostring(L, lua_upvalueindex(2)); - const char *src; - ms.L = L; - ms.src_init = s; - ms.src_end = s+ls; - for (src = s + (size_t)lua_tointeger(L, lua_upvalueindex(3)); - src <= ms.src_end; - src++) { - const char *e; - ms.level = 0; - if ((e = match(&ms, src, p)) != NULL) { - lua_Integer newstart = e-s; - if (e == src) newstart++; /* empty match? go at least one position */ - lua_pushinteger(L, newstart); - lua_replace(L, lua_upvalueindex(3)); - return push_captures(&ms, src, e); - } - } - return 0; /* not found */ -} - - -static int gmatch (lua_State *L) { - luaL_checkstring(L, 1); - luaL_checkstring(L, 2); - lua_settop(L, 2); - lua_pushinteger(L, 0); - lua_pushcclosure(L, gmatch_aux, 3); - return 1; -} - - -static int gfind_nodef (lua_State *L) { - return luaL_error(L, LUA_QL("string.gfind") " was renamed to " - LUA_QL("string.gmatch")); -} - - -static void add_s (MatchState *ms, luaL_Buffer *b, const char *s, - const char *e) { - size_t l, i; - const char *news = lua_tolstring(ms->L, 3, &l); - for (i = 0; i < l; i++) { - if (news[i] != L_ESC) - luaL_addchar(b, news[i]); - else { - i++; /* skip ESC */ - if (!isdigit(uchar(news[i]))) - luaL_addchar(b, news[i]); - else if (news[i] == '0') - luaL_addlstring(b, s, e - s); - else { - push_onecapture(ms, news[i] - '1', s, e); - luaL_addvalue(b); /* add capture to accumulated result */ - } - } - } -} - - -static void add_value (MatchState *ms, luaL_Buffer *b, const char *s, - const char *e) { - lua_State *L = ms->L; - switch (lua_type(L, 3)) { - case LUA_TNUMBER: - case LUA_TSTRING: { - add_s(ms, b, s, e); - return; - } - case LUA_TFUNCTION: { - int n; - lua_pushvalue(L, 3); - n = push_captures(ms, s, e); - lua_call(L, n, 1); - break; - } - case LUA_TTABLE: { - push_onecapture(ms, 0, s, e); - lua_gettable(L, 3); - break; - } - } - if (!lua_toboolean(L, -1)) { /* nil or false? */ - lua_pop(L, 1); - lua_pushlstring(L, s, e - s); /* keep original text */ - } - else if (!lua_isstring(L, -1)) - luaL_error(L, "invalid replacement value (a %s)", luaL_typename(L, -1)); - luaL_addvalue(b); /* add result to accumulator */ -} - - -static int str_gsub (lua_State *L) { - size_t srcl; - const char *src = luaL_checklstring(L, 1, &srcl); - const char *p = luaL_checkstring(L, 2); - int tr = lua_type(L, 3); - int max_s = luaL_optint(L, 4, srcl+1); - int anchor = (*p == '^') ? (p++, 1) : 0; - int n = 0; - MatchState ms; - luaL_Buffer b; - luaL_argcheck(L, tr == LUA_TNUMBER || tr == LUA_TSTRING || - tr == LUA_TFUNCTION || tr == LUA_TTABLE, 3, - "string/function/table expected"); - luaL_buffinit(L, &b); - ms.L = L; - ms.src_init = src; - ms.src_end = src+srcl; - while (n < max_s) { - const char *e; - ms.level = 0; - e = match(&ms, src, p); - if (e) { - n++; - add_value(&ms, &b, src, e); - } - if (e && e>src) /* non empty match? */ - src = e; /* skip it */ - else if (src < ms.src_end) - luaL_addchar(&b, *src++); - else break; - if (anchor) break; - } - luaL_addlstring(&b, src, ms.src_end-src); - luaL_pushresult(&b); - lua_pushinteger(L, n); /* number of substitutions */ - return 2; -} - -/* }====================================================== */ - - -/* maximum size of each formatted item (> len(format('%99.99f', -1e308))) */ -#define MAX_ITEM 512 -/* valid flags in a format specification */ -#define FLAGS "-+ #0" -/* -** maximum size of each format specification (such as '%-099.99d') -** (+10 accounts for %99.99x plus margin of error) -*/ -#define MAX_FORMAT (sizeof(FLAGS) + sizeof(LUA_INTFRMLEN) + 10) - - -static void addquoted (lua_State *L, luaL_Buffer *b, int arg) { - size_t l; - const char *s = luaL_checklstring(L, arg, &l); - luaL_addchar(b, '"'); - while (l--) { - switch (*s) { - case '"': case '\\': case '\n': { - luaL_addchar(b, '\\'); - luaL_addchar(b, *s); - break; - } - case '\r': { - luaL_addlstring(b, "\\r", 2); - break; - } - case '\0': { - luaL_addlstring(b, "\\000", 4); - break; - } - default: { - luaL_addchar(b, *s); - break; - } - } - s++; - } - luaL_addchar(b, '"'); -} - -static const char *scanformat (lua_State *L, const char *strfrmt, char *form) { - const char *p = strfrmt; - while (*p != '\0' && strchr(FLAGS, *p) != NULL) p++; /* skip flags */ - if ((size_t)(p - strfrmt) >= sizeof(FLAGS)) - luaL_error(L, "invalid format (repeated flags)"); - if (isdigit(uchar(*p))) p++; /* skip width */ - if (isdigit(uchar(*p))) p++; /* (2 digits at most) */ - if (*p == '.') { - p++; - if (isdigit(uchar(*p))) p++; /* skip precision */ - if (isdigit(uchar(*p))) p++; /* (2 digits at most) */ - } - if (isdigit(uchar(*p))) - luaL_error(L, "invalid format (width or precision too long)"); - *(form++) = '%'; - strncpy(form, strfrmt, p - strfrmt + 1); - form += p - strfrmt + 1; - *form = '\0'; - return p; -} - - -static void addintlen (char *form) { - size_t l = strlen(form); - char spec = form[l - 1]; - strcpy(form + l - 1, LUA_INTFRMLEN); - form[l + sizeof(LUA_INTFRMLEN) - 2] = spec; - form[l + sizeof(LUA_INTFRMLEN) - 1] = '\0'; -} - - -static int str_format (lua_State *L) { - int arg = 1; - size_t sfl; - const char *strfrmt = luaL_checklstring(L, arg, &sfl); - const char *strfrmt_end = strfrmt+sfl; - luaL_Buffer b; - luaL_buffinit(L, &b); - while (strfrmt < strfrmt_end) { - if (*strfrmt != L_ESC) - luaL_addchar(&b, *strfrmt++); - else if (*++strfrmt == L_ESC) - luaL_addchar(&b, *strfrmt++); /* %% */ - else { /* format item */ - char form[MAX_FORMAT]; /* to store the format (`%...') */ - char buff[MAX_ITEM]; /* to store the formatted item */ - arg++; - strfrmt = scanformat(L, strfrmt, form); - switch (*strfrmt++) { - case 'c': { - sprintf(buff, form, (int)luaL_checknumber(L, arg)); - break; - } - case 'd': case 'i': { - addintlen(form); - sprintf(buff, form, (LUA_INTFRM_T)luaL_checknumber(L, arg)); - break; - } - case 'o': case 'u': case 'x': case 'X': { - addintlen(form); - sprintf(buff, form, (unsigned LUA_INTFRM_T)luaL_checknumber(L, arg)); - break; - } - case 'e': case 'E': case 'f': - case 'g': case 'G': { - sprintf(buff, form, (double)luaL_checknumber(L, arg)); - break; - } - case 'q': { - addquoted(L, &b, arg); - continue; /* skip the 'addsize' at the end */ - } - case 's': { - size_t l; - const char *s = luaL_checklstring(L, arg, &l); - if (!strchr(form, '.') && l >= 100) { - /* no precision and string is too long to be formatted; - keep original string */ - lua_pushvalue(L, arg); - luaL_addvalue(&b); - continue; /* skip the `addsize' at the end */ - } - else { - sprintf(buff, form, s); - break; - } - } - default: { /* also treat cases `pnLlh' */ - return luaL_error(L, "invalid option " LUA_QL("%%%c") " to " - LUA_QL("format"), *(strfrmt - 1)); - } - } - luaL_addlstring(&b, buff, strlen(buff)); - } - } - luaL_pushresult(&b); - return 1; -} - - -static const luaL_Reg strlib[] = { - {"byte", str_byte}, - {"char", str_char}, - {"dump", str_dump}, - {"find", str_find}, - {"format", str_format}, - {"gfind", gfind_nodef}, - {"gmatch", gmatch}, - {"gsub", str_gsub}, - {"len", str_len}, - {"lower", str_lower}, - {"match", str_match}, - {"rep", str_rep}, - {"reverse", str_reverse}, - {"sub", str_sub}, - {"upper", str_upper}, - {NULL, NULL} -}; - - -static void createmetatable (lua_State *L) { - lua_createtable(L, 0, 1); /* create metatable for strings */ - lua_pushliteral(L, ""); /* dummy string */ - lua_pushvalue(L, -2); - lua_setmetatable(L, -2); /* set string metatable */ - lua_pop(L, 1); /* pop dummy string */ - lua_pushvalue(L, -2); /* string library... */ - lua_setfield(L, -2, "__index"); /* ...is the __index metamethod */ - lua_pop(L, 1); /* pop metatable */ -} - - -/* -** Open string library -*/ -LUALIB_API int luaopen_string (lua_State *L) { - luaL_register(L, LUA_STRLIBNAME, strlib); -#if defined(LUA_COMPAT_GFIND) - lua_getfield(L, -1, "gmatch"); - lua_setfield(L, -2, "gfind"); -#endif - createmetatable(L); - return 1; -} - diff --git a/lua/lua/ltable.c b/lua/lua/ltable.c deleted file mode 100644 index ec84f4fabc..0000000000 --- a/lua/lua/ltable.c +++ /dev/null @@ -1,588 +0,0 @@ -/* -** $Id: ltable.c,v 2.32.1.2 2007/12/28 15:32:23 roberto Exp $ -** Lua tables (hash) -** See Copyright Notice in lua.h -*/ - - -/* -** Implementation of tables (aka arrays, objects, or hash tables). -** Tables keep its elements in two parts: an array part and a hash part. -** Non-negative integer keys are all candidates to be kept in the array -** part. The actual size of the array is the largest `n' such that at -** least half the slots between 0 and n are in use. -** Hash uses a mix of chained scatter table with Brent's variation. -** A main invariant of these tables is that, if an element is not -** in its main position (i.e. the `original' position that its hash gives -** to it), then the colliding element is in its own main position. -** Hence even when the load factor reaches 100%, performance remains good. -*/ - -#include -#include - -#define ltable_c -#define LUA_CORE - -#include "lua.h" - -#include "ldebug.h" -#include "ldo.h" -#include "lgc.h" -#include "lmem.h" -#include "lobject.h" -#include "lstate.h" -#include "ltable.h" - - -/* -** max size of array part is 2^MAXBITS -*/ -#if LUAI_BITSINT > 26 -#define MAXBITS 26 -#else -#define MAXBITS (LUAI_BITSINT-2) -#endif - -#define MAXASIZE (1 << MAXBITS) - - -#define hashpow2(t,n) (gnode(t, lmod((n), sizenode(t)))) - -#define hashstr(t,str) hashpow2(t, (str)->tsv.hash) -#define hashboolean(t,p) hashpow2(t, p) - - -/* -** for some types, it is better to avoid modulus by power of 2, as -** they tend to have many 2 factors. -*/ -#define hashmod(t,n) (gnode(t, ((n) % ((sizenode(t)-1)|1)))) - - -#define hashpointer(t,p) hashmod(t, IntPoint(p)) - - -/* -** number of ints inside a lua_Number -*/ -#define numints cast_int(sizeof(lua_Number)/sizeof(int)) - - - -#define dummynode (&dummynode_) - -static const Node dummynode_ = { - {{NULL}, LUA_TNIL}, /* value */ - {{{NULL}, LUA_TNIL, NULL}} /* key */ -}; - - -/* -** hash for lua_Numbers -*/ -static Node *hashnum (const Table *t, lua_Number n) { - unsigned int a[numints]; - int i; - if (luai_numeq(n, 0)) /* avoid problems with -0 */ - return gnode(t, 0); - memcpy(a, &n, sizeof(a)); - for (i = 1; i < numints; i++) a[0] += a[i]; - return hashmod(t, a[0]); -} - - - -/* -** returns the `main' position of an element in a table (that is, the index -** of its hash value) -*/ -static Node *mainposition (const Table *t, const TValue *key) { - switch (ttype(key)) { - case LUA_TNUMBER: - return hashnum(t, nvalue(key)); - case LUA_TSTRING: - return hashstr(t, rawtsvalue(key)); - case LUA_TBOOLEAN: - return hashboolean(t, bvalue(key)); - case LUA_TLIGHTUSERDATA: - return hashpointer(t, pvalue(key)); - default: - return hashpointer(t, gcvalue(key)); - } -} - - -/* -** returns the index for `key' if `key' is an appropriate key to live in -** the array part of the table, -1 otherwise. -*/ -static int arrayindex (const TValue *key) { - if (ttisnumber(key)) { - lua_Number n = nvalue(key); - int k; - lua_number2int(k, n); - if (luai_numeq(cast_num(k), n)) - return k; - } - return -1; /* `key' did not match some condition */ -} - - -/* -** returns the index of a `key' for table traversals. First goes all -** elements in the array part, then elements in the hash part. The -** beginning of a traversal is signalled by -1. -*/ -static int findindex (lua_State *L, Table *t, StkId key) { - int i; - if (ttisnil(key)) return -1; /* first iteration */ - i = arrayindex(key); - if (0 < i && i <= t->sizearray) /* is `key' inside array part? */ - return i-1; /* yes; that's the index (corrected to C) */ - else { - Node *n = mainposition(t, key); - do { /* check whether `key' is somewhere in the chain */ - /* key may be dead already, but it is ok to use it in `next' */ - if (luaO_rawequalObj(key2tval(n), key) || - (ttype(gkey(n)) == LUA_TDEADKEY && iscollectable(key) && - gcvalue(gkey(n)) == gcvalue(key))) { - i = cast_int(n - gnode(t, 0)); /* key index in hash table */ - /* hash elements are numbered after array ones */ - return i + t->sizearray; - } - else n = gnext(n); - } while (n); - luaG_runerror(L, "invalid key to " LUA_QL("next")); /* key not found */ - return 0; /* to avoid warnings */ - } -} - - -int luaH_next (lua_State *L, Table *t, StkId key) { - int i = findindex(L, t, key); /* find original element */ - for (i++; i < t->sizearray; i++) { /* try first array part */ - if (!ttisnil(&t->array[i])) { /* a non-nil value? */ - setnvalue(key, cast_num(i+1)); - setobj2s(L, key+1, &t->array[i]); - return 1; - } - } - for (i -= t->sizearray; i < sizenode(t); i++) { /* then hash part */ - if (!ttisnil(gval(gnode(t, i)))) { /* a non-nil value? */ - setobj2s(L, key, key2tval(gnode(t, i))); - setobj2s(L, key+1, gval(gnode(t, i))); - return 1; - } - } - return 0; /* no more elements */ -} - - -/* -** {============================================================= -** Rehash -** ============================================================== -*/ - - -static int computesizes (int nums[], int *narray) { - int i; - int twotoi; /* 2^i */ - int a = 0; /* number of elements smaller than 2^i */ - int na = 0; /* number of elements to go to array part */ - int n = 0; /* optimal size for array part */ - for (i = 0, twotoi = 1; twotoi/2 < *narray; i++, twotoi *= 2) { - if (nums[i] > 0) { - a += nums[i]; - if (a > twotoi/2) { /* more than half elements present? */ - n = twotoi; /* optimal size (till now) */ - na = a; /* all elements smaller than n will go to array part */ - } - } - if (a == *narray) break; /* all elements already counted */ - } - *narray = n; - lua_assert(*narray/2 <= na && na <= *narray); - return na; -} - - -static int countint (const TValue *key, int *nums) { - int k = arrayindex(key); - if (0 < k && k <= MAXASIZE) { /* is `key' an appropriate array index? */ - nums[ceillog2(k)]++; /* count as such */ - return 1; - } - else - return 0; -} - - -static int numusearray (const Table *t, int *nums) { - int lg; - int ttlg; /* 2^lg */ - int ause = 0; /* summation of `nums' */ - int i = 1; /* count to traverse all array keys */ - for (lg=0, ttlg=1; lg<=MAXBITS; lg++, ttlg*=2) { /* for each slice */ - int lc = 0; /* counter */ - int lim = ttlg; - if (lim > t->sizearray) { - lim = t->sizearray; /* adjust upper limit */ - if (i > lim) - break; /* no more elements to count */ - } - /* count elements in range (2^(lg-1), 2^lg] */ - for (; i <= lim; i++) { - if (!ttisnil(&t->array[i-1])) - lc++; - } - nums[lg] += lc; - ause += lc; - } - return ause; -} - - -static int numusehash (const Table *t, int *nums, int *pnasize) { - int totaluse = 0; /* total number of elements */ - int ause = 0; /* summation of `nums' */ - int i = sizenode(t); - while (i--) { - Node *n = &t->node[i]; - if (!ttisnil(gval(n))) { - ause += countint(key2tval(n), nums); - totaluse++; - } - } - *pnasize += ause; - return totaluse; -} - - -static void setarrayvector (lua_State *L, Table *t, int size) { - int i; - luaM_reallocvector(L, t->array, t->sizearray, size, TValue); - for (i=t->sizearray; iarray[i]); - t->sizearray = size; -} - - -static void setnodevector (lua_State *L, Table *t, int size) { - int lsize; - if (size == 0) { /* no elements to hash part? */ - t->node = cast(Node *, dummynode); /* use common `dummynode' */ - lsize = 0; - } - else { - int i; - lsize = ceillog2(size); - if (lsize > MAXBITS) - luaG_runerror(L, "table overflow"); - size = twoto(lsize); - t->node = luaM_newvector(L, size, Node); - for (i=0; ilsizenode = cast_byte(lsize); - t->lastfree = gnode(t, size); /* all positions are free */ -} - - -static void resize (lua_State *L, Table *t, int nasize, int nhsize) { - int i; - int oldasize = t->sizearray; - int oldhsize = t->lsizenode; - Node *nold = t->node; /* save old hash ... */ - if (nasize > oldasize) /* array part must grow? */ - setarrayvector(L, t, nasize); - /* create new hash part with appropriate size */ - setnodevector(L, t, nhsize); - if (nasize < oldasize) { /* array part must shrink? */ - t->sizearray = nasize; - /* re-insert elements from vanishing slice */ - for (i=nasize; iarray[i])) - setobjt2t(L, luaH_setnum(L, t, i+1), &t->array[i]); - } - /* shrink array */ - luaM_reallocvector(L, t->array, oldasize, nasize, TValue); - } - /* re-insert elements from hash part */ - for (i = twoto(oldhsize) - 1; i >= 0; i--) { - Node *old = nold+i; - if (!ttisnil(gval(old))) - setobjt2t(L, luaH_set(L, t, key2tval(old)), gval(old)); - } - if (nold != dummynode) - luaM_freearray(L, nold, twoto(oldhsize), Node); /* free old array */ -} - - -void luaH_resizearray (lua_State *L, Table *t, int nasize) { - int nsize = (t->node == dummynode) ? 0 : sizenode(t); - resize(L, t, nasize, nsize); -} - - -static void rehash (lua_State *L, Table *t, const TValue *ek) { - int nasize, na; - int nums[MAXBITS+1]; /* nums[i] = number of keys between 2^(i-1) and 2^i */ - int i; - int totaluse; - for (i=0; i<=MAXBITS; i++) nums[i] = 0; /* reset counts */ - nasize = numusearray(t, nums); /* count keys in array part */ - totaluse = nasize; /* all those keys are integer keys */ - totaluse += numusehash(t, nums, &nasize); /* count keys in hash part */ - /* count extra key */ - nasize += countint(ek, nums); - totaluse++; - /* compute new size for array part */ - na = computesizes(nums, &nasize); - /* resize the table to new computed sizes */ - resize(L, t, nasize, totaluse - na); -} - - - -/* -** }============================================================= -*/ - - -Table *luaH_new (lua_State *L, int narray, int nhash) { - Table *t = luaM_new(L, Table); - luaC_link(L, obj2gco(t), LUA_TTABLE); - t->metatable = NULL; - t->flags = cast_byte(~0); - /* temporary values (kept only if some malloc fails) */ - t->array = NULL; - t->sizearray = 0; - t->lsizenode = 0; - t->node = cast(Node *, dummynode); - setarrayvector(L, t, narray); - setnodevector(L, t, nhash); - return t; -} - - -void luaH_free (lua_State *L, Table *t) { - if (t->node != dummynode) - luaM_freearray(L, t->node, sizenode(t), Node); - luaM_freearray(L, t->array, t->sizearray, TValue); - luaM_free(L, t); -} - - -static Node *getfreepos (Table *t) { - while (t->lastfree-- > t->node) { - if (ttisnil(gkey(t->lastfree))) - return t->lastfree; - } - return NULL; /* could not find a free place */ -} - - - -/* -** inserts a new key into a hash table; first, check whether key's main -** position is free. If not, check whether colliding node is in its main -** position or not: if it is not, move colliding node to an empty place and -** put new key in its main position; otherwise (colliding node is in its main -** position), new key goes to an empty position. -*/ -static TValue *newkey (lua_State *L, Table *t, const TValue *key) { - Node *mp = mainposition(t, key); - if (!ttisnil(gval(mp)) || mp == dummynode) { - Node *othern; - Node *n = getfreepos(t); /* get a free place */ - if (n == NULL) { /* cannot find a free place? */ - rehash(L, t, key); /* grow table */ - return luaH_set(L, t, key); /* re-insert key into grown table */ - } - lua_assert(n != dummynode); - othern = mainposition(t, key2tval(mp)); - if (othern != mp) { /* is colliding node out of its main position? */ - /* yes; move colliding node into free position */ - while (gnext(othern) != mp) othern = gnext(othern); /* find previous */ - gnext(othern) = n; /* redo the chain with `n' in place of `mp' */ - *n = *mp; /* copy colliding node into free pos. (mp->next also goes) */ - gnext(mp) = NULL; /* now `mp' is free */ - setnilvalue(gval(mp)); - } - else { /* colliding node is in its own main position */ - /* new node will go into free position */ - gnext(n) = gnext(mp); /* chain new position */ - gnext(mp) = n; - mp = n; - } - } - gkey(mp)->value = key->value; gkey(mp)->tt = key->tt; - luaC_barriert(L, t, key); - lua_assert(ttisnil(gval(mp))); - return gval(mp); -} - - -/* -** search function for integers -*/ -const TValue *luaH_getnum (Table *t, int key) { - /* (1 <= key && key <= t->sizearray) */ - if (cast(unsigned int, key-1) < cast(unsigned int, t->sizearray)) - return &t->array[key-1]; - else { - lua_Number nk = cast_num(key); - Node *n = hashnum(t, nk); - do { /* check whether `key' is somewhere in the chain */ - if (ttisnumber(gkey(n)) && luai_numeq(nvalue(gkey(n)), nk)) - return gval(n); /* that's it */ - else n = gnext(n); - } while (n); - return luaO_nilobject; - } -} - - -/* -** search function for strings -*/ -const TValue *luaH_getstr (Table *t, TString *key) { - Node *n = hashstr(t, key); - do { /* check whether `key' is somewhere in the chain */ - if (ttisstring(gkey(n)) && rawtsvalue(gkey(n)) == key) - return gval(n); /* that's it */ - else n = gnext(n); - } while (n); - return luaO_nilobject; -} - - -/* -** main search function -*/ -const TValue *luaH_get (Table *t, const TValue *key) { - switch (ttype(key)) { - case LUA_TNIL: return luaO_nilobject; - case LUA_TSTRING: return luaH_getstr(t, rawtsvalue(key)); - case LUA_TNUMBER: { - int k; - lua_Number n = nvalue(key); - lua_number2int(k, n); - if (luai_numeq(cast_num(k), nvalue(key))) /* index is int? */ - return luaH_getnum(t, k); /* use specialized version */ - /* else go through */ - } - default: { - Node *n = mainposition(t, key); - do { /* check whether `key' is somewhere in the chain */ - if (luaO_rawequalObj(key2tval(n), key)) - return gval(n); /* that's it */ - else n = gnext(n); - } while (n); - return luaO_nilobject; - } - } -} - - -TValue *luaH_set (lua_State *L, Table *t, const TValue *key) { - const TValue *p = luaH_get(t, key); - t->flags = 0; - if (p != luaO_nilobject) - return cast(TValue *, p); - else { - if (ttisnil(key)) luaG_runerror(L, "table index is nil"); - else if (ttisnumber(key) && luai_numisnan(nvalue(key))) - luaG_runerror(L, "table index is NaN"); - return newkey(L, t, key); - } -} - - -TValue *luaH_setnum (lua_State *L, Table *t, int key) { - const TValue *p = luaH_getnum(t, key); - if (p != luaO_nilobject) - return cast(TValue *, p); - else { - TValue k; - setnvalue(&k, cast_num(key)); - return newkey(L, t, &k); - } -} - - -TValue *luaH_setstr (lua_State *L, Table *t, TString *key) { - const TValue *p = luaH_getstr(t, key); - if (p != luaO_nilobject) - return cast(TValue *, p); - else { - TValue k; - setsvalue(L, &k, key); - return newkey(L, t, &k); - } -} - - -static int unbound_search (Table *t, unsigned int j) { - unsigned int i = j; /* i is zero or a present index */ - j++; - /* find `i' and `j' such that i is present and j is not */ - while (!ttisnil(luaH_getnum(t, j))) { - i = j; - j *= 2; - if (j > cast(unsigned int, MAX_INT)) { /* overflow? */ - /* table was built with bad purposes: resort to linear search */ - i = 1; - while (!ttisnil(luaH_getnum(t, i))) i++; - return i - 1; - } - } - /* now do a binary search between them */ - while (j - i > 1) { - unsigned int m = (i+j)/2; - if (ttisnil(luaH_getnum(t, m))) j = m; - else i = m; - } - return i; -} - - -/* -** Try to find a boundary in table `t'. A `boundary' is an integer index -** such that t[i] is non-nil and t[i+1] is nil (and 0 if t[1] is nil). -*/ -int luaH_getn (Table *t) { - unsigned int j = t->sizearray; - if (j > 0 && ttisnil(&t->array[j - 1])) { - /* there is a boundary in the array part: (binary) search for it */ - unsigned int i = 0; - while (j - i > 1) { - unsigned int m = (i+j)/2; - if (ttisnil(&t->array[m - 1])) j = m; - else i = m; - } - return i; - } - /* else must find a boundary in hash part */ - else if (t->node == dummynode) /* hash part is empty? */ - return j; /* that is easy... */ - else return unbound_search(t, j); -} - - - -#if defined(LUA_DEBUG) - -Node *luaH_mainposition (const Table *t, const TValue *key) { - return mainposition(t, key); -} - -int luaH_isdummy (Node *n) { return n == dummynode; } - -#endif diff --git a/lua/lua/ltable.h b/lua/lua/ltable.h deleted file mode 100644 index f5b9d5ead0..0000000000 --- a/lua/lua/ltable.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -** $Id: ltable.h,v 2.10.1.1 2007/12/27 13:02:25 roberto Exp $ -** Lua tables (hash) -** See Copyright Notice in lua.h -*/ - -#ifndef ltable_h -#define ltable_h - -#include "lobject.h" - - -#define gnode(t,i) (&(t)->node[i]) -#define gkey(n) (&(n)->i_key.nk) -#define gval(n) (&(n)->i_val) -#define gnext(n) ((n)->i_key.nk.next) - -#define key2tval(n) (&(n)->i_key.tvk) - - -LUAI_FUNC const TValue *luaH_getnum (Table *t, int key); -LUAI_FUNC TValue *luaH_setnum (lua_State *L, Table *t, int key); -LUAI_FUNC const TValue *luaH_getstr (Table *t, TString *key); -LUAI_FUNC TValue *luaH_setstr (lua_State *L, Table *t, TString *key); -LUAI_FUNC const TValue *luaH_get (Table *t, const TValue *key); -LUAI_FUNC TValue *luaH_set (lua_State *L, Table *t, const TValue *key); -LUAI_FUNC Table *luaH_new (lua_State *L, int narray, int lnhash); -LUAI_FUNC void luaH_resizearray (lua_State *L, Table *t, int nasize); -LUAI_FUNC void luaH_free (lua_State *L, Table *t); -LUAI_FUNC int luaH_next (lua_State *L, Table *t, StkId key); -LUAI_FUNC int luaH_getn (Table *t); - - -#if defined(LUA_DEBUG) -LUAI_FUNC Node *luaH_mainposition (const Table *t, const TValue *key); -LUAI_FUNC int luaH_isdummy (Node *n); -#endif - - -#endif diff --git a/lua/lua/ltablib.c b/lua/lua/ltablib.c deleted file mode 100644 index b6d9cb4ac7..0000000000 --- a/lua/lua/ltablib.c +++ /dev/null @@ -1,287 +0,0 @@ -/* -** $Id: ltablib.c,v 1.38.1.3 2008/02/14 16:46:58 roberto Exp $ -** Library for Table Manipulation -** See Copyright Notice in lua.h -*/ - - -#include - -#define ltablib_c -#define LUA_LIB - -#include "lua.h" - -#include "lauxlib.h" -#include "lualib.h" - - -#define aux_getn(L,n) (luaL_checktype(L, n, LUA_TTABLE), luaL_getn(L, n)) - - -static int foreachi (lua_State *L) { - int i; - int n = aux_getn(L, 1); - luaL_checktype(L, 2, LUA_TFUNCTION); - for (i=1; i <= n; i++) { - lua_pushvalue(L, 2); /* function */ - lua_pushinteger(L, i); /* 1st argument */ - lua_rawgeti(L, 1, i); /* 2nd argument */ - lua_call(L, 2, 1); - if (!lua_isnil(L, -1)) - return 1; - lua_pop(L, 1); /* remove nil result */ - } - return 0; -} - - -static int foreach (lua_State *L) { - luaL_checktype(L, 1, LUA_TTABLE); - luaL_checktype(L, 2, LUA_TFUNCTION); - lua_pushnil(L); /* first key */ - while (lua_next(L, 1)) { - lua_pushvalue(L, 2); /* function */ - lua_pushvalue(L, -3); /* key */ - lua_pushvalue(L, -3); /* value */ - lua_call(L, 2, 1); - if (!lua_isnil(L, -1)) - return 1; - lua_pop(L, 2); /* remove value and result */ - } - return 0; -} - - -static int maxn (lua_State *L) { - lua_Number max = 0; - luaL_checktype(L, 1, LUA_TTABLE); - lua_pushnil(L); /* first key */ - while (lua_next(L, 1)) { - lua_pop(L, 1); /* remove value */ - if (lua_type(L, -1) == LUA_TNUMBER) { - lua_Number v = lua_tonumber(L, -1); - if (v > max) max = v; - } - } - lua_pushnumber(L, max); - return 1; -} - - -static int getn (lua_State *L) { - lua_pushinteger(L, aux_getn(L, 1)); - return 1; -} - - -static int setn (lua_State *L) { - luaL_checktype(L, 1, LUA_TTABLE); -#ifndef luaL_setn - luaL_setn(L, 1, luaL_checkint(L, 2)); -#else - luaL_error(L, LUA_QL("setn") " is obsolete"); -#endif - lua_pushvalue(L, 1); - return 1; -} - - -static int tinsert (lua_State *L) { - int e = aux_getn(L, 1) + 1; /* first empty element */ - int pos; /* where to insert new element */ - switch (lua_gettop(L)) { - case 2: { /* called with only 2 arguments */ - pos = e; /* insert new element at the end */ - break; - } - case 3: { - int i; - pos = luaL_checkint(L, 2); /* 2nd argument is the position */ - if (pos > e) e = pos; /* `grow' array if necessary */ - for (i = e; i > pos; i--) { /* move up elements */ - lua_rawgeti(L, 1, i-1); - lua_rawseti(L, 1, i); /* t[i] = t[i-1] */ - } - break; - } - default: { - return luaL_error(L, "wrong number of arguments to " LUA_QL("insert")); - } - } - luaL_setn(L, 1, e); /* new size */ - lua_rawseti(L, 1, pos); /* t[pos] = v */ - return 0; -} - - -static int tremove (lua_State *L) { - int e = aux_getn(L, 1); - int pos = luaL_optint(L, 2, e); - if (!(1 <= pos && pos <= e)) /* position is outside bounds? */ - return 0; /* nothing to remove */ - luaL_setn(L, 1, e - 1); /* t.n = n-1 */ - lua_rawgeti(L, 1, pos); /* result = t[pos] */ - for ( ;pos= P */ - while (lua_rawgeti(L, 1, ++i), sort_comp(L, -1, -2)) { - if (i>u) luaL_error(L, "invalid order function for sorting"); - lua_pop(L, 1); /* remove a[i] */ - } - /* repeat --j until a[j] <= P */ - while (lua_rawgeti(L, 1, --j), sort_comp(L, -3, -1)) { - if (j - -#define ltm_c -#define LUA_CORE - -#include "lua.h" - -#include "lobject.h" -#include "lstate.h" -#include "lstring.h" -#include "ltable.h" -#include "ltm.h" - - - -const char *const luaT_typenames[] = { - "nil", "boolean", "userdata", "number", - "string", "table", "function", "userdata", "thread", - "proto", "upval" -}; - - -void luaT_init (lua_State *L) { - static const char *const luaT_eventname[] = { /* ORDER TM */ - "__index", "__newindex", - "__gc", "__mode", "__eq", - "__add", "__sub", "__mul", "__div", "__mod", - "__pow", "__unm", "__len", "__lt", "__le", - "__concat", "__call" - }; - int i; - for (i=0; itmname[i] = luaS_new(L, luaT_eventname[i]); - luaS_fix(G(L)->tmname[i]); /* never collect these names */ - } -} - - -/* -** function to be used with macro "fasttm": optimized for absence of -** tag methods -*/ -const TValue *luaT_gettm (Table *events, TMS event, TString *ename) { - const TValue *tm = luaH_getstr(events, ename); - lua_assert(event <= TM_EQ); - if (ttisnil(tm)) { /* no tag method? */ - events->flags |= cast_byte(1u<metatable; - break; - case LUA_TUSERDATA: - mt = uvalue(o)->metatable; - break; - default: - mt = G(L)->mt[ttype(o)]; - } - return (mt ? luaH_getstr(mt, G(L)->tmname[event]) : luaO_nilobject); -} - diff --git a/lua/lua/ltm.h b/lua/lua/ltm.h deleted file mode 100644 index 64343b781b..0000000000 --- a/lua/lua/ltm.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -** $Id: ltm.h,v 2.6.1.1 2007/12/27 13:02:25 roberto Exp $ -** Tag methods -** See Copyright Notice in lua.h -*/ - -#ifndef ltm_h -#define ltm_h - - -#include "lobject.h" - - -/* -* WARNING: if you change the order of this enumeration, -* grep "ORDER TM" -*/ -typedef enum { - TM_INDEX, - TM_NEWINDEX, - TM_GC, - TM_MODE, - TM_EQ, /* last tag method with `fast' access */ - TM_ADD, - TM_SUB, - TM_MUL, - TM_DIV, - TM_MOD, - TM_POW, - TM_UNM, - TM_LEN, - TM_LT, - TM_LE, - TM_CONCAT, - TM_CALL, - TM_N /* number of elements in the enum */ -} TMS; - - - -#define gfasttm(g,et,e) ((et) == NULL ? NULL : \ - ((et)->flags & (1u<<(e))) ? NULL : luaT_gettm(et, e, (g)->tmname[e])) - -#define fasttm(l,et,e) gfasttm(G(l), et, e) - -LUAI_DATA const char *const luaT_typenames[]; - - -LUAI_FUNC const TValue *luaT_gettm (Table *events, TMS event, TString *ename); -LUAI_FUNC const TValue *luaT_gettmbyobj (lua_State *L, const TValue *o, - TMS event); -LUAI_FUNC void luaT_init (lua_State *L); - -#endif diff --git a/lua/lua/lua.c b/lua/lua/lua.c deleted file mode 100644 index 3a46609328..0000000000 --- a/lua/lua/lua.c +++ /dev/null @@ -1,392 +0,0 @@ -/* -** $Id: lua.c,v 1.160.1.2 2007/12/28 15:32:23 roberto Exp $ -** Lua stand-alone interpreter -** See Copyright Notice in lua.h -*/ - - -#include -#include -#include -#include - -#define lua_c - -#include "lua.h" - -#include "lauxlib.h" -#include "lualib.h" - - - -static lua_State *globalL = NULL; - -static const char *progname = LUA_PROGNAME; - - - -static void lstop (lua_State *L, lua_Debug *ar) { - (void)ar; /* unused arg. */ - lua_sethook(L, NULL, 0, 0); - luaL_error(L, "interrupted!"); -} - - -static void laction (int i) { - signal(i, SIG_DFL); /* if another SIGINT happens before lstop, - terminate process (default action) */ - lua_sethook(globalL, lstop, LUA_MASKCALL | LUA_MASKRET | LUA_MASKCOUNT, 1); -} - - -static void print_usage (void) { - fprintf(stderr, - "usage: %s [options] [script [args]].\n" - "Available options are:\n" - " -e stat execute string " LUA_QL("stat") "\n" - " -l name require library " LUA_QL("name") "\n" - " -i enter interactive mode after executing " LUA_QL("script") "\n" - " -v show version information\n" - " -- stop handling options\n" - " - execute stdin and stop handling options\n" - , - progname); - fflush(stderr); -} - - -static void l_message (const char *pname, const char *msg) { - if (pname) fprintf(stderr, "%s: ", pname); - fprintf(stderr, "%s\n", msg); - fflush(stderr); -} - - -static int report (lua_State *L, int status) { - if (status && !lua_isnil(L, -1)) { - const char *msg = lua_tostring(L, -1); - if (msg == NULL) msg = "(error object is not a string)"; - l_message(progname, msg); - lua_pop(L, 1); - } - return status; -} - - -static int traceback (lua_State *L) { - if (!lua_isstring(L, 1)) /* 'message' not a string? */ - return 1; /* keep it intact */ - lua_getfield(L, LUA_GLOBALSINDEX, "debug"); - if (!lua_istable(L, -1)) { - lua_pop(L, 1); - return 1; - } - lua_getfield(L, -1, "traceback"); - if (!lua_isfunction(L, -1)) { - lua_pop(L, 2); - return 1; - } - lua_pushvalue(L, 1); /* pass error message */ - lua_pushinteger(L, 2); /* skip this function and traceback */ - lua_call(L, 2, 1); /* call debug.traceback */ - return 1; -} - - -static int docall (lua_State *L, int narg, int clear) { - int status; - int base = lua_gettop(L) - narg; /* function index */ - lua_pushcfunction(L, traceback); /* push traceback function */ - lua_insert(L, base); /* put it under chunk and args */ - signal(SIGINT, laction); - status = lua_pcall(L, narg, (clear ? 0 : LUA_MULTRET), base); - signal(SIGINT, SIG_DFL); - lua_remove(L, base); /* remove traceback function */ - /* force a complete garbage collection in case of errors */ - if (status != 0) lua_gc(L, LUA_GCCOLLECT, 0); - return status; -} - - -static void print_version (void) { - l_message(NULL, LUA_RELEASE " " LUA_COPYRIGHT); -} - - -static int getargs (lua_State *L, char **argv, int n) { - int narg; - int i; - int argc = 0; - while (argv[argc]) argc++; /* count total number of arguments */ - narg = argc - (n + 1); /* number of arguments to the script */ - luaL_checkstack(L, narg + 3, "too many arguments to script"); - for (i=n+1; i < argc; i++) - lua_pushstring(L, argv[i]); - lua_createtable(L, narg, n + 1); - for (i=0; i < argc; i++) { - lua_pushstring(L, argv[i]); - lua_rawseti(L, -2, i - n); - } - return narg; -} - - -static int dofile (lua_State *L, const char *name) { - int status = luaL_loadfile(L, name) || docall(L, 0, 1); - return report(L, status); -} - - -static int dostring (lua_State *L, const char *s, const char *name) { - int status = luaL_loadbuffer(L, s, strlen(s), name) || docall(L, 0, 1); - return report(L, status); -} - - -static int dolibrary (lua_State *L, const char *name) { - lua_getglobal(L, "require"); - lua_pushstring(L, name); - return report(L, docall(L, 1, 1)); -} - - -static const char *get_prompt (lua_State *L, int firstline) { - const char *p; - lua_getfield(L, LUA_GLOBALSINDEX, firstline ? "_PROMPT" : "_PROMPT2"); - p = lua_tostring(L, -1); - if (p == NULL) p = (firstline ? LUA_PROMPT : LUA_PROMPT2); - lua_pop(L, 1); /* remove global */ - return p; -} - - -static int incomplete (lua_State *L, int status) { - if (status == LUA_ERRSYNTAX) { - size_t lmsg; - const char *msg = lua_tolstring(L, -1, &lmsg); - const char *tp = msg + lmsg - (sizeof(LUA_QL("")) - 1); - if (strstr(msg, LUA_QL("")) == tp) { - lua_pop(L, 1); - return 1; - } - } - return 0; /* else... */ -} - - -static int pushline (lua_State *L, int firstline) { - char buffer[LUA_MAXINPUT]; - char *b = buffer; - size_t l; - const char *prmt = get_prompt(L, firstline); - if (lua_readline(L, b, prmt) == 0) - return 0; /* no input */ - l = strlen(b); - if (l > 0 && b[l-1] == '\n') /* line ends with newline? */ - b[l-1] = '\0'; /* remove it */ - if (firstline && b[0] == '=') /* first line starts with `=' ? */ - lua_pushfstring(L, "return %s", b+1); /* change it to `return' */ - else - lua_pushstring(L, b); - lua_freeline(L, b); - return 1; -} - - -static int loadline (lua_State *L) { - int status; - lua_settop(L, 0); - if (!pushline(L, 1)) - return -1; /* no input */ - for (;;) { /* repeat until gets a complete line */ - status = luaL_loadbuffer(L, lua_tostring(L, 1), lua_strlen(L, 1), "=stdin"); - if (!incomplete(L, status)) break; /* cannot try to add lines? */ - if (!pushline(L, 0)) /* no more input? */ - return -1; - lua_pushliteral(L, "\n"); /* add a new line... */ - lua_insert(L, -2); /* ...between the two lines */ - lua_concat(L, 3); /* join them */ - } - lua_saveline(L, 1); - lua_remove(L, 1); /* remove line */ - return status; -} - - -static void dotty (lua_State *L) { - int status; - const char *oldprogname = progname; - progname = NULL; - while ((status = loadline(L)) != -1) { - if (status == 0) status = docall(L, 0, 0); - report(L, status); - if (status == 0 && lua_gettop(L) > 0) { /* any result to print? */ - lua_getglobal(L, "print"); - lua_insert(L, 1); - if (lua_pcall(L, lua_gettop(L)-1, 0, 0) != 0) - l_message(progname, lua_pushfstring(L, - "error calling " LUA_QL("print") " (%s)", - lua_tostring(L, -1))); - } - } - lua_settop(L, 0); /* clear stack */ - fputs("\n", stdout); - fflush(stdout); - progname = oldprogname; -} - - -static int handle_script (lua_State *L, char **argv, int n) { - int status; - const char *fname; - int narg = getargs(L, argv, n); /* collect arguments */ - lua_setglobal(L, "arg"); - fname = argv[n]; - if (strcmp(fname, "-") == 0 && strcmp(argv[n-1], "--") != 0) - fname = NULL; /* stdin */ - status = luaL_loadfile(L, fname); - lua_insert(L, -(narg+1)); - if (status == 0) - status = docall(L, narg, 0); - else - lua_pop(L, narg); - return report(L, status); -} - - -/* check that argument has no extra characters at the end */ -#define notail(x) {if ((x)[2] != '\0') return -1;} - - -static int collectargs (char **argv, int *pi, int *pv, int *pe) { - int i; - for (i = 1; argv[i] != NULL; i++) { - if (argv[i][0] != '-') /* not an option? */ - return i; - switch (argv[i][1]) { /* option */ - case '-': - notail(argv[i]); - return (argv[i+1] != NULL ? i+1 : 0); - case '\0': - return i; - case 'i': - notail(argv[i]); - *pi = 1; /* go through */ - case 'v': - notail(argv[i]); - *pv = 1; - break; - case 'e': - *pe = 1; /* go through */ - case 'l': - if (argv[i][2] == '\0') { - i++; - if (argv[i] == NULL) return -1; - } - break; - default: return -1; /* invalid option */ - } - } - return 0; -} - - -static int runargs (lua_State *L, char **argv, int n) { - int i; - for (i = 1; i < n; i++) { - if (argv[i] == NULL) continue; - lua_assert(argv[i][0] == '-'); - switch (argv[i][1]) { /* option */ - case 'e': { - const char *chunk = argv[i] + 2; - if (*chunk == '\0') chunk = argv[++i]; - lua_assert(chunk != NULL); - if (dostring(L, chunk, "=(command line)") != 0) - return 1; - break; - } - case 'l': { - const char *filename = argv[i] + 2; - if (*filename == '\0') filename = argv[++i]; - lua_assert(filename != NULL); - if (dolibrary(L, filename)) - return 1; /* stop if file fails */ - break; - } - default: break; - } - } - return 0; -} - - -static int handle_luainit (lua_State *L) { - const char *init = getenv(LUA_INIT); - if (init == NULL) return 0; /* status OK */ - else if (init[0] == '@') - return dofile(L, init+1); - else - return dostring(L, init, "=" LUA_INIT); -} - - -struct Smain { - int argc; - char **argv; - int status; -}; - - -static int pmain (lua_State *L) { - struct Smain *s = (struct Smain *)lua_touserdata(L, 1); - char **argv = s->argv; - int script; - int has_i = 0, has_v = 0, has_e = 0; - globalL = L; - if (argv[0] && argv[0][0]) progname = argv[0]; - lua_gc(L, LUA_GCSTOP, 0); /* stop collector during initialization */ - luaL_openlibs(L); /* open libraries */ - lua_gc(L, LUA_GCRESTART, 0); - s->status = handle_luainit(L); - if (s->status != 0) return 0; - script = collectargs(argv, &has_i, &has_v, &has_e); - if (script < 0) { /* invalid args? */ - print_usage(); - s->status = 1; - return 0; - } - if (has_v) print_version(); - s->status = runargs(L, argv, (script > 0) ? script : s->argc); - if (s->status != 0) return 0; - if (script) - s->status = handle_script(L, argv, script); - if (s->status != 0) return 0; - if (has_i) - dotty(L); - else if (script == 0 && !has_e && !has_v) { - if (lua_stdin_is_tty()) { - print_version(); - dotty(L); - } - else dofile(L, NULL); /* executes stdin as a file */ - } - return 0; -} - - -int main (int argc, char **argv) { - int status; - struct Smain s; - lua_State *L = lua_open(); /* create state */ - if (L == NULL) { - l_message(argv[0], "cannot create state: not enough memory"); - return EXIT_FAILURE; - } - s.argc = argc; - s.argv = argv; - status = lua_cpcall(L, &pmain, &s); - report(L, status); - lua_close(L); - return (status || s.status) ? EXIT_FAILURE : EXIT_SUCCESS; -} - diff --git a/lua/lua/lua.h b/lua/lua/lua.h deleted file mode 100644 index e4bdfd3b94..0000000000 --- a/lua/lua/lua.h +++ /dev/null @@ -1,388 +0,0 @@ -/* -** $Id: lua.h,v 1.218.1.5 2008/08/06 13:30:12 roberto Exp $ -** Lua - An Extensible Extension Language -** Lua.org, PUC-Rio, Brazil (http://www.lua.org) -** See Copyright Notice at the end of this file -*/ - - -#ifndef lua_h -#define lua_h - -#include -#include - - -#include "luaconf.h" - - -#define LUA_VERSION "Lua 5.1" -#define LUA_RELEASE "Lua 5.1.4" -#define LUA_VERSION_NUM 501 -#define LUA_COPYRIGHT "Copyright (C) 1994-2008 Lua.org, PUC-Rio" -#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo & W. Celes" - - -/* mark for precompiled code (`Lua') */ -#define LUA_SIGNATURE "\033Lua" - -/* option for multiple returns in `lua_pcall' and `lua_call' */ -#define LUA_MULTRET (-1) - - -/* -** pseudo-indices -*/ -#define LUA_REGISTRYINDEX (-10000) -#define LUA_ENVIRONINDEX (-10001) -#define LUA_GLOBALSINDEX (-10002) -#define lua_upvalueindex(i) (LUA_GLOBALSINDEX-(i)) - - -/* thread status; 0 is OK */ -#define LUA_YIELD 1 -#define LUA_ERRRUN 2 -#define LUA_ERRSYNTAX 3 -#define LUA_ERRMEM 4 -#define LUA_ERRERR 5 - - -typedef struct lua_State lua_State; - -typedef int (*lua_CFunction) (lua_State *L); - - -/* -** functions that read/write blocks when loading/dumping Lua chunks -*/ -typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz); - -typedef int (*lua_Writer) (lua_State *L, const void* p, size_t sz, void* ud); - - -/* -** prototype for memory-allocation functions -*/ -typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize); - - -/* -** basic types -*/ -#define LUA_TNONE (-1) - -#define LUA_TNIL 0 -#define LUA_TBOOLEAN 1 -#define LUA_TLIGHTUSERDATA 2 -#define LUA_TNUMBER 3 -#define LUA_TSTRING 4 -#define LUA_TTABLE 5 -#define LUA_TFUNCTION 6 -#define LUA_TUSERDATA 7 -#define LUA_TTHREAD 8 - - - -/* minimum Lua stack available to a C function */ -#define LUA_MINSTACK 20 - - -/* -** generic extra include file -*/ -#if defined(LUA_USER_H) -#include LUA_USER_H -#endif - - -/* type of numbers in Lua */ -typedef LUA_NUMBER lua_Number; - - -/* type for integer functions */ -typedef LUA_INTEGER lua_Integer; - - - -/* -** state manipulation -*/ -LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud); -LUA_API void (lua_close) (lua_State *L); -LUA_API lua_State *(lua_newthread) (lua_State *L); - -LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf); - - -/* -** basic stack manipulation -*/ -LUA_API int (lua_gettop) (lua_State *L); -LUA_API void (lua_settop) (lua_State *L, int idx); -LUA_API void (lua_pushvalue) (lua_State *L, int idx); -LUA_API void (lua_remove) (lua_State *L, int idx); -LUA_API void (lua_insert) (lua_State *L, int idx); -LUA_API void (lua_replace) (lua_State *L, int idx); -LUA_API int (lua_checkstack) (lua_State *L, int sz); - -LUA_API void (lua_xmove) (lua_State *from, lua_State *to, int n); - - -/* -** access functions (stack -> C) -*/ - -LUA_API int (lua_isnumber) (lua_State *L, int idx); -LUA_API int (lua_isstring) (lua_State *L, int idx); -LUA_API int (lua_iscfunction) (lua_State *L, int idx); -LUA_API int (lua_isuserdata) (lua_State *L, int idx); -LUA_API int (lua_type) (lua_State *L, int idx); -LUA_API const char *(lua_typename) (lua_State *L, int tp); - -LUA_API int (lua_equal) (lua_State *L, int idx1, int idx2); -LUA_API int (lua_rawequal) (lua_State *L, int idx1, int idx2); -LUA_API int (lua_lessthan) (lua_State *L, int idx1, int idx2); - -LUA_API lua_Number (lua_tonumber) (lua_State *L, int idx); -LUA_API lua_Integer (lua_tointeger) (lua_State *L, int idx); -LUA_API int (lua_toboolean) (lua_State *L, int idx); -LUA_API const char *(lua_tolstring) (lua_State *L, int idx, size_t *len); -LUA_API size_t (lua_objlen) (lua_State *L, int idx); -LUA_API lua_CFunction (lua_tocfunction) (lua_State *L, int idx); -LUA_API void *(lua_touserdata) (lua_State *L, int idx); -LUA_API lua_State *(lua_tothread) (lua_State *L, int idx); -LUA_API const void *(lua_topointer) (lua_State *L, int idx); - - -/* -** push functions (C -> stack) -*/ -LUA_API void (lua_pushnil) (lua_State *L); -LUA_API void (lua_pushnumber) (lua_State *L, lua_Number n); -LUA_API void (lua_pushinteger) (lua_State *L, lua_Integer n); -LUA_API void (lua_pushlstring) (lua_State *L, const char *s, size_t l); -LUA_API void (lua_pushstring) (lua_State *L, const char *s); -LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt, - va_list argp); -LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...); -LUA_API void (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n); -LUA_API void (lua_pushboolean) (lua_State *L, int b); -LUA_API void (lua_pushlightuserdata) (lua_State *L, void *p); -LUA_API int (lua_pushthread) (lua_State *L); - - -/* -** get functions (Lua -> stack) -*/ -LUA_API void (lua_gettable) (lua_State *L, int idx); -LUA_API void (lua_getfield) (lua_State *L, int idx, const char *k); -LUA_API void (lua_rawget) (lua_State *L, int idx); -LUA_API void (lua_rawgeti) (lua_State *L, int idx, int n); -LUA_API void (lua_createtable) (lua_State *L, int narr, int nrec); -LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz); -LUA_API int (lua_getmetatable) (lua_State *L, int objindex); -LUA_API void (lua_getfenv) (lua_State *L, int idx); - - -/* -** set functions (stack -> Lua) -*/ -LUA_API void (lua_settable) (lua_State *L, int idx); -LUA_API void (lua_setfield) (lua_State *L, int idx, const char *k); -LUA_API void (lua_rawset) (lua_State *L, int idx); -LUA_API void (lua_rawseti) (lua_State *L, int idx, int n); -LUA_API int (lua_setmetatable) (lua_State *L, int objindex); -LUA_API int (lua_setfenv) (lua_State *L, int idx); - - -/* -** `load' and `call' functions (load and run Lua code) -*/ -LUA_API void (lua_call) (lua_State *L, int nargs, int nresults); -LUA_API int (lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc); -LUA_API int (lua_cpcall) (lua_State *L, lua_CFunction func, void *ud); -LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt, - const char *chunkname); - -LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data); - - -/* -** coroutine functions -*/ -LUA_API int (lua_yield) (lua_State *L, int nresults); -LUA_API int (lua_resume) (lua_State *L, int narg); -LUA_API int (lua_status) (lua_State *L); - -/* -** garbage-collection function and options -*/ - -#define LUA_GCSTOP 0 -#define LUA_GCRESTART 1 -#define LUA_GCCOLLECT 2 -#define LUA_GCCOUNT 3 -#define LUA_GCCOUNTB 4 -#define LUA_GCSTEP 5 -#define LUA_GCSETPAUSE 6 -#define LUA_GCSETSTEPMUL 7 - -LUA_API int (lua_gc) (lua_State *L, int what, int data); - - -/* -** miscellaneous functions -*/ - -LUA_API int (lua_error) (lua_State *L); - -LUA_API int (lua_next) (lua_State *L, int idx); - -LUA_API void (lua_concat) (lua_State *L, int n); - -LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud); -LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud); - - - -/* -** =============================================================== -** some useful macros -** =============================================================== -*/ - -#define lua_pop(L,n) lua_settop(L, -(n)-1) - -#define lua_newtable(L) lua_createtable(L, 0, 0) - -#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n))) - -#define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0) - -#define lua_strlen(L,i) lua_objlen(L, (i)) - -#define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION) -#define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE) -#define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA) -#define lua_isnil(L,n) (lua_type(L, (n)) == LUA_TNIL) -#define lua_isboolean(L,n) (lua_type(L, (n)) == LUA_TBOOLEAN) -#define lua_isthread(L,n) (lua_type(L, (n)) == LUA_TTHREAD) -#define lua_isnone(L,n) (lua_type(L, (n)) == LUA_TNONE) -#define lua_isnoneornil(L, n) (lua_type(L, (n)) <= 0) - -#define lua_pushliteral(L, s) \ - lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1) - -#define lua_setglobal(L,s) lua_setfield(L, LUA_GLOBALSINDEX, (s)) -#define lua_getglobal(L,s) lua_getfield(L, LUA_GLOBALSINDEX, (s)) - -#define lua_tostring(L,i) lua_tolstring(L, (i), NULL) - - - -/* -** compatibility macros and functions -*/ - -#define lua_open() luaL_newstate() - -#define lua_getregistry(L) lua_pushvalue(L, LUA_REGISTRYINDEX) - -#define lua_getgccount(L) lua_gc(L, LUA_GCCOUNT, 0) - -#define lua_Chunkreader lua_Reader -#define lua_Chunkwriter lua_Writer - - -/* hack */ -LUA_API void lua_setlevel (lua_State *from, lua_State *to); - - -/* -** {====================================================================== -** Debug API -** ======================================================================= -*/ - - -/* -** Event codes -*/ -#define LUA_HOOKCALL 0 -#define LUA_HOOKRET 1 -#define LUA_HOOKLINE 2 -#define LUA_HOOKCOUNT 3 -#define LUA_HOOKTAILRET 4 - - -/* -** Event masks -*/ -#define LUA_MASKCALL (1 << LUA_HOOKCALL) -#define LUA_MASKRET (1 << LUA_HOOKRET) -#define LUA_MASKLINE (1 << LUA_HOOKLINE) -#define LUA_MASKCOUNT (1 << LUA_HOOKCOUNT) - -typedef struct lua_Debug lua_Debug; /* activation record */ - - -/* Functions to be called by the debuger in specific events */ -typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar); - - -LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar); -LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar); -LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n); -LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n); -LUA_API const char *lua_getupvalue (lua_State *L, int funcindex, int n); -LUA_API const char *lua_setupvalue (lua_State *L, int funcindex, int n); - -LUA_API int lua_sethook (lua_State *L, lua_Hook func, int mask, int count); -LUA_API lua_Hook lua_gethook (lua_State *L); -LUA_API int lua_gethookmask (lua_State *L); -LUA_API int lua_gethookcount (lua_State *L); - - -struct lua_Debug { - int event; - const char *name; /* (n) */ - const char *namewhat; /* (n) `global', `local', `field', `method' */ - const char *what; /* (S) `Lua', `C', `main', `tail' */ - const char *source; /* (S) */ - int currentline; /* (l) */ - int nups; /* (u) number of upvalues */ - int linedefined; /* (S) */ - int lastlinedefined; /* (S) */ - char short_src[LUA_IDSIZE]; /* (S) */ - /* private part */ - int i_ci; /* active function */ -}; - -/* }====================================================================== */ - - -/****************************************************************************** -* Copyright (C) 1994-2008 Lua.org, PUC-Rio. All rights reserved. -* -* Permission is hereby granted, free of charge, to any person obtaining -* a copy of this software and associated documentation files (the -* "Software"), to deal in the Software without restriction, including -* without limitation the rights to use, copy, modify, merge, publish, -* distribute, sublicense, and/or sell copies of the Software, and to -* permit persons to whom the Software is furnished to do so, subject to -* the following conditions: -* -* The above copyright notice and this permission notice shall be -* included in all copies or substantial portions of the Software. -* -* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -******************************************************************************/ - - -#endif diff --git a/lua/lua/luaconf.h b/lua/lua/luaconf.h deleted file mode 100644 index e2cb26163a..0000000000 --- a/lua/lua/luaconf.h +++ /dev/null @@ -1,763 +0,0 @@ -/* -** $Id: luaconf.h,v 1.82.1.7 2008/02/11 16:25:08 roberto Exp $ -** Configuration file for Lua -** See Copyright Notice in lua.h -*/ - - -#ifndef lconfig_h -#define lconfig_h - -#include -#include - - -/* -** ================================================================== -** Search for "@@" to find all configurable definitions. -** =================================================================== -*/ - - -/* -@@ LUA_ANSI controls the use of non-ansi features. -** CHANGE it (define it) if you want Lua to avoid the use of any -** non-ansi feature or library. -*/ -#if defined(__STRICT_ANSI__) -#define LUA_ANSI -#endif - - -#if !defined(LUA_ANSI) && defined(_WIN32) -#define LUA_WIN -#endif - -#if defined(LUA_USE_LINUX) -#define LUA_USE_POSIX -#define LUA_USE_DLOPEN /* needs an extra library: -ldl */ -#define LUA_USE_READLINE /* needs some extra libraries */ -#endif - -#if defined(LUA_USE_MACOSX) -#define LUA_USE_POSIX -#define LUA_DL_DYLD /* does not need extra library */ -#endif - - - -/* -@@ LUA_USE_POSIX includes all functionallity listed as X/Open System -@* Interfaces Extension (XSI). -** CHANGE it (define it) if your system is XSI compatible. -*/ -#if defined(LUA_USE_POSIX) -#define LUA_USE_MKSTEMP -#define LUA_USE_ISATTY -#define LUA_USE_POPEN -#define LUA_USE_ULONGJMP -#endif - - -/* -@@ LUA_PATH and LUA_CPATH are the names of the environment variables that -@* Lua check to set its paths. -@@ LUA_INIT is the name of the environment variable that Lua -@* checks for initialization code. -** CHANGE them if you want different names. -*/ -#define LUA_PATH "LUA_PATH" -#define LUA_CPATH "LUA_CPATH" -#define LUA_INIT "LUA_INIT" - - -/* -@@ LUA_PATH_DEFAULT is the default path that Lua uses to look for -@* Lua libraries. -@@ LUA_CPATH_DEFAULT is the default path that Lua uses to look for -@* C libraries. -** CHANGE them if your machine has a non-conventional directory -** hierarchy or if you want to install your libraries in -** non-conventional directories. -*/ -#if defined(_WIN32) -/* -** In Windows, any exclamation mark ('!') in the path is replaced by the -** path of the directory of the executable file of the current process. -*/ -#define LUA_LDIR "!\\lua\\" -#define LUA_CDIR "!\\" -#define LUA_PATH_DEFAULT \ - ".\\?.lua;" LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;" \ - LUA_CDIR"?.lua;" LUA_CDIR"?\\init.lua" -#define LUA_CPATH_DEFAULT \ - ".\\?.dll;" LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll" - -#else -#define LUA_ROOT "/usr/local/" -#define LUA_LDIR LUA_ROOT "share/lua/5.1/" -#define LUA_CDIR LUA_ROOT "lib/lua/5.1/" -#define LUA_PATH_DEFAULT \ - "./?.lua;" LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \ - LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua" -#define LUA_CPATH_DEFAULT \ - "./?.so;" LUA_CDIR"?.so;" LUA_CDIR"loadall.so" -#endif - - -/* -@@ LUA_DIRSEP is the directory separator (for submodules). -** CHANGE it if your machine does not use "/" as the directory separator -** and is not Windows. (On Windows Lua automatically uses "\".) -*/ -#if defined(_WIN32) -#define LUA_DIRSEP "\\" -#else -#define LUA_DIRSEP "/" -#endif - - -/* -@@ LUA_PATHSEP is the character that separates templates in a path. -@@ LUA_PATH_MARK is the string that marks the substitution points in a -@* template. -@@ LUA_EXECDIR in a Windows path is replaced by the executable's -@* directory. -@@ LUA_IGMARK is a mark to ignore all before it when bulding the -@* luaopen_ function name. -** CHANGE them if for some reason your system cannot use those -** characters. (E.g., if one of those characters is a common character -** in file/directory names.) Probably you do not need to change them. -*/ -#define LUA_PATHSEP ";" -#define LUA_PATH_MARK "?" -#define LUA_EXECDIR "!" -#define LUA_IGMARK "-" - - -/* -@@ LUA_INTEGER is the integral type used by lua_pushinteger/lua_tointeger. -** CHANGE that if ptrdiff_t is not adequate on your machine. (On most -** machines, ptrdiff_t gives a good choice between int or long.) -*/ -#define LUA_INTEGER ptrdiff_t - - -/* -@@ LUA_API is a mark for all core API functions. -@@ LUALIB_API is a mark for all standard library functions. -** CHANGE them if you need to define those functions in some special way. -** For instance, if you want to create one Windows DLL with the core and -** the libraries, you may want to use the following definition (define -** LUA_BUILD_AS_DLL to get it). -*/ -#if defined(LUA_BUILD_AS_DLL) - -#if defined(LUA_CORE) || defined(LUA_LIB) -#define LUA_API __declspec(dllexport) -#else -#define LUA_API __declspec(dllimport) -#endif - -#else - -#define LUA_API extern - -#endif - -/* more often than not the libs go together with the core */ -#define LUALIB_API LUA_API - - -/* -@@ LUAI_FUNC is a mark for all extern functions that are not to be -@* exported to outside modules. -@@ LUAI_DATA is a mark for all extern (const) variables that are not to -@* be exported to outside modules. -** CHANGE them if you need to mark them in some special way. Elf/gcc -** (versions 3.2 and later) mark them as "hidden" to optimize access -** when Lua is compiled as a shared library. -*/ -#if defined(luaall_c) -#define LUAI_FUNC static -#define LUAI_DATA /* empty */ - -#elif defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \ - defined(__ELF__) -#define LUAI_FUNC __attribute__((visibility("hidden"))) extern -#define LUAI_DATA LUAI_FUNC - -#else -#define LUAI_FUNC extern -#define LUAI_DATA extern -#endif - - - -/* -@@ LUA_QL describes how error messages quote program elements. -** CHANGE it if you want a different appearance. -*/ -#define LUA_QL(x) "'" x "'" -#define LUA_QS LUA_QL("%s") - - -/* -@@ LUA_IDSIZE gives the maximum size for the description of the source -@* of a function in debug information. -** CHANGE it if you want a different size. -*/ -#define LUA_IDSIZE 60 - - -/* -** {================================================================== -** Stand-alone configuration -** =================================================================== -*/ - -#if defined(lua_c) || defined(luaall_c) - -/* -@@ lua_stdin_is_tty detects whether the standard input is a 'tty' (that -@* is, whether we're running lua interactively). -** CHANGE it if you have a better definition for non-POSIX/non-Windows -** systems. -*/ -#if defined(LUA_USE_ISATTY) -#include -#define lua_stdin_is_tty() isatty(0) -#elif defined(LUA_WIN) -#include -#include -#define lua_stdin_is_tty() _isatty(_fileno(stdin)) -#else -#define lua_stdin_is_tty() 1 /* assume stdin is a tty */ -#endif - - -/* -@@ LUA_PROMPT is the default prompt used by stand-alone Lua. -@@ LUA_PROMPT2 is the default continuation prompt used by stand-alone Lua. -** CHANGE them if you want different prompts. (You can also change the -** prompts dynamically, assigning to globals _PROMPT/_PROMPT2.) -*/ -#define LUA_PROMPT "> " -#define LUA_PROMPT2 ">> " - - -/* -@@ LUA_PROGNAME is the default name for the stand-alone Lua program. -** CHANGE it if your stand-alone interpreter has a different name and -** your system is not able to detect that name automatically. -*/ -#define LUA_PROGNAME "lua" - - -/* -@@ LUA_MAXINPUT is the maximum length for an input line in the -@* stand-alone interpreter. -** CHANGE it if you need longer lines. -*/ -#define LUA_MAXINPUT 512 - - -/* -@@ lua_readline defines how to show a prompt and then read a line from -@* the standard input. -@@ lua_saveline defines how to "save" a read line in a "history". -@@ lua_freeline defines how to free a line read by lua_readline. -** CHANGE them if you want to improve this functionality (e.g., by using -** GNU readline and history facilities). -*/ -#if defined(LUA_USE_READLINE) -#include -#include -#include -#define lua_readline(L,b,p) ((void)L, ((b)=readline(p)) != NULL) -#define lua_saveline(L,idx) \ - if (lua_strlen(L,idx) > 0) /* non-empty line? */ \ - add_history(lua_tostring(L, idx)); /* add it to history */ -#define lua_freeline(L,b) ((void)L, free(b)) -#else -#define lua_readline(L,b,p) \ - ((void)L, fputs(p, stdout), fflush(stdout), /* show prompt */ \ - fgets(b, LUA_MAXINPUT, stdin) != NULL) /* get line */ -#define lua_saveline(L,idx) { (void)L; (void)idx; } -#define lua_freeline(L,b) { (void)L; (void)b; } -#endif - -#endif - -/* }================================================================== */ - - -/* -@@ LUAI_GCPAUSE defines the default pause between garbage-collector cycles -@* as a percentage. -** CHANGE it if you want the GC to run faster or slower (higher values -** mean larger pauses which mean slower collection.) You can also change -** this value dynamically. -*/ -#define LUAI_GCPAUSE 200 /* 200% (wait memory to double before next GC) */ - - -/* -@@ LUAI_GCMUL defines the default speed of garbage collection relative to -@* memory allocation as a percentage. -** CHANGE it if you want to change the granularity of the garbage -** collection. (Higher values mean coarser collections. 0 represents -** infinity, where each step performs a full collection.) You can also -** change this value dynamically. -*/ -#define LUAI_GCMUL 200 /* GC runs 'twice the speed' of memory allocation */ - - - -/* -@@ LUA_COMPAT_GETN controls compatibility with old getn behavior. -** CHANGE it (define it) if you want exact compatibility with the -** behavior of setn/getn in Lua 5.0. -*/ -#undef LUA_COMPAT_GETN - -/* -@@ LUA_COMPAT_LOADLIB controls compatibility about global loadlib. -** CHANGE it to undefined as soon as you do not need a global 'loadlib' -** function (the function is still available as 'package.loadlib'). -*/ -#undef LUA_COMPAT_LOADLIB - -/* -@@ LUA_COMPAT_VARARG controls compatibility with old vararg feature. -** CHANGE it to undefined as soon as your programs use only '...' to -** access vararg parameters (instead of the old 'arg' table). -*/ -#define LUA_COMPAT_VARARG - -/* -@@ LUA_COMPAT_MOD controls compatibility with old math.mod function. -** CHANGE it to undefined as soon as your programs use 'math.fmod' or -** the new '%' operator instead of 'math.mod'. -*/ -#define LUA_COMPAT_MOD - -/* -@@ LUA_COMPAT_LSTR controls compatibility with old long string nesting -@* facility. -** CHANGE it to 2 if you want the old behaviour, or undefine it to turn -** off the advisory error when nesting [[...]]. -*/ -#define LUA_COMPAT_LSTR 1 - -/* -@@ LUA_COMPAT_GFIND controls compatibility with old 'string.gfind' name. -** CHANGE it to undefined as soon as you rename 'string.gfind' to -** 'string.gmatch'. -*/ -#define LUA_COMPAT_GFIND - -/* -@@ LUA_COMPAT_OPENLIB controls compatibility with old 'luaL_openlib' -@* behavior. -** CHANGE it to undefined as soon as you replace to 'luaL_register' -** your uses of 'luaL_openlib' -*/ -#define LUA_COMPAT_OPENLIB - - - -/* -@@ luai_apicheck is the assert macro used by the Lua-C API. -** CHANGE luai_apicheck if you want Lua to perform some checks in the -** parameters it gets from API calls. This may slow down the interpreter -** a bit, but may be quite useful when debugging C code that interfaces -** with Lua. A useful redefinition is to use assert.h. -*/ -#if defined(LUA_USE_APICHECK) -#include -#define luai_apicheck(L,o) { (void)L; assert(o); } -#else -#define luai_apicheck(L,o) { (void)L; } -#endif - - -/* -@@ LUAI_BITSINT defines the number of bits in an int. -** CHANGE here if Lua cannot automatically detect the number of bits of -** your machine. Probably you do not need to change this. -*/ -/* avoid overflows in comparison */ -#if INT_MAX-20 < 32760 -#define LUAI_BITSINT 16 -#elif INT_MAX > 2147483640L -/* int has at least 32 bits */ -#define LUAI_BITSINT 32 -#else -#error "you must define LUA_BITSINT with number of bits in an integer" -#endif - - -/* -@@ LUAI_UINT32 is an unsigned integer with at least 32 bits. -@@ LUAI_INT32 is an signed integer with at least 32 bits. -@@ LUAI_UMEM is an unsigned integer big enough to count the total -@* memory used by Lua. -@@ LUAI_MEM is a signed integer big enough to count the total memory -@* used by Lua. -** CHANGE here if for some weird reason the default definitions are not -** good enough for your machine. (The definitions in the 'else' -** part always works, but may waste space on machines with 64-bit -** longs.) Probably you do not need to change this. -*/ -#if LUAI_BITSINT >= 32 -#define LUAI_UINT32 unsigned int -#define LUAI_INT32 int -#define LUAI_MAXINT32 INT_MAX -#define LUAI_UMEM size_t -#define LUAI_MEM ptrdiff_t -#else -/* 16-bit ints */ -#define LUAI_UINT32 unsigned long -#define LUAI_INT32 long -#define LUAI_MAXINT32 LONG_MAX -#define LUAI_UMEM unsigned long -#define LUAI_MEM long -#endif - - -/* -@@ LUAI_MAXCALLS limits the number of nested calls. -** CHANGE it if you need really deep recursive calls. This limit is -** arbitrary; its only purpose is to stop infinite recursion before -** exhausting memory. -*/ -#define LUAI_MAXCALLS 20000 - - -/* -@@ LUAI_MAXCSTACK limits the number of Lua stack slots that a C function -@* can use. -** CHANGE it if you need lots of (Lua) stack space for your C -** functions. This limit is arbitrary; its only purpose is to stop C -** functions to consume unlimited stack space. (must be smaller than -** -LUA_REGISTRYINDEX) -*/ -#define LUAI_MAXCSTACK 8000 - - - -/* -** {================================================================== -** CHANGE (to smaller values) the following definitions if your system -** has a small C stack. (Or you may want to change them to larger -** values if your system has a large C stack and these limits are -** too rigid for you.) Some of these constants control the size of -** stack-allocated arrays used by the compiler or the interpreter, while -** others limit the maximum number of recursive calls that the compiler -** or the interpreter can perform. Values too large may cause a C stack -** overflow for some forms of deep constructs. -** =================================================================== -*/ - - -/* -@@ LUAI_MAXCCALLS is the maximum depth for nested C calls (short) and -@* syntactical nested non-terminals in a program. -*/ -#define LUAI_MAXCCALLS 200 - - -/* -@@ LUAI_MAXVARS is the maximum number of local variables per function -@* (must be smaller than 250). -*/ -#define LUAI_MAXVARS 200 - - -/* -@@ LUAI_MAXUPVALUES is the maximum number of upvalues per function -@* (must be smaller than 250). -*/ -#define LUAI_MAXUPVALUES 60 - - -/* -@@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system. -*/ -#define LUAL_BUFFERSIZE BUFSIZ - -/* }================================================================== */ - - - - -/* -** {================================================================== -@@ LUA_NUMBER is the type of numbers in Lua. -** CHANGE the following definitions only if you want to build Lua -** with a number type different from double. You may also need to -** change lua_number2int & lua_number2integer. -** =================================================================== -*/ - -#define LUA_NUMBER_DOUBLE -#define LUA_NUMBER double - -/* -@@ LUAI_UACNUMBER is the result of an 'usual argument conversion' -@* over a number. -*/ -#define LUAI_UACNUMBER double - - -/* -@@ LUA_NUMBER_SCAN is the format for reading numbers. -@@ LUA_NUMBER_FMT is the format for writing numbers. -@@ lua_number2str converts a number to a string. -@@ LUAI_MAXNUMBER2STR is maximum size of previous conversion. -@@ lua_str2number converts a string to a number. -*/ -#define LUA_NUMBER_SCAN "%lf" -#define LUA_NUMBER_FMT "%.14g" -#define lua_number2str(s,n) sprintf((s), LUA_NUMBER_FMT, (n)) -#define LUAI_MAXNUMBER2STR 32 /* 16 digits, sign, point, and \0 */ -#define lua_str2number(s,p) strtod((s), (p)) - - -/* -@@ The luai_num* macros define the primitive operations over numbers. -*/ -#if defined(LUA_CORE) -#include -#define luai_numadd(a,b) ((a)+(b)) -#define luai_numsub(a,b) ((a)-(b)) -#define luai_nummul(a,b) ((a)*(b)) -#define luai_numdiv(a,b) ((a)/(b)) -#define luai_nummod(a,b) ((a) - floor((a)/(b))*(b)) -#define luai_numpow(a,b) (pow(a,b)) -#define luai_numunm(a) (-(a)) -#define luai_numeq(a,b) ((a)==(b)) -#define luai_numlt(a,b) ((a)<(b)) -#define luai_numle(a,b) ((a)<=(b)) -#define luai_numisnan(a) (!luai_numeq((a), (a))) -#endif - - -/* -@@ lua_number2int is a macro to convert lua_Number to int. -@@ lua_number2integer is a macro to convert lua_Number to lua_Integer. -** CHANGE them if you know a faster way to convert a lua_Number to -** int (with any rounding method and without throwing errors) in your -** system. In Pentium machines, a naive typecast from double to int -** in C is extremely slow, so any alternative is worth trying. -*/ - -/* On a Pentium, resort to a trick */ -#if defined(LUA_NUMBER_DOUBLE) && !defined(LUA_ANSI) && !defined(__SSE2__) && \ - (defined(__i386) || defined (_M_IX86) || defined(__i386__)) - -/* On a Microsoft compiler, use assembler */ -#if defined(_MSC_VER) - -#define lua_number2int(i,d) __asm fld d __asm fistp i -#define lua_number2integer(i,n) lua_number2int(i, n) - -/* the next trick should work on any Pentium, but sometimes clashes - with a DirectX idiosyncrasy */ -#else - -union luai_Cast { double l_d; long l_l; }; -#define lua_number2int(i,d) \ - { volatile union luai_Cast u; u.l_d = (d) + 6755399441055744.0; (i) = u.l_l; } -#define lua_number2integer(i,n) lua_number2int(i, n) - -#endif - - -/* this option always works, but may be slow */ -#else -#define lua_number2int(i,d) ((i)=(int)(d)) -#define lua_number2integer(i,d) ((i)=(lua_Integer)(d)) - -#endif - -/* }================================================================== */ - - -/* -@@ LUAI_USER_ALIGNMENT_T is a type that requires maximum alignment. -** CHANGE it if your system requires alignments larger than double. (For -** instance, if your system supports long doubles and they must be -** aligned in 16-byte boundaries, then you should add long double in the -** union.) Probably you do not need to change this. -*/ -#define LUAI_USER_ALIGNMENT_T union { double u; void *s; long l; } - - -/* -@@ LUAI_THROW/LUAI_TRY define how Lua does exception handling. -** CHANGE them if you prefer to use longjmp/setjmp even with C++ -** or if want/don't to use _longjmp/_setjmp instead of regular -** longjmp/setjmp. By default, Lua handles errors with exceptions when -** compiling as C++ code, with _longjmp/_setjmp when asked to use them, -** and with longjmp/setjmp otherwise. -*/ -#if defined(__cplusplus) -/* C++ exceptions */ -#define LUAI_THROW(L,c) throw(c) -#define LUAI_TRY(L,c,a) try { a } catch(...) \ - { if ((c)->status == 0) (c)->status = -1; } -#define luai_jmpbuf int /* dummy variable */ - -#elif defined(LUA_USE_ULONGJMP) -/* in Unix, try _longjmp/_setjmp (more efficient) */ -#define LUAI_THROW(L,c) _longjmp((c)->b, 1) -#define LUAI_TRY(L,c,a) if (_setjmp((c)->b) == 0) { a } -#define luai_jmpbuf jmp_buf - -#else -/* default handling with long jumps */ -#define LUAI_THROW(L,c) longjmp((c)->b, 1) -#define LUAI_TRY(L,c,a) if (setjmp((c)->b) == 0) { a } -#define luai_jmpbuf jmp_buf - -#endif - - -/* -@@ LUA_MAXCAPTURES is the maximum number of captures that a pattern -@* can do during pattern-matching. -** CHANGE it if you need more captures. This limit is arbitrary. -*/ -#define LUA_MAXCAPTURES 32 - - -/* -@@ lua_tmpnam is the function that the OS library uses to create a -@* temporary name. -@@ LUA_TMPNAMBUFSIZE is the maximum size of a name created by lua_tmpnam. -** CHANGE them if you have an alternative to tmpnam (which is considered -** insecure) or if you want the original tmpnam anyway. By default, Lua -** uses tmpnam except when POSIX is available, where it uses mkstemp. -*/ -#if defined(loslib_c) || defined(luaall_c) - -#if defined(LUA_USE_MKSTEMP) -#include -#define LUA_TMPNAMBUFSIZE 32 -#define lua_tmpnam(b,e) { \ - strcpy(b, "/tmp/lua_XXXXXX"); \ - e = mkstemp(b); \ - if (e != -1) close(e); \ - e = (e == -1); } - -#else -#define LUA_TMPNAMBUFSIZE L_tmpnam -#define lua_tmpnam(b,e) { e = (tmpnam(b) == NULL); } -#endif - -#endif - - -/* -@@ lua_popen spawns a new process connected to the current one through -@* the file streams. -** CHANGE it if you have a way to implement it in your system. -*/ -#if defined(LUA_USE_POPEN) - -#define lua_popen(L,c,m) ((void)L, fflush(NULL), popen(c,m)) -#define lua_pclose(L,file) ((void)L, (pclose(file) != -1)) - -#elif defined(LUA_WIN) - -#define lua_popen(L,c,m) ((void)L, _popen(c,m)) -#define lua_pclose(L,file) ((void)L, (_pclose(file) != -1)) - -#else - -#define lua_popen(L,c,m) ((void)((void)c, m), \ - luaL_error(L, LUA_QL("popen") " not supported"), (FILE*)0) -#define lua_pclose(L,file) ((void)((void)L, file), 0) - -#endif - -/* -@@ LUA_DL_* define which dynamic-library system Lua should use. -** CHANGE here if Lua has problems choosing the appropriate -** dynamic-library system for your platform (either Windows' DLL, Mac's -** dyld, or Unix's dlopen). If your system is some kind of Unix, there -** is a good chance that it has dlopen, so LUA_DL_DLOPEN will work for -** it. To use dlopen you also need to adapt the src/Makefile (probably -** adding -ldl to the linker options), so Lua does not select it -** automatically. (When you change the makefile to add -ldl, you must -** also add -DLUA_USE_DLOPEN.) -** If you do not want any kind of dynamic library, undefine all these -** options. -** By default, _WIN32 gets LUA_DL_DLL and MAC OS X gets LUA_DL_DYLD. -*/ -#if defined(LUA_USE_DLOPEN) -#define LUA_DL_DLOPEN -#endif - -#if defined(LUA_WIN) -#define LUA_DL_DLL -#endif - - -/* -@@ LUAI_EXTRASPACE allows you to add user-specific data in a lua_State -@* (the data goes just *before* the lua_State pointer). -** CHANGE (define) this if you really need that. This value must be -** a multiple of the maximum alignment required for your machine. -*/ -#define LUAI_EXTRASPACE 0 - - -/* -@@ luai_userstate* allow user-specific actions on threads. -** CHANGE them if you defined LUAI_EXTRASPACE and need to do something -** extra when a thread is created/deleted/resumed/yielded. -*/ -#define luai_userstateopen(L) ((void)L) -#define luai_userstateclose(L) ((void)L) -#define luai_userstatethread(L,L1) ((void)L) -#define luai_userstatefree(L) ((void)L) -#define luai_userstateresume(L,n) ((void)L) -#define luai_userstateyield(L,n) ((void)L) - - -/* -@@ LUA_INTFRMLEN is the length modifier for integer conversions -@* in 'string.format'. -@@ LUA_INTFRM_T is the integer type correspoding to the previous length -@* modifier. -** CHANGE them if your system supports long long or does not support long. -*/ - -#if defined(LUA_USELONGLONG) - -#define LUA_INTFRMLEN "ll" -#define LUA_INTFRM_T long long - -#else - -#define LUA_INTFRMLEN "l" -#define LUA_INTFRM_T long - -#endif - - - -/* =================================================================== */ - -/* -** Local configuration. You can use this space to add your redefinitions -** without modifying the main part of the file. -*/ - - - -#endif - diff --git a/lua/lua/lualib.h b/lua/lua/lualib.h deleted file mode 100644 index 469417f670..0000000000 --- a/lua/lua/lualib.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -** $Id: lualib.h,v 1.36.1.1 2007/12/27 13:02:25 roberto Exp $ -** Lua standard libraries -** See Copyright Notice in lua.h -*/ - - -#ifndef lualib_h -#define lualib_h - -#include "lua.h" - - -/* Key to file-handle type */ -#define LUA_FILEHANDLE "FILE*" - - -#define LUA_COLIBNAME "coroutine" -LUALIB_API int (luaopen_base) (lua_State *L); - -#define LUA_TABLIBNAME "table" -LUALIB_API int (luaopen_table) (lua_State *L); - -#define LUA_IOLIBNAME "io" -LUALIB_API int (luaopen_io) (lua_State *L); - -#define LUA_OSLIBNAME "os" -LUALIB_API int (luaopen_os) (lua_State *L); - -#define LUA_STRLIBNAME "string" -LUALIB_API int (luaopen_string) (lua_State *L); - -#define LUA_MATHLIBNAME "math" -LUALIB_API int (luaopen_math) (lua_State *L); - -#define LUA_DBLIBNAME "debug" -LUALIB_API int (luaopen_debug) (lua_State *L); - -#define LUA_LOADLIBNAME "package" -LUALIB_API int (luaopen_package) (lua_State *L); - - -/* open all previous libraries */ -LUALIB_API void (luaL_openlibs) (lua_State *L); - - - -#ifndef lua_assert -#define lua_assert(x) ((void)0) -#endif - - -#endif diff --git a/lua/lua/lundump.c b/lua/lua/lundump.c deleted file mode 100644 index 8010a45795..0000000000 --- a/lua/lua/lundump.c +++ /dev/null @@ -1,227 +0,0 @@ -/* -** $Id: lundump.c,v 2.7.1.4 2008/04/04 19:51:41 roberto Exp $ -** load precompiled Lua chunks -** See Copyright Notice in lua.h -*/ - -#include - -#define lundump_c -#define LUA_CORE - -#include "lua.h" - -#include "ldebug.h" -#include "ldo.h" -#include "lfunc.h" -#include "lmem.h" -#include "lobject.h" -#include "lstring.h" -#include "lundump.h" -#include "lzio.h" - -typedef struct { - lua_State* L; - ZIO* Z; - Mbuffer* b; - const char* name; -} LoadState; - -#ifdef LUAC_TRUST_BINARIES -#define IF(c,s) -#define error(S,s) -#else -#define IF(c,s) if (c) error(S,s) - -static void error(LoadState* S, const char* why) -{ - luaO_pushfstring(S->L,"%s: %s in precompiled chunk",S->name,why); - luaD_throw(S->L,LUA_ERRSYNTAX); -} -#endif - -#define LoadMem(S,b,n,size) LoadBlock(S,b,(n)*(size)) -#define LoadByte(S) (lu_byte)LoadChar(S) -#define LoadVar(S,x) LoadMem(S,&x,1,sizeof(x)) -#define LoadVector(S,b,n,size) LoadMem(S,b,n,size) - -static void LoadBlock(LoadState* S, void* b, size_t size) -{ - size_t r=luaZ_read(S->Z,b,size); - IF (r!=0, "unexpected end"); -} - -static int LoadChar(LoadState* S) -{ - char x; - LoadVar(S,x); - return x; -} - -static int LoadInt(LoadState* S) -{ - int x; - LoadVar(S,x); - IF (x<0, "bad integer"); - return x; -} - -static lua_Number LoadNumber(LoadState* S) -{ - lua_Number x; - LoadVar(S,x); - return x; -} - -static TString* LoadString(LoadState* S) -{ - size_t size; - LoadVar(S,size); - if (size==0) - return NULL; - else - { - char* s=luaZ_openspace(S->L,S->b,size); - LoadBlock(S,s,size); - return luaS_newlstr(S->L,s,size-1); /* remove trailing '\0' */ - } -} - -static void LoadCode(LoadState* S, Proto* f) -{ - int n=LoadInt(S); - f->code=luaM_newvector(S->L,n,Instruction); - f->sizecode=n; - LoadVector(S,f->code,n,sizeof(Instruction)); -} - -static Proto* LoadFunction(LoadState* S, TString* p); - -static void LoadConstants(LoadState* S, Proto* f) -{ - int i,n; - n=LoadInt(S); - f->k=luaM_newvector(S->L,n,TValue); - f->sizek=n; - for (i=0; ik[i]); - for (i=0; ik[i]; - int t=LoadChar(S); - switch (t) - { - case LUA_TNIL: - setnilvalue(o); - break; - case LUA_TBOOLEAN: - setbvalue(o,LoadChar(S)!=0); - break; - case LUA_TNUMBER: - setnvalue(o,LoadNumber(S)); - break; - case LUA_TSTRING: - setsvalue2n(S->L,o,LoadString(S)); - break; - default: - error(S,"bad constant"); - break; - } - } - n=LoadInt(S); - f->p=luaM_newvector(S->L,n,Proto*); - f->sizep=n; - for (i=0; ip[i]=NULL; - for (i=0; ip[i]=LoadFunction(S,f->source); -} - -static void LoadDebug(LoadState* S, Proto* f) -{ - int i,n; - n=LoadInt(S); - f->lineinfo=luaM_newvector(S->L,n,int); - f->sizelineinfo=n; - LoadVector(S,f->lineinfo,n,sizeof(int)); - n=LoadInt(S); - f->locvars=luaM_newvector(S->L,n,LocVar); - f->sizelocvars=n; - for (i=0; ilocvars[i].varname=NULL; - for (i=0; ilocvars[i].varname=LoadString(S); - f->locvars[i].startpc=LoadInt(S); - f->locvars[i].endpc=LoadInt(S); - } - n=LoadInt(S); - f->upvalues=luaM_newvector(S->L,n,TString*); - f->sizeupvalues=n; - for (i=0; iupvalues[i]=NULL; - for (i=0; iupvalues[i]=LoadString(S); -} - -static Proto* LoadFunction(LoadState* S, TString* p) -{ - Proto* f; - if (++S->L->nCcalls > LUAI_MAXCCALLS) error(S,"code too deep"); - f=luaF_newproto(S->L); - setptvalue2s(S->L,S->L->top,f); incr_top(S->L); - f->source=LoadString(S); if (f->source==NULL) f->source=p; - f->linedefined=LoadInt(S); - f->lastlinedefined=LoadInt(S); - f->nups=LoadByte(S); - f->numparams=LoadByte(S); - f->is_vararg=LoadByte(S); - f->maxstacksize=LoadByte(S); - LoadCode(S,f); - LoadConstants(S,f); - LoadDebug(S,f); - IF (!luaG_checkcode(f), "bad code"); - S->L->top--; - S->L->nCcalls--; - return f; -} - -static void LoadHeader(LoadState* S) -{ - char h[LUAC_HEADERSIZE]; - char s[LUAC_HEADERSIZE]; - luaU_header(h); - LoadBlock(S,s,LUAC_HEADERSIZE); - IF (memcmp(h,s,LUAC_HEADERSIZE)!=0, "bad header"); -} - -/* -** load precompiled chunk -*/ -Proto* luaU_undump (lua_State* L, ZIO* Z, Mbuffer* buff, const char* name) -{ - LoadState S; - if (*name=='@' || *name=='=') - S.name=name+1; - else if (*name==LUA_SIGNATURE[0]) - S.name="binary string"; - else - S.name=name; - S.L=L; - S.Z=Z; - S.b=buff; - LoadHeader(&S); - return LoadFunction(&S,luaS_newliteral(L,"=?")); -} - -/* -* make header -*/ -void luaU_header (char* h) -{ - int x=1; - memcpy(h,LUA_SIGNATURE,sizeof(LUA_SIGNATURE)-1); - h+=sizeof(LUA_SIGNATURE)-1; - *h++=(char)LUAC_VERSION; - *h++=(char)LUAC_FORMAT; - *h++=(char)*(char*)&x; /* endianness */ - *h++=(char)sizeof(int); - *h++=(char)sizeof(size_t); - *h++=(char)sizeof(Instruction); - *h++=(char)sizeof(lua_Number); - *h++=(char)(((lua_Number)0.5)==0); /* is lua_Number integral? */ -} diff --git a/lua/lua/lundump.h b/lua/lua/lundump.h deleted file mode 100644 index c80189dbff..0000000000 --- a/lua/lua/lundump.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -** $Id: lundump.h,v 1.37.1.1 2007/12/27 13:02:25 roberto Exp $ -** load precompiled Lua chunks -** See Copyright Notice in lua.h -*/ - -#ifndef lundump_h -#define lundump_h - -#include "lobject.h" -#include "lzio.h" - -/* load one chunk; from lundump.c */ -LUAI_FUNC Proto* luaU_undump (lua_State* L, ZIO* Z, Mbuffer* buff, const char* name); - -/* make header; from lundump.c */ -LUAI_FUNC void luaU_header (char* h); - -/* dump one chunk; from ldump.c */ -LUAI_FUNC int luaU_dump (lua_State* L, const Proto* f, lua_Writer w, void* data, int strip); - -#ifdef luac_c -/* print one chunk; from print.c */ -LUAI_FUNC void luaU_print (const Proto* f, int full); -#endif - -/* for header of binary files -- this is Lua 5.1 */ -#define LUAC_VERSION 0x51 - -/* for header of binary files -- this is the official format */ -#define LUAC_FORMAT 0 - -/* size of header of binary files */ -#define LUAC_HEADERSIZE 12 - -#endif diff --git a/lua/lua/lvm.c b/lua/lua/lvm.c deleted file mode 100644 index ee3256ab94..0000000000 --- a/lua/lua/lvm.c +++ /dev/null @@ -1,763 +0,0 @@ -/* -** $Id: lvm.c,v 2.63.1.3 2007/12/28 15:32:23 roberto Exp $ -** Lua virtual machine -** See Copyright Notice in lua.h -*/ - - -#include -#include -#include - -#define lvm_c -#define LUA_CORE - -#include "lua.h" - -#include "ldebug.h" -#include "ldo.h" -#include "lfunc.h" -#include "lgc.h" -#include "lobject.h" -#include "lopcodes.h" -#include "lstate.h" -#include "lstring.h" -#include "ltable.h" -#include "ltm.h" -#include "lvm.h" - - - -/* limit for table tag-method chains (to avoid loops) */ -#define MAXTAGLOOP 100 - - -const TValue *luaV_tonumber (const TValue *obj, TValue *n) { - lua_Number num; - if (ttisnumber(obj)) return obj; - if (ttisstring(obj) && luaO_str2d(svalue(obj), &num)) { - setnvalue(n, num); - return n; - } - else - return NULL; -} - - -int luaV_tostring (lua_State *L, StkId obj) { - if (!ttisnumber(obj)) - return 0; - else { - char s[LUAI_MAXNUMBER2STR]; - lua_Number n = nvalue(obj); - lua_number2str(s, n); - setsvalue2s(L, obj, luaS_new(L, s)); - return 1; - } -} - - -static void traceexec (lua_State *L, const Instruction *pc) { - lu_byte mask = L->hookmask; - const Instruction *oldpc = L->savedpc; - L->savedpc = pc; - if ((mask & LUA_MASKCOUNT) && L->hookcount == 0) { - resethookcount(L); - luaD_callhook(L, LUA_HOOKCOUNT, -1); - } - if (mask & LUA_MASKLINE) { - Proto *p = ci_func(L->ci)->l.p; - int npc = pcRel(pc, p); - int newline = getline(p, npc); - /* call linehook when enter a new function, when jump back (loop), - or when enter a new line */ - if (npc == 0 || pc <= oldpc || newline != getline(p, pcRel(oldpc, p))) - luaD_callhook(L, LUA_HOOKLINE, newline); - } -} - - -static void callTMres (lua_State *L, StkId res, const TValue *f, - const TValue *p1, const TValue *p2) { - ptrdiff_t result = savestack(L, res); - setobj2s(L, L->top, f); /* push function */ - setobj2s(L, L->top+1, p1); /* 1st argument */ - setobj2s(L, L->top+2, p2); /* 2nd argument */ - luaD_checkstack(L, 3); - L->top += 3; - luaD_call(L, L->top - 3, 1); - res = restorestack(L, result); - L->top--; - setobjs2s(L, res, L->top); -} - - - -static void callTM (lua_State *L, const TValue *f, const TValue *p1, - const TValue *p2, const TValue *p3) { - setobj2s(L, L->top, f); /* push function */ - setobj2s(L, L->top+1, p1); /* 1st argument */ - setobj2s(L, L->top+2, p2); /* 2nd argument */ - setobj2s(L, L->top+3, p3); /* 3th argument */ - luaD_checkstack(L, 4); - L->top += 4; - luaD_call(L, L->top - 4, 0); -} - - -void luaV_gettable (lua_State *L, const TValue *t, TValue *key, StkId val) { - int loop; - for (loop = 0; loop < MAXTAGLOOP; loop++) { - const TValue *tm; - if (ttistable(t)) { /* `t' is a table? */ - Table *h = hvalue(t); - const TValue *res = luaH_get(h, key); /* do a primitive get */ - if (!ttisnil(res) || /* result is no nil? */ - (tm = fasttm(L, h->metatable, TM_INDEX)) == NULL) { /* or no TM? */ - setobj2s(L, val, res); - return; - } - /* else will try the tag method */ - } - else if (ttisnil(tm = luaT_gettmbyobj(L, t, TM_INDEX))) - luaG_typeerror(L, t, "index"); - if (ttisfunction(tm)) { - callTMres(L, val, tm, t, key); - return; - } - t = tm; /* else repeat with `tm' */ - } - luaG_runerror(L, "loop in gettable"); -} - - -void luaV_settable (lua_State *L, const TValue *t, TValue *key, StkId val) { - int loop; - for (loop = 0; loop < MAXTAGLOOP; loop++) { - const TValue *tm; - if (ttistable(t)) { /* `t' is a table? */ - Table *h = hvalue(t); - TValue *oldval = luaH_set(L, h, key); /* do a primitive set */ - if (!ttisnil(oldval) || /* result is no nil? */ - (tm = fasttm(L, h->metatable, TM_NEWINDEX)) == NULL) { /* or no TM? */ - setobj2t(L, oldval, val); - luaC_barriert(L, h, val); - return; - } - /* else will try the tag method */ - } - else if (ttisnil(tm = luaT_gettmbyobj(L, t, TM_NEWINDEX))) - luaG_typeerror(L, t, "index"); - if (ttisfunction(tm)) { - callTM(L, tm, t, key, val); - return; - } - t = tm; /* else repeat with `tm' */ - } - luaG_runerror(L, "loop in settable"); -} - - -static int call_binTM (lua_State *L, const TValue *p1, const TValue *p2, - StkId res, TMS event) { - const TValue *tm = luaT_gettmbyobj(L, p1, event); /* try first operand */ - if (ttisnil(tm)) - tm = luaT_gettmbyobj(L, p2, event); /* try second operand */ - if (ttisnil(tm)) return 0; - callTMres(L, res, tm, p1, p2); - return 1; -} - - -static const TValue *get_compTM (lua_State *L, Table *mt1, Table *mt2, - TMS event) { - const TValue *tm1 = fasttm(L, mt1, event); - const TValue *tm2; - if (tm1 == NULL) return NULL; /* no metamethod */ - if (mt1 == mt2) return tm1; /* same metatables => same metamethods */ - tm2 = fasttm(L, mt2, event); - if (tm2 == NULL) return NULL; /* no metamethod */ - if (luaO_rawequalObj(tm1, tm2)) /* same metamethods? */ - return tm1; - return NULL; -} - - -static int call_orderTM (lua_State *L, const TValue *p1, const TValue *p2, - TMS event) { - const TValue *tm1 = luaT_gettmbyobj(L, p1, event); - const TValue *tm2; - if (ttisnil(tm1)) return -1; /* no metamethod? */ - tm2 = luaT_gettmbyobj(L, p2, event); - if (!luaO_rawequalObj(tm1, tm2)) /* different metamethods? */ - return -1; - callTMres(L, L->top, tm1, p1, p2); - return !l_isfalse(L->top); -} - - -static int l_strcmp (const TString *ls, const TString *rs) { - const char *l = getstr(ls); - size_t ll = ls->tsv.len; - const char *r = getstr(rs); - size_t lr = rs->tsv.len; - for (;;) { - int temp = strcoll(l, r); - if (temp != 0) return temp; - else { /* strings are equal up to a `\0' */ - size_t len = strlen(l); /* index of first `\0' in both strings */ - if (len == lr) /* r is finished? */ - return (len == ll) ? 0 : 1; - else if (len == ll) /* l is finished? */ - return -1; /* l is smaller than r (because r is not finished) */ - /* both strings longer than `len'; go on comparing (after the `\0') */ - len++; - l += len; ll -= len; r += len; lr -= len; - } - } -} - - -int luaV_lessthan (lua_State *L, const TValue *l, const TValue *r) { - int res; - if (ttype(l) != ttype(r)) - return luaG_ordererror(L, l, r); - else if (ttisnumber(l)) - return luai_numlt(nvalue(l), nvalue(r)); - else if (ttisstring(l)) - return l_strcmp(rawtsvalue(l), rawtsvalue(r)) < 0; - else if ((res = call_orderTM(L, l, r, TM_LT)) != -1) - return res; - return luaG_ordererror(L, l, r); -} - - -static int lessequal (lua_State *L, const TValue *l, const TValue *r) { - int res; - if (ttype(l) != ttype(r)) - return luaG_ordererror(L, l, r); - else if (ttisnumber(l)) - return luai_numle(nvalue(l), nvalue(r)); - else if (ttisstring(l)) - return l_strcmp(rawtsvalue(l), rawtsvalue(r)) <= 0; - else if ((res = call_orderTM(L, l, r, TM_LE)) != -1) /* first try `le' */ - return res; - else if ((res = call_orderTM(L, r, l, TM_LT)) != -1) /* else try `lt' */ - return !res; - return luaG_ordererror(L, l, r); -} - - -int luaV_equalval (lua_State *L, const TValue *t1, const TValue *t2) { - const TValue *tm; - lua_assert(ttype(t1) == ttype(t2)); - switch (ttype(t1)) { - case LUA_TNIL: return 1; - case LUA_TNUMBER: return luai_numeq(nvalue(t1), nvalue(t2)); - case LUA_TBOOLEAN: return bvalue(t1) == bvalue(t2); /* true must be 1 !! */ - case LUA_TLIGHTUSERDATA: return pvalue(t1) == pvalue(t2); - case LUA_TUSERDATA: { - if (uvalue(t1) == uvalue(t2)) return 1; - tm = get_compTM(L, uvalue(t1)->metatable, uvalue(t2)->metatable, - TM_EQ); - break; /* will try TM */ - } - case LUA_TTABLE: { - if (hvalue(t1) == hvalue(t2)) return 1; - tm = get_compTM(L, hvalue(t1)->metatable, hvalue(t2)->metatable, TM_EQ); - break; /* will try TM */ - } - default: return gcvalue(t1) == gcvalue(t2); - } - if (tm == NULL) return 0; /* no TM? */ - callTMres(L, L->top, tm, t1, t2); /* call TM */ - return !l_isfalse(L->top); -} - - -void luaV_concat (lua_State *L, int total, int last) { - do { - StkId top = L->base + last + 1; - int n = 2; /* number of elements handled in this pass (at least 2) */ - if (!(ttisstring(top-2) || ttisnumber(top-2)) || !tostring(L, top-1)) { - if (!call_binTM(L, top-2, top-1, top-2, TM_CONCAT)) - luaG_concaterror(L, top-2, top-1); - } else if (tsvalue(top-1)->len == 0) /* second op is empty? */ - (void)tostring(L, top - 2); /* result is first op (as string) */ - else { - /* at least two string values; get as many as possible */ - size_t tl = tsvalue(top-1)->len; - char *buffer; - int i; - /* collect total length */ - for (n = 1; n < total && tostring(L, top-n-1); n++) { - size_t l = tsvalue(top-n-1)->len; - if (l >= MAX_SIZET - tl) luaG_runerror(L, "string length overflow"); - tl += l; - } - buffer = luaZ_openspace(L, &G(L)->buff, tl); - tl = 0; - for (i=n; i>0; i--) { /* concat all strings */ - size_t l = tsvalue(top-i)->len; - memcpy(buffer+tl, svalue(top-i), l); - tl += l; - } - setsvalue2s(L, top-n, luaS_newlstr(L, buffer, tl)); - } - total -= n-1; /* got `n' strings to create 1 new */ - last -= n-1; - } while (total > 1); /* repeat until only 1 result left */ -} - - -static void Arith (lua_State *L, StkId ra, const TValue *rb, - const TValue *rc, TMS op) { - TValue tempb, tempc; - const TValue *b, *c; - if ((b = luaV_tonumber(rb, &tempb)) != NULL && - (c = luaV_tonumber(rc, &tempc)) != NULL) { - lua_Number nb = nvalue(b), nc = nvalue(c); - switch (op) { - case TM_ADD: setnvalue(ra, luai_numadd(nb, nc)); break; - case TM_SUB: setnvalue(ra, luai_numsub(nb, nc)); break; - case TM_MUL: setnvalue(ra, luai_nummul(nb, nc)); break; - case TM_DIV: setnvalue(ra, luai_numdiv(nb, nc)); break; - case TM_MOD: setnvalue(ra, luai_nummod(nb, nc)); break; - case TM_POW: setnvalue(ra, luai_numpow(nb, nc)); break; - case TM_UNM: setnvalue(ra, luai_numunm(nb)); break; - default: lua_assert(0); break; - } - } - else if (!call_binTM(L, rb, rc, ra, op)) - luaG_aritherror(L, rb, rc); -} - - - -/* -** some macros for common tasks in `luaV_execute' -*/ - -#define runtime_check(L, c) { if (!(c)) break; } - -#define RA(i) (base+GETARG_A(i)) -/* to be used after possible stack reallocation */ -#define RB(i) check_exp(getBMode(GET_OPCODE(i)) == OpArgR, base+GETARG_B(i)) -#define RC(i) check_exp(getCMode(GET_OPCODE(i)) == OpArgR, base+GETARG_C(i)) -#define RKB(i) check_exp(getBMode(GET_OPCODE(i)) == OpArgK, \ - ISK(GETARG_B(i)) ? k+INDEXK(GETARG_B(i)) : base+GETARG_B(i)) -#define RKC(i) check_exp(getCMode(GET_OPCODE(i)) == OpArgK, \ - ISK(GETARG_C(i)) ? k+INDEXK(GETARG_C(i)) : base+GETARG_C(i)) -#define KBx(i) check_exp(getBMode(GET_OPCODE(i)) == OpArgK, k+GETARG_Bx(i)) - - -#define dojump(L,pc,i) {(pc) += (i); luai_threadyield(L);} - - -#define Protect(x) { L->savedpc = pc; {x;}; base = L->base; } - - -#define arith_op(op,tm) { \ - TValue *rb = RKB(i); \ - TValue *rc = RKC(i); \ - if (ttisnumber(rb) && ttisnumber(rc)) { \ - lua_Number nb = nvalue(rb), nc = nvalue(rc); \ - setnvalue(ra, op(nb, nc)); \ - } \ - else \ - Protect(Arith(L, ra, rb, rc, tm)); \ - } - - - -void luaV_execute (lua_State *L, int nexeccalls) { - LClosure *cl; - StkId base; - TValue *k; - const Instruction *pc; - reentry: /* entry point */ - lua_assert(isLua(L->ci)); - pc = L->savedpc; - cl = &clvalue(L->ci->func)->l; - base = L->base; - k = cl->p->k; - /* main loop of interpreter */ - for (;;) { - const Instruction i = *pc++; - StkId ra; - if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) && - (--L->hookcount == 0 || L->hookmask & LUA_MASKLINE)) { - traceexec(L, pc); - if (L->status == LUA_YIELD) { /* did hook yield? */ - L->savedpc = pc - 1; - return; - } - base = L->base; - } - /* warning!! several calls may realloc the stack and invalidate `ra' */ - ra = RA(i); - lua_assert(base == L->base && L->base == L->ci->base); - lua_assert(base <= L->top && L->top <= L->stack + L->stacksize); - lua_assert(L->top == L->ci->top || luaG_checkopenop(i)); - switch (GET_OPCODE(i)) { - case OP_MOVE: { - setobjs2s(L, ra, RB(i)); - continue; - } - case OP_LOADK: { - setobj2s(L, ra, KBx(i)); - continue; - } - case OP_LOADBOOL: { - setbvalue(ra, GETARG_B(i)); - if (GETARG_C(i)) pc++; /* skip next instruction (if C) */ - continue; - } - case OP_LOADNIL: { - TValue *rb = RB(i); - do { - setnilvalue(rb--); - } while (rb >= ra); - continue; - } - case OP_GETUPVAL: { - int b = GETARG_B(i); - setobj2s(L, ra, cl->upvals[b]->v); - continue; - } - case OP_GETGLOBAL: { - TValue g; - TValue *rb = KBx(i); - sethvalue(L, &g, cl->env); - lua_assert(ttisstring(rb)); - Protect(luaV_gettable(L, &g, rb, ra)); - continue; - } - case OP_GETTABLE: { - Protect(luaV_gettable(L, RB(i), RKC(i), ra)); - continue; - } - case OP_SETGLOBAL: { - TValue g; - sethvalue(L, &g, cl->env); - lua_assert(ttisstring(KBx(i))); - Protect(luaV_settable(L, &g, KBx(i), ra)); - continue; - } - case OP_SETUPVAL: { - UpVal *uv = cl->upvals[GETARG_B(i)]; - setobj(L, uv->v, ra); - luaC_barrier(L, uv, ra); - continue; - } - case OP_SETTABLE: { - Protect(luaV_settable(L, ra, RKB(i), RKC(i))); - continue; - } - case OP_NEWTABLE: { - int b = GETARG_B(i); - int c = GETARG_C(i); - sethvalue(L, ra, luaH_new(L, luaO_fb2int(b), luaO_fb2int(c))); - Protect(luaC_checkGC(L)); - continue; - } - case OP_SELF: { - StkId rb = RB(i); - setobjs2s(L, ra+1, rb); - Protect(luaV_gettable(L, rb, RKC(i), ra)); - continue; - } - case OP_ADD: { - arith_op(luai_numadd, TM_ADD); - continue; - } - case OP_SUB: { - arith_op(luai_numsub, TM_SUB); - continue; - } - case OP_MUL: { - arith_op(luai_nummul, TM_MUL); - continue; - } - case OP_DIV: { - arith_op(luai_numdiv, TM_DIV); - continue; - } - case OP_MOD: { - arith_op(luai_nummod, TM_MOD); - continue; - } - case OP_POW: { - arith_op(luai_numpow, TM_POW); - continue; - } - case OP_UNM: { - TValue *rb = RB(i); - if (ttisnumber(rb)) { - lua_Number nb = nvalue(rb); - setnvalue(ra, luai_numunm(nb)); - } - else { - Protect(Arith(L, ra, rb, rb, TM_UNM)); - } - continue; - } - case OP_NOT: { - int res = l_isfalse(RB(i)); /* next assignment may change this value */ - setbvalue(ra, res); - continue; - } - case OP_LEN: { - const TValue *rb = RB(i); - switch (ttype(rb)) { - case LUA_TTABLE: { - setnvalue(ra, cast_num(luaH_getn(hvalue(rb)))); - break; - } - case LUA_TSTRING: { - setnvalue(ra, cast_num(tsvalue(rb)->len)); - break; - } - default: { /* try metamethod */ - Protect( - if (!call_binTM(L, rb, luaO_nilobject, ra, TM_LEN)) - luaG_typeerror(L, rb, "get length of"); - ) - } - } - continue; - } - case OP_CONCAT: { - int b = GETARG_B(i); - int c = GETARG_C(i); - Protect(luaV_concat(L, c-b+1, c); luaC_checkGC(L)); - setobjs2s(L, RA(i), base+b); - continue; - } - case OP_JMP: { - dojump(L, pc, GETARG_sBx(i)); - continue; - } - case OP_EQ: { - TValue *rb = RKB(i); - TValue *rc = RKC(i); - Protect( - if (equalobj(L, rb, rc) == GETARG_A(i)) - dojump(L, pc, GETARG_sBx(*pc)); - ) - pc++; - continue; - } - case OP_LT: { - Protect( - if (luaV_lessthan(L, RKB(i), RKC(i)) == GETARG_A(i)) - dojump(L, pc, GETARG_sBx(*pc)); - ) - pc++; - continue; - } - case OP_LE: { - Protect( - if (lessequal(L, RKB(i), RKC(i)) == GETARG_A(i)) - dojump(L, pc, GETARG_sBx(*pc)); - ) - pc++; - continue; - } - case OP_TEST: { - if (l_isfalse(ra) != GETARG_C(i)) - dojump(L, pc, GETARG_sBx(*pc)); - pc++; - continue; - } - case OP_TESTSET: { - TValue *rb = RB(i); - if (l_isfalse(rb) != GETARG_C(i)) { - setobjs2s(L, ra, rb); - dojump(L, pc, GETARG_sBx(*pc)); - } - pc++; - continue; - } - case OP_CALL: { - int b = GETARG_B(i); - int nresults = GETARG_C(i) - 1; - if (b != 0) L->top = ra+b; /* else previous instruction set top */ - L->savedpc = pc; - switch (luaD_precall(L, ra, nresults)) { - case PCRLUA: { - nexeccalls++; - goto reentry; /* restart luaV_execute over new Lua function */ - } - case PCRC: { - /* it was a C function (`precall' called it); adjust results */ - if (nresults >= 0) L->top = L->ci->top; - base = L->base; - continue; - } - default: { - return; /* yield */ - } - } - } - case OP_TAILCALL: { - int b = GETARG_B(i); - if (b != 0) L->top = ra+b; /* else previous instruction set top */ - L->savedpc = pc; - lua_assert(GETARG_C(i) - 1 == LUA_MULTRET); - switch (luaD_precall(L, ra, LUA_MULTRET)) { - case PCRLUA: { - /* tail call: put new frame in place of previous one */ - CallInfo *ci = L->ci - 1; /* previous frame */ - int aux; - StkId func = ci->func; - StkId pfunc = (ci+1)->func; /* previous function index */ - if (L->openupval) luaF_close(L, ci->base); - L->base = ci->base = ci->func + ((ci+1)->base - pfunc); - for (aux = 0; pfunc+aux < L->top; aux++) /* move frame down */ - setobjs2s(L, func+aux, pfunc+aux); - ci->top = L->top = func+aux; /* correct top */ - lua_assert(L->top == L->base + clvalue(func)->l.p->maxstacksize); - ci->savedpc = L->savedpc; - ci->tailcalls++; /* one more call lost */ - L->ci--; /* remove new frame */ - goto reentry; - } - case PCRC: { /* it was a C function (`precall' called it) */ - base = L->base; - continue; - } - default: { - return; /* yield */ - } - } - } - case OP_RETURN: { - int b = GETARG_B(i); - if (b != 0) L->top = ra+b-1; - if (L->openupval) luaF_close(L, base); - L->savedpc = pc; - b = luaD_poscall(L, ra); - if (--nexeccalls == 0) /* was previous function running `here'? */ - return; /* no: return */ - else { /* yes: continue its execution */ - if (b) L->top = L->ci->top; - lua_assert(isLua(L->ci)); - lua_assert(GET_OPCODE(*((L->ci)->savedpc - 1)) == OP_CALL); - goto reentry; - } - } - case OP_FORLOOP: { - lua_Number step = nvalue(ra+2); - lua_Number idx = luai_numadd(nvalue(ra), step); /* increment index */ - lua_Number limit = nvalue(ra+1); - if (luai_numlt(0, step) ? luai_numle(idx, limit) - : luai_numle(limit, idx)) { - dojump(L, pc, GETARG_sBx(i)); /* jump back */ - setnvalue(ra, idx); /* update internal index... */ - setnvalue(ra+3, idx); /* ...and external index */ - } - continue; - } - case OP_FORPREP: { - const TValue *init = ra; - const TValue *plimit = ra+1; - const TValue *pstep = ra+2; - L->savedpc = pc; /* next steps may throw errors */ - if (!tonumber(init, ra)) - luaG_runerror(L, LUA_QL("for") " initial value must be a number"); - else if (!tonumber(plimit, ra+1)) - luaG_runerror(L, LUA_QL("for") " limit must be a number"); - else if (!tonumber(pstep, ra+2)) - luaG_runerror(L, LUA_QL("for") " step must be a number"); - setnvalue(ra, luai_numsub(nvalue(ra), nvalue(pstep))); - dojump(L, pc, GETARG_sBx(i)); - continue; - } - case OP_TFORLOOP: { - StkId cb = ra + 3; /* call base */ - setobjs2s(L, cb+2, ra+2); - setobjs2s(L, cb+1, ra+1); - setobjs2s(L, cb, ra); - L->top = cb+3; /* func. + 2 args (state and index) */ - Protect(luaD_call(L, cb, GETARG_C(i))); - L->top = L->ci->top; - cb = RA(i) + 3; /* previous call may change the stack */ - if (!ttisnil(cb)) { /* continue loop? */ - setobjs2s(L, cb-1, cb); /* save control variable */ - dojump(L, pc, GETARG_sBx(*pc)); /* jump back */ - } - pc++; - continue; - } - case OP_SETLIST: { - int n = GETARG_B(i); - int c = GETARG_C(i); - int last; - Table *h; - if (n == 0) { - n = cast_int(L->top - ra) - 1; - L->top = L->ci->top; - } - if (c == 0) c = cast_int(*pc++); - runtime_check(L, ttistable(ra)); - h = hvalue(ra); - last = ((c-1)*LFIELDS_PER_FLUSH) + n; - if (last > h->sizearray) /* needs more space? */ - luaH_resizearray(L, h, last); /* pre-alloc it at once */ - for (; n > 0; n--) { - TValue *val = ra+n; - setobj2t(L, luaH_setnum(L, h, last--), val); - luaC_barriert(L, h, val); - } - continue; - } - case OP_CLOSE: { - luaF_close(L, ra); - continue; - } - case OP_CLOSURE: { - Proto *p; - Closure *ncl; - int nup, j; - p = cl->p->p[GETARG_Bx(i)]; - nup = p->nups; - ncl = luaF_newLclosure(L, nup, cl->env); - ncl->l.p = p; - for (j=0; jl.upvals[j] = cl->upvals[GETARG_B(*pc)]; - else { - lua_assert(GET_OPCODE(*pc) == OP_MOVE); - ncl->l.upvals[j] = luaF_findupval(L, base + GETARG_B(*pc)); - } - } - setclvalue(L, ra, ncl); - Protect(luaC_checkGC(L)); - continue; - } - case OP_VARARG: { - int b = GETARG_B(i) - 1; - int j; - CallInfo *ci = L->ci; - int n = cast_int(ci->base - ci->func) - cl->p->numparams - 1; - if (b == LUA_MULTRET) { - Protect(luaD_checkstack(L, n)); - ra = RA(i); /* previous call may change the stack */ - b = n; - L->top = ra + n; - } - for (j = 0; j < b; j++) { - if (j < n) { - setobjs2s(L, ra + j, ci->base - n + j); - } - else { - setnilvalue(ra + j); - } - } - continue; - } - } - } -} - diff --git a/lua/lua/lvm.h b/lua/lua/lvm.h deleted file mode 100644 index bfe4f5678d..0000000000 --- a/lua/lua/lvm.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -** $Id: lvm.h,v 2.5.1.1 2007/12/27 13:02:25 roberto Exp $ -** Lua virtual machine -** See Copyright Notice in lua.h -*/ - -#ifndef lvm_h -#define lvm_h - - -#include "ldo.h" -#include "lobject.h" -#include "ltm.h" - - -#define tostring(L,o) ((ttype(o) == LUA_TSTRING) || (luaV_tostring(L, o))) - -#define tonumber(o,n) (ttype(o) == LUA_TNUMBER || \ - (((o) = luaV_tonumber(o,n)) != NULL)) - -#define equalobj(L,o1,o2) \ - (ttype(o1) == ttype(o2) && luaV_equalval(L, o1, o2)) - - -LUAI_FUNC int luaV_lessthan (lua_State *L, const TValue *l, const TValue *r); -LUAI_FUNC int luaV_equalval (lua_State *L, const TValue *t1, const TValue *t2); -LUAI_FUNC const TValue *luaV_tonumber (const TValue *obj, TValue *n); -LUAI_FUNC int luaV_tostring (lua_State *L, StkId obj); -LUAI_FUNC void luaV_gettable (lua_State *L, const TValue *t, TValue *key, - StkId val); -LUAI_FUNC void luaV_settable (lua_State *L, const TValue *t, TValue *key, - StkId val); -LUAI_FUNC void luaV_execute (lua_State *L, int nexeccalls); -LUAI_FUNC void luaV_concat (lua_State *L, int total, int last); - -#endif diff --git a/lua/lua/lzio.c b/lua/lua/lzio.c deleted file mode 100644 index 293edd59b0..0000000000 --- a/lua/lua/lzio.c +++ /dev/null @@ -1,82 +0,0 @@ -/* -** $Id: lzio.c,v 1.31.1.1 2007/12/27 13:02:25 roberto Exp $ -** a generic input stream interface -** See Copyright Notice in lua.h -*/ - - -#include - -#define lzio_c -#define LUA_CORE - -#include "lua.h" - -#include "llimits.h" -#include "lmem.h" -#include "lstate.h" -#include "lzio.h" - - -int luaZ_fill (ZIO *z) { - size_t size; - lua_State *L = z->L; - const char *buff; - lua_unlock(L); - buff = z->reader(L, z->data, &size); - lua_lock(L); - if (buff == NULL || size == 0) return EOZ; - z->n = size - 1; - z->p = buff; - return char2int(*(z->p++)); -} - - -int luaZ_lookahead (ZIO *z) { - if (z->n == 0) { - if (luaZ_fill(z) == EOZ) - return EOZ; - else { - z->n++; /* luaZ_fill removed first byte; put back it */ - z->p--; - } - } - return char2int(*z->p); -} - - -void luaZ_init (lua_State *L, ZIO *z, lua_Reader reader, void *data) { - z->L = L; - z->reader = reader; - z->data = data; - z->n = 0; - z->p = NULL; -} - - -/* --------------------------------------------------------------- read --- */ -size_t luaZ_read (ZIO *z, void *b, size_t n) { - while (n) { - size_t m; - if (luaZ_lookahead(z) == EOZ) - return n; /* return number of missing bytes */ - m = (n <= z->n) ? n : z->n; /* min. between n and z->n */ - memcpy(b, z->p, m); - z->n -= m; - z->p += m; - b = (char *)b + m; - n -= m; - } - return 0; -} - -/* ------------------------------------------------------------------------ */ -char *luaZ_openspace (lua_State *L, Mbuffer *buff, size_t n) { - if (n > buff->buffsize) { - if (n < LUA_MINBUFFER) n = LUA_MINBUFFER; - luaZ_resizebuffer(L, buff, n); - } - return buff->buffer; -} - - diff --git a/lua/lua/lzio.h b/lua/lua/lzio.h deleted file mode 100644 index 51d695d8c1..0000000000 --- a/lua/lua/lzio.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -** $Id: lzio.h,v 1.21.1.1 2007/12/27 13:02:25 roberto Exp $ -** Buffered streams -** See Copyright Notice in lua.h -*/ - - -#ifndef lzio_h -#define lzio_h - -#include "lua.h" - -#include "lmem.h" - - -#define EOZ (-1) /* end of stream */ - -typedef struct Zio ZIO; - -#define char2int(c) cast(int, cast(unsigned char, (c))) - -#define zgetc(z) (((z)->n--)>0 ? char2int(*(z)->p++) : luaZ_fill(z)) - -typedef struct Mbuffer { - char *buffer; - size_t n; - size_t buffsize; -} Mbuffer; - -#define luaZ_initbuffer(L, buff) ((buff)->buffer = NULL, (buff)->buffsize = 0) - -#define luaZ_buffer(buff) ((buff)->buffer) -#define luaZ_sizebuffer(buff) ((buff)->buffsize) -#define luaZ_bufflen(buff) ((buff)->n) - -#define luaZ_resetbuffer(buff) ((buff)->n = 0) - - -#define luaZ_resizebuffer(L, buff, size) \ - (luaM_reallocvector(L, (buff)->buffer, (buff)->buffsize, size, char), \ - (buff)->buffsize = size) - -#define luaZ_freebuffer(L, buff) luaZ_resizebuffer(L, buff, 0) - - -LUAI_FUNC char *luaZ_openspace (lua_State *L, Mbuffer *buff, size_t n); -LUAI_FUNC void luaZ_init (lua_State *L, ZIO *z, lua_Reader reader, - void *data); -LUAI_FUNC size_t luaZ_read (ZIO* z, void* b, size_t n); /* read next n bytes */ -LUAI_FUNC int luaZ_lookahead (ZIO *z); - - - -/* --------- Private Part ------------------ */ - -struct Zio { - size_t n; /* bytes still unread */ - const char *p; /* current position in buffer */ - lua_Reader reader; - void* data; /* additional data */ - lua_State *L; /* Lua state (for reader) */ -}; - - -LUAI_FUNC int luaZ_fill (ZIO *z); - -#endif diff --git a/lua/lua/prebuilt/ios/liblua.a b/lua/lua/prebuilt/ios/liblua.a deleted file mode 100755 index a064ce4dee79c042cebd3ab706673cd2a7bc4a4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 668352 zcmeEvdwg9*wf`=(P|D*3M6Hj=;Zd3bDQS5X3VKR==s^-19xdgWq{(R;NRyZc4M-)S z3FI^cs!~KjZ&c61l_~IeKnU+`Hx+bKhBkbBco)$l6$=T;77cq-5=8kLNBT!(P;}o2^n{%q-S&HR~wThotyjJmM#XA-6p6WP> zzfW?0toVfDvx+Y(jw!yUc;H@=?g+(`6iXD#6wgQPOuuNdbE#rC;^XsobH1whJ;k3W zKBf4a;_HeI^kupO6c1Ls4|Otj|0L(9ioaESRq<`bsnDBzA5$z){5kaM-7(o2QhZtQ zuZsUr+;d;y+h6gMinA5xDJB&s?cq3`GbT9)D8?0ME6!J3qIi+w8pW#>yA^L$yi@T( z#eT(KE54vOqWE8md!Qbu&veBZigOhgDW0i#zTzsywThjJUr~G>qhZTcj`LT=e=6=X zS>ivTc!c7KiYdhl6>Ak+6~CnTZN+;PA6Fby99Dcw@jb=Z6v_WnibpG+s(6;-{pd%n zUAsAD8m?DtQ~aXhw-oPHd_?hS#pe`XRjk+>1GRW}r(W@D#jgWb-?+PTm*N)1pDGS2 zzNGk;;vVRSOgCNeFydXiJ98Dk4D76*?0i$PSFr;9vEYO$&KkupC}tF|!T2gY0^ixj~(<#n(G<+{`2$j>P_>AHo6?ZDWqc{!e$^S9MLDcWa3%fbbDZZxo55;LH zAL$=fJWTO;#nTjvQJ&@KYz2^8|L_#&7{yO3o~d|=;{IwUKc!fpcqQb}9?jG6BE?e0 z3dPG5FIQ|+%qZTXc!%OVwI@l%^AuMrHY?t%{OdLRQw{%G@kPZq6#t>P2PPld{f{bQ zD4XyxiVGFbQtZ%jUZ~+q6+dt3ieFT`P4WARk17r-zN9#=xYury|3?%LS3F+vG{vQg zs}!3R+Z1n5{F>r-74KEN4E>YyQ=f*PQG8zUi&~GbY4{r&9@p?R*dx~4bj8CIk5x=4 zE>SF3tW*4g;`NHRDt=G#LB+=uf2p`u^?nQXAg|wX?tr~qy>^oGIQsqAmv(c`LBAgV z)b36K?UcHIcjtP9htA&Jc?98GK0nzx8{=vGz$s1(`g2)LbH#$P`sT*fbt^7SS2mf5 zvWlkqirVT*2~<|p)ab9(>B`F*n<^?V({NpFWrZfGtoQLXq$`@zO%*F@(!yBPyry1$ zr9anPq0-U~4Rs9?yGpZKg+w(qb(JeMI^DD~U3<9~s7}{ZxuG>+_T_=Jp-`RX2}*PQ zmKWu5C;=*x!wnE1PR8o2u(-C6DUH+U7MY(yC*1V`Ec8b?qukYevc{ zC?MgQG{~zfG-XX)h3Z+GUfZ-9)!_w$>1xw0nmy{jCavjxb;+h#QCC-!wz3&fSy@xp z*xaDyVa!Uua*U|1ZA!1Qx-+7tde!QtVCE(|oUpc9+lN$t1uz_D_Lq%xUoD$pK&^&~ zwZ7&@2n{2(C%>!RK%$)ub;^YY7nw zbt1(0IuS#*6XAED6JZ#jHbvv6xc+~|>@$~FG{|r`qb%K0 zKlki2l$!zc5NPR(pxFz?pbIK}WpztUb*k}zqpUGqBW=TL#daN9tl}L$;eqtzjlp6NVTwU;ERT-)kDJ%({jusOOW}&y!Eh@vDgwoeHC{44(RL%v;!qbCc zf40!q)Db3hWr7K>TWfw}ur@YZD}9AKFD)%|S4gLoac-A3Jgtm|%uG8bHNp+)w14iG z7%C~XDq(*LTg~p|a2jpZ!k`eu6lcZwrGmi|x)7G5p`kk6u)@~08zcRGp=qSW3(qYv zYA-Zuquy+&xu!-}d<)Ak)TMXGPk%0rX*39Is%PaFmch`;s?N2sGIq@HsFq4t4nv?5 z*7C9%*ax==Gx1u#l|fu zTe)H`<`N@k3Ch_tccsiSOHi~`b2T0oPnPqN!xFQ=_piky=JH^aU7sz{j=Kc4-7r@& zF2$U+2DU|t#}GS|udsFU`+QhYcMv5_!}}I6N!GV7?Ca~&5_SeXhe1w}ra&g-^@4La zimI=a`Y{zIhSKn+OrH7^o!|Q;@SG5_^LgcK^EQnCSiMxyKhBbG%_KpH@>*Up>2y zQXJ=*fBf}5-2P6&t+9jc1G9mi!2P)s#~-eb;ctk99M_hl5XzYbmkmRv*^tLAwzvKuwCd(PdQFIqb5781bdaS0kQJ1S6E(L<#a1U>s*m% z`NIf#+EPLZ%lp2{J5&?ydrVM*7T=AeerwQ%P3U!NF$tBG6>~ewy#`fY0(%j>iXe|| zFt6BgK5Jr}fXK44^lFSu-l3Q)tY6+q62BRH6};+C7I_kK97M0Szljt+9eA2NY`mo8JRHvzAxmZ+WPa5Zz}VJyo(=OX|CC^gG{e*jQsUGA#2@urg>L? za*Um|ZQZWKK`6kDM=)Ji5@Hg0sjd>>>C;oQ22$I`C#Nb)cBLi_q)suMH(+naL2CT( zjD8jWK?HxtZnzHrtB83jA`c?EmhRg2GK4&tI&mO&BeyhBjPb7KT_a33%6>n}Uz)VQ zr$Jt-a_O!VQ&0LOQ?G}rmJc+jwe2O)1~j*VRAxb*k!AktN{*%0KaQG+9fTg`uiwnl zou+E%H;=_Si~=`P@D{4UtE&X`rKp1jJ8+gJ+|^e5P<+m&a3G4{(cDyAqT^_v*Sjp33~# zL?bI!PN08)NG4_My1E5wA)JV(=C{Q`#tg@nfF;k~c}r7oD&_we9`MnYS|o?9;*iEPdJb!0T7Kx%fJ9s0$t9 z@`PKae*v|0Mjt}0ySaxt89NwvzHO8pFID+V8FGWF!!X9eSZe;Md9iDZ zzFizK=v2w^(KHf3z_1A{M*yP7hTeZacEcw<(HyBey>T%{&M~M1_wm9v4B_EeJEkKqma;R+EwPSuHdfV-r>68E%IGo3A5y9Ulniymc-G%o zYD%YY4I+dXbg!-wlyee-gXpF#S%7bR^cpv+MUsw>az(I(njRenk=V6KX36&Q_bRp?>jQr@O=^;cx=imH%oy-e4Ey?; z5s%`a180(bK>U>;tRe@SXf062sG0Y~9b(mU_v0ngb92TXqjsvK8_i^|i z`mY=Bbw=z@|DbY(a9)BstN{qIU0_(F@(_h~gZ<4cm~P|RTE-_MRqXoZURuK#dmyz} z+e=(>w7rf0oLKwu!Z9oqrm__2^)#Lwy=E4LjI+j4nJ0|GquMvASYDtJSc8K|hQH`W zK-t*kV%?pRyAk0kUF(Zv>9Uo^aw%LT+4|2kOh$jock3>yC}8zZ+!1z%3y`3_UcWQ` zul85F)R~7$8IkF67}KLPS8x(p|2QTPUEf5??>dFbqJ~FOC$1Zbb>Oj-vjr9twq(aB zo@KFOM!Hf{GbKB^k~`2>tvq*rA#<$5jL>dt{zgVWWRgml6GhkL0h0-&na=(%mj516 z4XN5%rs7oxr?ceMSjR_IFPJYh)HLm4o3?i@eRV_f)x##m9_SNIed~kh`R1NU&}s-} z9D;myAbdNdC^|f=Oh8`n_io=Kr>JV;l*cC2z#q zS-%J~tJqC_oyj*gB;T;2P_^EACb~ZueMi_P(3kf|tdDkCIhr`G$zwM`$8b$#_cv=_ zGMK`$reIFVV`@ok7a2BPM01m-Jux|~eFphrVfMV5YA(i`hfR7!b|s&e={B-G{$J)l zG@5`Oz38!h5B&Kg4APO%{y&JHKtN~v)h%?#n%mb98&CdGj+hQz8TAN-i+;! zRm)Up6FaZZ1Q3g9!Yq?$uCnY^;{Q7T!%W$|{QKTa#g4*EnMn?yi_>6;MydYfI9O?m zsE|yTS^C5y>}O!SP=pyTN8yL`k+v(Qa^=yPd__$dN7g(tnnCo+hU6=qNe-oBC;3LH zsgA7t-S)^V9S*gLwJ>HHZEuEnGN8%Dyhw9&a4nQ-TQ>~ARLZ+(6nHq*&#+_bV05*_ zBQ@?kx)LquO?e`dzkzdjiP1~bi1$F94J(z>TSXcWhqvhu*r)THh2zidjU3b3iUN8rVw zIT5$k7nkXmY$~x6ux@yc+N}E-oxO5RT^(k+^y@b~%AFIa0HeTS zur^R4{Fx~@YCO9A4_(XO9+|(bAKfj}{5%X>to>+6)jNsj*N^O(N&Y6*aiop2l|Q9` zd9(UWM=&ck2}jfqCcx_1KAakDMFi59j8roD~K%u-HeNOE=@e=U&2 zJYb=gc^1mBxvw2n=avH#Q4yKxsSi6Oyn~V*k8&FDGDXQzrKwCmw-hyhS;nL?+a)Yn+5HPo{=ZY+a2W$V+_yez+u4hm zsl6{Y>k)_jX4d^MG=oj$CZxH3z21aWm2_*YK$TmwF;<}JHuuB| zv;gaRQ(YZYCY9-!hm@(VZq=#Cgf^*a1txUAY8W@6N2q9VSBEK57Z=e^N!MP*nUe8h zZm_Z8%!G;^JZ#JrV?Uz=HuH4<#+=&3Zmuu3rMfreQ80F-Qr%0@{mz=&zhH6^#P&}z zqfe%1bO&vE$rHRtt%ex)^7C;Yo9S3?%CxDJb=e`QC9dspw&BH(nckDNUMQt~%%sM4Qle%SWazOLqnU40*774cGaX(onKnZY`n z08VVewO}tqZ-fwwbrH?D?us)4Y<9N;orUu%wz$BvFyX#37`b$8?PYHBljB(Gw!VZSZS&7J(f6OIFjO3~;@yfiq3oF1jS#!V8nBsB z>lM@gxn45n)3;{oUOH%cZ3cURUS1fBrpIH%Y;n6h^w{F|d8X@XMmNITWxA0}8Ae-l zFlw91)1(q`o67br|NVCn$7hc9oLQ7nFec)*{xM@p)_Xq|G1W4^EW2xgPwY5kI-I%4M^;d+r~lz+GifzJdg$nYk@rwJHIAu{r4w_ zsTTW!e@hd$8eH1$iF*v}F2~xrWYeYX)9Xj3VDCKE;l?31bXdqhYoMw|i;TcvoNmmI zq$+7BVA^?C)z!Xjn7piCdvC^<@A07TdHnB;o=mD83bIo@CY@gB3<3AtwP>_2_xQ8rviEx`rp3=gA)CEdys(b*+@yDq__rM2b z4}1VU(%$SCW=KSG%{owHe*6FL*r#DL;g|+x1ITc-6T52(442F@=!N0+^7@@_d;AaD zE6;Xp(_!SQE2Xf8D{Fp;-tR=CpoMgl+9w_82WIjxZReSBsSiBaebV+mb^-kPpUy5a zlWKBkQHEni1iM@Bfu%#_*1K;QW^cL69^Rnb6$R~=-*i|_ z-RBJcD&QkMo0V%x1139UNfUYhb0zk*I!f%jU-;nmhLWru*{{VW$1p>>U#mTW4}WAL zF?;?`u77RMOv&?^rPw&wKxU?Zy)xDn8wao3IMgR<5RdpdwijTG*-fk^;2=>N*Z-vG zzti$2|IwRNW@LuTa%Sj0J~j^x@Z5^41N(I9<0hHc)r>WCyT0VB(}NVWl8-g@7B|!W zRI~VU_l*g=k|p*z;BGDe>&FA zr+!`>Ed4;N<8wC7?c{7#w{fPAo(G0pwE03amcUwZj(U^{rbq;ZEk7SapbYpQPc{t1 z+ABqln=HHib=qW3*&|<;?Y23%PI4vL)t)J~5R56X14EutaXJmxciel6C1@GAio>fo zZQD&V;B6ef+{3q8uoYl#ERlKhh+WBGGXc{H?(}8{%4lYn0`sQAHM#?-IxB_a!fYUf z*Ed*S;cm;md0?KvVRR0#K1UBVd6=6%YlQnyX#BBqu1@d;9PXCu^WScmXKu5aOZ#VD z*ScM8{VZB>Wq2P@xJ0BZ-m97Z44J>g4K$X~GDBjE@c*L7UCG~|)NGE3 z_R#xZ)Go{pZz!k;@pzPR1j_>{v+nSO+cSYZJr?wIZ{M^VrLaQHEKO6slqJLB)9lJ4 z15-+LX0s`U(&D`ojC9;<;AJG-g_=B3Xjk(szzlVYX=9r@g~?R=PzR5A_X8BZ9q1*-pzO@9Rq5Cu_K< z`@y0>ezuvc9W|{u)OMw*nplS#sv*>9Ys)lDYJ5v?f$0gN2^T78hNs3<9yvB zN>PV$zkR|VOz=|hOiF*8$nZ`tP zCF;HOyvJglORM9a6Log5Y#!;2(oSfruQNWv0wzrg-1~NJ#4l)W9$_ViGbTK0o`WIZ zu1-$%elo+_emiM|`7)8QE*l@k=G!3t{*1r3@V6JJ2jlM^{0-tSt9|u-Pgim2I_9Ow z37+Sp_S8)2os%){-c5zOWI#uAC&TGdTyzaHQ{^#;`wV?Yf@3ve2E#2#=zfshiu)1R zhvF!YUBBLy>plsDtk9D{w^?}ajK%{8XL6&reT_AL%y!}U;rPiGG5*lRg?DGvsF2qE$z|OwR@b310X#80- zZ};})Ns?q1M;WI>=`p!SWsw<`C#`4SKncz#R-Q~7Xk;@zpw5>;5-o@u&dXsBJo{yN zyFPF;*Gwf;Iz#KvM-RGt#MuB_Np=!e%~=wbVwg1twT8XNBeZG}m1r2{d7f@B>3*bl zzYyME>Rvh=+*lfc;Wy0|YhNh2AYWretUiOt27l4}y`oj1>l>|t`slk1W|m$$)~0s8 zeP3p%kN-z^N$zM2M-><{#@{SA&GMTs9^c6OMtRL}NMAF&At2`a6eF`&;MGn%j!(5c zQ9!DBvHDr5;kn3be6$78c7>0o!6?J3++@e`EZGgtUyzCg^I9N8-}{Y7T>NAKB;<+s zX-MlMqZ-eim+IOFFGg=Oh6B$yScB+vA$yQedl1onQakI0(2g?RIQZN~ln3$XbV0i# z?PU5Flt3S|uVLiaw6Xknw#^Y7yZ$2lZzIt}*=v5^q@BIy=exs!sas8J*Z%fy+%EY? z#O8xvuEUC(D^7~zzxZ*p=gdAfzOb(TiUxjZA1_!qD?aDM6OS#NTU0cU9JA{hRvi^D zUAnOF?CQGsVbcy<(2TDf8yZiFpFKN%db**xv7)AW4Zfzm;;4A>?09N+yeb_(t$I~+ zy1F4ke^BXNIq2o=PPiVIlv(MExH`slpFkFUOzD5hk$!lpBrMO7-hNM0 znuES^FCi?*K_6E71v%&mzE_E>-29*2K0Qk3e2Oc(d`dqz2fdWbb6i&nWThWedT$PT zD;Iva+6A)G=h2$tY7oexZ&dpF9P~IJ!{g#k1+J|0Jxbq^gT9fk#^Cy!Kz4dsWL%8` zS@ih+LTJlD?^XKp9P~WCJ%x*V>bSDx4=Vl09CU{h6fQ1W!Q>CcL0S^5orLh!Pw5MD(DQi5g6l$o ztn~Ft=k_zMEc&3*Z_Pok|F{s=<)Du#{fZp)`cDWUm;D@5`rmV;ALC9Vu7h&buNwBW zuw|96Rq40qpcfq^gz;STxDZ~;L609SggbKRH+YE9SLUE64iox~Iphy2{XcWjb>iXf zC$6mW=kW#-SDio>y;bRd%0aK6DTK-#^kJpv8h`a%LgG?0kd^;NrGGg`{gfUd>Ei-f z>Fbr=nS<`A;h{rITv_S!j*^7A##g!0=L%a^`W~giGnalxOTs;K z(A7LSlde45nbeXuDQ}-Wr)~r@~+)&;l8>oFno(ZoBD+C zy)yw{4QRv4_s|4}Paz*o)}6>)V?HO(5@f@Qo|q@(K8!24B&yC0|`nM&`QCn)cMxTjyPe78@)cQW{fl~32dk@;4EZ_6JgUtI@B@?8(U))$0N*Ta!~ z_knLJpS$7Gb#Wx$^WZCeN%(Yq9LYBsdkkBYPuIzjd`E$A+wjwW5G9dMDo>jc_iOO;Hy_YU7ttt@$`e1&(t+@UfYW^KIadfR6yb3WQnBKOfkG@PmiL zpD%DTkb2YszXkjR5YtlrJ2QmuN+9EB05Lu1?+Il78x9lt{y>)h^+P0n9gyKEz}tW) z94ztwj7#`(;13Z0Ss<>$y@BMr<{-!UK5#LR@p}SsFH-nx+-R^~9s_O#-U=jrIgs?3 z8lIdl@v%<|_F@0wF3|4)vi{=0JAu=HxC-z2IBWs%Iv~Sm0=EDU1v0-60h!-lWFMt) z3y^g4BpG=0N2UJaK-S+LK<2X@`$k^_UJJa{aZb4!h&5o`9_{C9!43QyPYObx%jkK;Uu_$PorL^4wf<e%SpMQYBz`X- z<=lfvnfJ5cy4D9Qh&r9*!dS``o0ELTh@#uXjKVbN!g zKE)ozR>g9~gkoILQ5=T;CV#~q#a6{~#e`y9(NP?pqUjZT6k8R`6%&eaMMrTM^=9%{ z>``o0ELTh@#uXjKVbr%tuh^s5s#va=P>d@&io<9hlU}h$u~o5LF`*b&bQFh?*rZqN zQEXK#S4=3z6&=N4^b7plqffC%u~o5LF`*b&1ekO;pr7vt0jwupUu76&vwqk3T!rDs zi-f*e`R#u7eHtE|A#~2wlxOz~f2!$!uIYcS;b%1bTjjU=TQ4(=wzYoMc4~Oze38#H z5=c)ZB)k{KFT?W|O87txcWOAU;nhi@Lp3MH|MYqtX?ZS2!ATNv27vSg+J_hKfk+=v zI`2^p{V<_##yBK>fAKBn@^ zwLCBEE_AzJzL(Nl7fAX&RlePCeNpK{nx1DHP`-Vhbri-i^A}GYFhH8#?x*gd`jx7F z1xmO3vG1t-0;P8--R_t2OdeBzO5a<{XZP#pYWhLdzemewpEvv-c8ckzD*bJx+vfrK zntrp=*W3D$dDa=w^ur0MpKAc7{=vs31pJKA${E>Gh`w|MS`&cK`lYTA#fOg^o3Y(Z3aC=Cw%kAJhK)ZLKf6zkROO z*L1C~^OSD)-w#xJi}r^DAeZ%HpHF^C^_%x;$?rkc&pzL{U-ipV{m!uMJze;()AnAS zknl{U+vjf$N}sOuziIyV`Q0T-AN!1?Z&$i~zPO*#OO<|+%D2zoZdLk5mA^^T+vksm zD7{6~^9&F(9%cRI{6)*}D4lz#roUpn#_JuW7byKcrQ7G1$E*Avr8la6_W9raO5c(& z;+)q3rhg)y*SEBNr)vLsTIJj4pQmg30hRwb?O*o!`6pDrxc09f*!KCj$bU`K7cG$R z<4U*B2j5oua-}cS_P5X9sm<7-U&?^kU9JVfZXX#Rbg|8YvU&lk^8dR*zOCd!ZRCg~5= z{CiH4aEGS1&kxsY`dc*pbfxFXeT#Fd(#N&_ZczF5{gSlGPiXmmt>w!*TJq!BXe{5x zq=dOQO8xBfxt%KCStRs7gJ$%Xb-q)p?LVUJKMUm|y$AOVyuPXQavk5?rzG9J|8SAg z`!xM7rQ7!#T9uxs=?9c<->*1B>9=V5<(j{J|KRsZAJX)nRl0qDVL<7Cczp{poiP>Gw*ApU=$v{KoNi_Q6S&!4s0gXA+co2eZ)ew(lsKz==yiC+R+? z_gVha=~ui?k2#_zZ~ME!J1S=h&%f|{gNN&G@6aRvIXa8W0>?dsocbFd^4>u)##Ong z1=nf0359)_m*ISn;AuF4W0gW4$HDD$IF3;8yc_GG-sH4|M>H7E=hk7p_(3e(LRB#!2_hO$ot3KlGU%unD9AfEkV&oD8q z;B(P#!U28B?N>4AO5gC?Dh66@rFDbn0c4-x#2A;S495fDpaPsva9P=^=86U!6yT3q zS>ZoODsW;|_7M~&`#?RLVniQV1qf)%HOMJ(euy45MW4VWYtn^O)@SWGR zSbp1MXmAXJp25Kyx5uN&*)^u30*4>4=FO2TdS)C7?+?P121Z)wC<&%EM~>);Lafa| z*gGrEZ|rBM2`C7_q-@(03A>FD^@2Ykhq@YJlAsRwQh2FlSjkYZ+70_mr5gvKu3hp+(lohY zcJ4sVh{(zrac%;&gKikK>|7|sp9?LVo5Gw5<%Y!Mxj|YzH^9?Y+<@3KH@K?O{b`OD zaznIOZa|Ed8$^|eZE|CvX(+~Luv{*rQ={ZYA)!CYoP##EqN>3uE}MG9TlV@rWX8{*pXN2ezTe!GaN|tWmnj-jis8B2<4Gx#qV| z6vMgBE6;V_%ba;9o*?JL@Vu91oCvqV9{GYh4=3{67jtw*+>p(=FP(t}yTsf7hjrgL z59@kfHjLX+K9b>M4Rigg=e}I}DdDF)rX9n+=N}n0*=Z%%>x0f|v2v2C`;~Egpjb{tDCu(G ztB+qgj%1p5$Y=TZ>3%V5HaTJ)s2leqQutQuTDpVZ6{=VJOmf%gqdtaiUil6x8dkSA$@O_}$!TPixu0mF-Ytw3q3Ff;POr!XNi{3{_ z=1=t~X}^T;Fv(nB{Gxm}BjHfNSB8|-NEiL08xL%m?&V;Lb;KaEtAoE&@EwSN^&RN> zCG+`(%ww8a_d5o@KZdWKW3%oUHt=nV`LbMJzDM;1{x#`4p%u)3UJw&0rI&JyxK(UJOr=sz(~0AXT$9@C2#4 zHuu6Qq-YP9Ze8lHvLgi{a0*Euk5DLKLYrDmXwy6sx?j~RGNDJPC7eRCJX<+di@Qq( zi@QFIU+@ljKyhZN=N+>9kvP(vp1A`49@pgor!G*3j|=);kB_FWz{ev#e>84|rB`j` zcuzsJiOqC~W6JJw!^yyRq-{HU zOz}(;YR8oCYdKWI{>5b=wU?VD=6$kMx2DueXj^v+h)$-X2K61gVUC}(gWbf`;*@!a z?<%)9Am9XqiOm@*8?$9n*_ZoTm$e!EOL_-!$d7_x3G z+7D$yys04<6*Jy3ZDr9*G`IRw4~1BywLwNR^|4|4lTVWcJ{F#))kw9Syp7>ld%_>v zb@DcT(`{0#MWPArNXg^=& zcJSf0*TvBjmX5fyy&gCc?7w;1A41=~&rgoU+Bt!0<6D1CXnS~UaQ$w3egnPqEC78x zU}<7p>h8!qYpY_Ui)$6@2}wIrv_6`zl#Sge)`1t=P&P9m`KfeSY_y`=nUG%#Pd|T( z*m*yr_iy9zdt_y7_BL@p728nY71&>?W+Y%c-d2X8(Oo#doe%Xl+dd`(f2Pt!Ze*RB zq+}Q#rD#8wi6z~-rVsknh%OKMvgeSX9YiihUf&#*3 zBT`?#{jgreZe%Uk6Uc6qS!XAYYr(6OY)#Q<_vB8Ud3a=Ao{oV&Ma7!`o7D{KU-+%t39OYiTQ@3O#cfu-^$kE6yc?O&o&~n5h0Fy6Cda z7+o2Bd=iEEbQpSxKOAf3X>Ks?lQJp0u`-mn%80eE#{aezG_f3TMvq!c$KXcEaO?3v z?b+sR%r$3E2Q#p(ZsZstp?r`t>vo*?EG)q+Jt|A$IfA&1f{xeVfAvR;hMS+<5$opK zW(%nlaAb0a&Tk;wCLZNyQKXvD0e6FT@-oXElW)n6wryPf!b`YuIOAlVwZ_myOvz&g z7|Ww;Aj_Yf@n~X~sNw)l#w(h+Ke7+&vCw>ul=hU#y_B3^H?j9+2r1!zhBgupSV1+B;%Dz@T?uN6J2u0zSPyE%4fWb}5{mzP}fm#~afQ=x$y z1L2X|&s5g|srhg;nCa+&0`92*4B$?MHDK>l!t=j1gT{vxm#Ay=j45n;VmeF2PHEi5 zkKt?%L_kj1FHqcXA5m`9=QcPKG74u<16o0iNZbpD&vdi17c3dZ;&zio+jj1rrB3`M zPCklV!$}CaisjR^JOhn~A|Wxf;SsLVBbJUOHp~%;aN6@bx2K$#=$wlqmPYGXsnP2X zWBQFPqS>b(d$Sfpw3=6KXFCK%OyvBRXUgxYY=pv1JMX4HHx;%;+o@z6r&LWSgG#k23J@Go~n04CgHICfcU1v;ymf(~NYKnqC`OdP%~K z0Bb}2v8WyTP8);o__l4vcBG~T=2)}Bv-%X-`e?h_ls9(6Q^-y&0?e$q6r&GAQyWlR zY6$b?78Z*|p`R?1)2sojka_@v4o6yI+uL~K%87OFXHvnm&QA`-u8m7*2rV$2n#AKF z;2d$M^cfs|A;%oEn;C;6x47f;7fg*^zmENdx!cpt(3V|mryhxOTAxr|$1`iyalUu1 ztQ4)AmB-1Af9AX#(D7RFpjR|SDVoiljEbc{o?dqmLkH^v} z$Nd7=rysD^+mUOn$AcYBmFa@dr(cIzoWiV|W-tWwGgiXr&CuK~6x;^VPNhA_6fCn{ z7If07Z0~R9%_XY`O>6Iov!spYdrT(p%oCU$V9cfUIa35BKvHI@ZhK$|*!z8U1MIKi ze$TEHuU`kr)^DM%jdyXq7}K@!F4TpsFKMvd^;lyN&_#`|W}V{QZ?L7X>EPaXvg1{% z12$VW@5aNJ!3g`+wzHnrS5Feg_OR}m(-I;FS=-7IuA>jrNq@&6{zq}VEt-xZhV1qk z*A%?m#3^rz%4`}!VmVUI-DP4Q9=4lGZtO7TvMpdX4T0ZGh@Ef(rN=tBg0q=I&#q0> zPMQt7_6=A@>OO)=BZQ8}!PE8#|L1x&*3pLlr9?8mJ>Gk;rAWS0*!w!We~h1UdYB|P zhG$b>X9o!z%>SDw=?Ugs?Tq#!nUA$Ywy`|Sjk`FTvsxrt=Z5v5IlRP{-|z&vf5nQ@VvWEO=T%3KkjKrcX1}<*(TR#<=yD zUGq1A-u4K&sEM59K}EXmcl(f=XI9TLlWUN<>wfBBj&5PwW24!7(6SK}yD87#SdMYP zdCRfTdR6^oa(#ly$`r9{o;0>scY15-&Qsbu%rM0O9ztQpF{&^Dl?-v|Zbz4~7(2l+ zXe4goSQR_(+ppsMjTs--PMl*BA#v$Y+es{3Ol+w>gF*&od5+Q;?e;Rj{Hp=B%-(o3^UTjtsp5~avvic*Q zV41c{nHxl^DczCv*tX8-9g{;aT_Yt^7}P`_rlzqY>aCXo{YxH@3{kA^UqUO%!1fZ| z0i>=&Ue;a{2A(fr|1WH5bZ#??vw21#)4}^ima8=SynQ%ic8DolHX5yH)FynQX zryEw*)UB0#%zL`7D5tD=$$~}6MGoKfisPk}l{M9sP4Sg=4e>Q~Rn0YN5p+spQ&n}X zlR%ygPF;Pv*7*e7mO2e9oQAXs;)Td6r*y%Yr!PDy-dyXx3m7+Vz{IO-jrY+w3PgXX z3rbHnx=eGXp;BsVO<_=;lUOGA;v9ra{&!=&_xOL2gKodWXpuBo>3eq!2n zD~J3ZW4z6`T|a-w(y!+O(vKGOnsU=DhMh78vU0$J%>m3~(adJ$JLxN@~$ ztJ00NjwpYh(z!v0D=UBNC$u{UeWQLy_j(R`D>wIX?GVV4UvC~vIZixB{cPmpD_ptS zKLNiEy!f3et}OY3A2;#NRRUS`Qf@%vGP}VM=}SK;^kRXm^gT+i%t6n~7s6>d=;ca3 zGY7p_>F4F3+wasa$U)cY&+VsB{UoXV&GMge800R(-&FNiq;@!xkB@_U)nAd?<4C@n zDDMT{L%sjL+T}>Thr!pUd}^N~`PjEMzi7n0e+Pb>E5Z*O{S+1r3!mESNO|;AxLoICJWpTgRF&PS2*_ziTynB;ra1p3iWVXN}#{1hpVehQcWP2}l370E|Gg{{h0IYGYk(J`QW zI&VeFqo2Yt<Y_4y0d9h-qWfS&_C3dHSB;U-`c z^yIEK)7JvAgefcoBFp^cz;7UY3~()wey*+nP6ARd`nzIQJAlmRP9Vl~;bp+-h))8q zM))Wo<>mvCH2*yizku-TKt$#L5=j0B@gMomS1eRK5Xkg=2!thA{woMviSV;PEZOp( z0kYhEK&&zH?*v|sa(x^4WyEg;VriJa61V~3Gl4930q|=Ge-!v7;4}@tgG|1P@b7`- zUk4=L#lRbZ#TuRuB;P?m*3&+~{{X%Rr5OJbknsb+Zv(#vq`V7&Sn3uo0CoWjfcpbK z4kZ8IQHTcMcYv(di-GHbe6f)EKdHDJ_+^Cu3}KY_OZ-PUn}Ov2qJ~$Kh=0q0>{l;< z31hCX2-pbR6Uh2tV&*r3`-C*`dEn8&pD5l1q?~oYJAw7Uei#X#!yY2a-^P8|83^wHQtneg z>hlQjTHtq;elrlN=5GK(g~DaP3xOX7wgKtCjQPK?H{QPnJ_2O>Ujn2ai-44WB#`p+ zfh=zfcoXn1)39~{{t!4H*aakC1rRKSN#OOsnLzftH}`VrTBMLZB*}LhkbJE`^3k8! zH-R&N#{fSDM3M9N1d^Y=HZKGI9C$nMOF*XQP9W*Uz|(=J08zC3BZ1c-%oE6%Zaa|W z`5y2qz?*@ruPcC^zzczxvkGSdS^pmfvVQgivi;wJZD#sk0GVGOkm>2SgL>2f**}i~ zo&tPhiu8v^f#lBsS*|OAUj$wNMAhWeuhDlAer>X(dkR>F@U_53ApMN6-&O(H&&~p( zO7c$xQqCuUC~E#B;B^T9ZFljz_#!Za@K1qE{|zAX-vDH~79dp3{~YjkgjWK;4LkzK ze0K*j-MhOvP6xto0oMb64ZIn+9asnK1d?yrBuRG^kl{msY!BX#posbJIO2ElSs>&4 zfXE^rvP}8AfDo0x4#;w>0U~MsB|!2Q199b_g#TEsj{})c0>Z(!M_iGaF+7a=AoeNt zD7Gq=D<%}g9~gkoILQ5;77;O8EFiam<0isgz4#keBCq^m~1-w(Rj@2l!HZ2if!X!x2>F@@u_ zYB;0eP7Qxo!y7gHJq_QY;eHMGX!tn|Z`SY&8t&EbD;nOS;a4@hjbRkn?&CeJ^mmm0 zTMfq!5`AA#e!Fk=s?tBD^f3(|uHm)V_(Dx@_h~AWo>uy$8vcfc8#R2JhOg4} zcAw@N4cmQ{E)Cm#6xv_YKQul4Pwj`XlQ%=^_YMsYA1>j0HEjL)JgVW|SweqC!$TT= zQNuk)2>mY_9?OF4Mh(+H9rf9w;WCU%`n$3Fggr2RG3u-N)hpfZ6B>Uy zpwCmf^(STb>E6)vj_L!^M!sm{I6IM+@(Z*+QYt@zbquc?H2p|{gnx{-HTvx>;dx3Q zpDAJPQIKx;p|`@$QT|k=pRVccKJvKITb0hon@n%_;f;SZq@RAc$lqJj+kNaoO<$zx zUj`e~+vfnYl|C>-(m$p0?LPchl)h2r^L-_zFGoA^x=ZO>l)gdfi9LnBUg@iqJ_pez zJ@|ONr}bN^`M<6D+kNIWdw?H2w`l!drF6Sbeu&ZswS1>&`^2%x;?=73K25)l`5|w+ z&v`WTr2H{$|9zC6z&f2*zS3KieuL8OKIcNEC$xVat>tIG-R)WZ=YlQS?S9) zJ^cwWz1=5&PUUy%_-R#oE7tkE`juX;^rw_=_qiu&`3kiDp4a^CbBfPu`nZ-4_cSJd z`y)yVoO-=MSF^ia*S58R-gv!f3 zUqAhZ5dG8;9c$(QKmAAg(;ph5KM~SruTXm&8KTplpI_b&Lg8 zzcMSOx^`uq1J67Sm22QLEYew1aoO6{>4vmPp6wH=%;$y2=fJ1fxBzQtsB4gP^fBZ8 z;!6jfJlA~`b@I7KF&xF>P)FWw&=>^#?yQu>jY4T$A689uZZxD9!+X$L*Exu2fa>u% zUxE`2*JGN`g^8!E&)pe)id3g-;N;4PuB4;4=BkRO3gK?5vtDJ~j6zvkk2rn-UQ_uz z3Hce^n$%)f)L!8y`yGK<4?2>6z{y&187k4otHJ_q!=Ux6T`GZf*`NfK{2t#Wew?7)s0PQ=|apuT??llN?ZvSB%YtIfCoGF zA?p%HI`?YrhHPHfHy8@g*lfkEXkH14)$qFo{qaw8si>+7b|6If3RrAP+>mZ;t`U!2 zh=9W-3RAWH{@*ZItE#jEm6feYuc@rRg1*w+;;O?csWtKJ6>#%aT-IFMkXA01GT0t; zRkO0X21APj887Z&NUt=n=@_3c24%rppVOF)Fsii}cKi7iSo?<-J(H_3&c7fgg%9V>uM(cedq?;1E;L zyOwXPhWNDky;v5lwkeGn!He^cQZLpHKrhCQHZMj8oEPDaIWLMs$P3v~^+gAz`_7z0vqNn+d>`t>k&M`kUYxCRW&R@q|Lskz6_ znR{%U7yL@CsKA?1b=;ypQ@`=-jl2#Tt^)uX#WpaQMP`I7M#1la$_IjQ2AYM6CN)5jeOd1 z7JF>&uMhNlrT4kzxbNjvj{9n=8b_YG#b9$X^bhoVrHQQHtG>d2&F@vqsgCns$YJO# zxCp|7oW1e8)Z}QMr|=mYx5)V{m(Rie?MuHi$}{hI;~no2O0XX+c-|jOG|$4}EB<@| zJM^A(-d6Knxqh=|xFseeB8Oxf{Sdo2FTM-^FH7mhgE3zcD@?NvQMZ!!A&vkq558jH zh2Hartgwe{Ym?7@h$&ycMHexYg{ht}=Lh)F@KiGDnm6F>CwR02^4*ekS|Igx&m`^~ zIGrVL#MraRf{dm+! zxn~mI*>@dfbe8-n))AqQ$oCZb(}v`qP;R{I&oAWgU4eLz>P-F)Up@>N!RGUP@Zjr( z<^lcOz~>RIyMV>U9~)T22ftFpSAcBHQCeDCcIC6FLQV^8(Dh4{2>XEujvpyb`(C1h zG>ol64xaFL)A&xu*5A0>=%)V0@KwYZwPJ%t)t?CW>W>Xd5vV)-;d>2!>YjO~Gx?&a zyOfTGN>uQ%e*>d@p=_0tk2E9n3zkm@h1*Z;c(7tn#;|>`_9g3+3AB;@D%TqhS^cYM z>tDt1kyk(RMF>l3zDmLO>MSWfRJI>>@C$r=<>B@a_aoEpC8$vOu)~@eZ82`H+Ag8? zCtwZ4otjPLHWmB`@zY=X5l}?^C7>PJq8Z+qYQsko=_+X&~*Dc2r|4I?yWXyaiG}g8BdBYFHhp(et7}*ZRuXAKXY6-;G z6h@u+;SfKKsT|*#!syIT4#)H(b#CN4qu&(0rMGwVWjd;0`0T{fVmlNOm-Q|f)@)|*OHqysnWTIFiyv;T+Vp- z&3G-4|BF9*fwW)z@i*P@fm6Tu!^2zqo$waKI%bgJV?TUkr(c+v;W4a3z*aAZjI^LN zjEGq(6)xW>WsSc)Gb$e9V#tnU(|9s0?SKdl9q$`2)P)*BQ_Kjz19>vC0_z7>yU8)L zEyIr>RR*d@9S2AxzEc*r2yX6OOEm%&=FRII0FIf)O^Ymu-PE_>zxpP{7CmXc%rZ7B zVe9k1RbH#%7O#}jU)S#p%H!8^I^&onl^bG_U7B

%h%)tUNy*V}txMHjMgrB32w8S^B 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 W;KPo<7@oy-8q2iBf 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� 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 -#include - -#define luac_c -#define LUA_CORE - -#include "ldebug.h" -#include "lobject.h" -#include "lopcodes.h" -#include "lundump.h" - -#define PrintFunction luaU_print - -#define Sizeof(x) ((int)sizeof(x)) -#define VOID(p) ((const void*)(p)) - -static void PrintString(const TString* ts) -{ - const char* s=getstr(ts); - size_t i,n=ts->tsv.len; - putchar('"'); - for (i=0; ik[i]; - switch (ttype(o)) - { - case LUA_TNIL: - printf("nil"); - break; - case LUA_TBOOLEAN: - printf(bvalue(o) ? "true" : "false"); - break; - case LUA_TNUMBER: - printf(LUA_NUMBER_FMT,nvalue(o)); - break; - case LUA_TSTRING: - PrintString(rawtsvalue(o)); - break; - default: /* cannot happen */ - printf("? type=%d",ttype(o)); - break; - } -} - -static void PrintCode(const Proto* f) -{ - const Instruction* code=f->code; - int pc,n=f->sizecode; - for (pc=0; pc0) printf("[%d]\t",line); else printf("[-]\t"); - printf("%-9s\t",luaP_opnames[o]); - switch (getOpMode(o)) - { - case iABC: - printf("%d",a); - if (getBMode(o)!=OpArgN) printf(" %d",ISK(b) ? (-1-INDEXK(b)) : b); - if (getCMode(o)!=OpArgN) printf(" %d",ISK(c) ? (-1-INDEXK(c)) : c); - break; - case iABx: - if (getBMode(o)==OpArgK) printf("%d %d",a,-1-bx); else printf("%d %d",a,bx); - break; - case iAsBx: - if (o==OP_JMP) printf("%d",sbx); else printf("%d %d",a,sbx); - break; - } - switch (o) - { - case OP_LOADK: - printf("\t; "); PrintConstant(f,bx); - break; - case OP_GETUPVAL: - case OP_SETUPVAL: - printf("\t; %s", (f->sizeupvalues>0) ? getstr(f->upvalues[b]) : "-"); - break; - case OP_GETGLOBAL: - case OP_SETGLOBAL: - printf("\t; %s",svalue(&f->k[bx])); - break; - case OP_GETTABLE: - case OP_SELF: - if (ISK(c)) { printf("\t; "); PrintConstant(f,INDEXK(c)); } - break; - case OP_SETTABLE: - case OP_ADD: - case OP_SUB: - case OP_MUL: - case OP_DIV: - case OP_POW: - case OP_EQ: - case OP_LT: - case OP_LE: - if (ISK(b) || ISK(c)) - { - printf("\t; "); - if (ISK(b)) PrintConstant(f,INDEXK(b)); else printf("-"); - printf(" "); - if (ISK(c)) PrintConstant(f,INDEXK(c)); else printf("-"); - } - break; - case OP_JMP: - case OP_FORLOOP: - case OP_FORPREP: - printf("\t; to %d",sbx+pc+2); - break; - case OP_CLOSURE: - printf("\t; %p",VOID(f->p[bx])); - break; - case OP_SETLIST: - if (c==0) printf("\t; %d",(int)code[++pc]); - else printf("\t; %d",c); - break; - default: - break; - } - printf("\n"); - } -} - -#define SS(x) (x==1)?"":"s" -#define S(x) x,SS(x) - -static void PrintHeader(const Proto* f) -{ - const char* s=getstr(f->source); - if (*s=='@' || *s=='=') - s++; - else if (*s==LUA_SIGNATURE[0]) - s="(bstring)"; - else - s="(string)"; - printf("\n%s <%s:%d,%d> (%d instruction%s, %d bytes at %p)\n", - (f->linedefined==0)?"main":"function",s, - f->linedefined,f->lastlinedefined, - S(f->sizecode),f->sizecode*Sizeof(Instruction),VOID(f)); - printf("%d%s param%s, %d slot%s, %d upvalue%s, ", - f->numparams,f->is_vararg?"+":"",SS(f->numparams), - S(f->maxstacksize),S(f->nups)); - printf("%d local%s, %d constant%s, %d function%s\n", - S(f->sizelocvars),S(f->sizek),S(f->sizep)); -} - -static void PrintConstants(const Proto* f) -{ - int i,n=f->sizek; - printf("constants (%d) for %p:\n",n,VOID(f)); - for (i=0; isizelocvars; - printf("locals (%d) for %p:\n",n,VOID(f)); - for (i=0; ilocvars[i].varname),f->locvars[i].startpc+1,f->locvars[i].endpc+1); - } -} - -static void PrintUpvalues(const Proto* f) -{ - int i,n=f->sizeupvalues; - printf("upvalues (%d) for %p:\n",n,VOID(f)); - if (f->upvalues==NULL) return; - for (i=0; iupvalues[i])); - } -} - -void PrintFunction(const Proto* f, int full) -{ - int i,n=f->sizep; - PrintHeader(f); - PrintCode(f); - if (full) - { - PrintConstants(f); - PrintLocals(f); - PrintUpvalues(f); - } - for (i=0; ip[i],full); -} diff --git a/lua/luajit/include/luaconf.h b/lua/luajit/include/luaconf.h index 6647c524d9..c2d29d9492 100644 --- a/lua/luajit/include/luaconf.h +++ b/lua/luajit/include/luaconf.h @@ -102,7 +102,7 @@ /* Note: changing the following defines breaks the Lua 5.1 ABI. */ #define LUA_INTEGER ptrdiff_t -#define LUA_IDSIZE 512 /* Size of lua_Debug.short_src. */ +#define LUA_IDSIZE 60 /* Size of lua_Debug.short_src. */ /* ** Size of lauxlib and io.* on-stack buffers. Weird workaround to avoid using ** unreasonable amounts of stack space, but still retain ABI compatibility. diff --git a/lua/luajit/prebuilt/android/arm64-v8a/libluajit.a b/lua/luajit/prebuilt/android/arm64-v8a/libluajit.a index baa6a3a4c5fd4a0d0a15ed22d6f4a5eddec15a1b..dd5a51982d32c49c1b236305da8c6bdc1b1d8829 100644 GIT binary patch literal 1134386 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 S!m`P`Ui9yhMCu)t|9=C}I@r+w literal 1164986 zcmeFaeSB2aoj-nNCcq>hBoH11BojbQQj3|8grsH5BmqqT0U@YW+hmeVm?4kkfoC;< z?FQnu#$vU|*2iDJ4BD>xg%(=3g1TK4w-s%zyKA=r+%_6(dGH}oFyHs*oX@#)=4J-e z-F^N3+51ZFJ?DKs=kxiT&-t9kd*|Ntx&D^w;MbC__Cz1vy!_nR`FVvo*&Yx6aF}P0 z$2)sYp+YK?gmCrW! z%zyvW!tq7_zxBFs#QMMgE5h;L@&B7y!V&NPk7tB~{{Qsp7yfs8PKf`~e|x@gUg-bc zp9|;b{eSVB!b$(XTR8Op?a{)?|1MXS_;39$`I>Oif9vG`{r?}dLBhQM5K;fv?-dF0 z{{P`mB7y&h{dBL8|G)c_7}odd1^)sRY&+wm^zES+Q{=f90NW_0q{m1fuKPX#VGp!m(fH2-vaN?@PEmu*G1I-%ocIU@zG!SfAmPF zu>MPii_!np{|z6D(e&R_EC0thc8M{QekjJQ*&)XK{jbEBv-gPP%;6&W4qRXUl}MTO zh)CJ@wffZ+#U&L*^XD(QL0I7%mKb4;mlQ2t%rFJ7GsERZBofx4`DHg)+!408Q&@Aq zX32sZnaMRvmzPC?TIMw?mz0!fn8Fr0BG(uRn&Y+CF3<{GyTS^VfxBi|Mm%*^8PR#m z%E}i+$QCbMx{L*styplqHV%bNe1$<{F|3oP1ewUT8k7Dv#<5p>Cd zh`=QaA_A8zhzMM=AR=(df}4!YD|J1Ut%#uI5lza!zRZ$}GFu5|`4QGCEHo;I!rGJz zO;gHrq&1c->Mfv~scKsMoDr9HB;7(=1u4WiMN*U2wVOUI=BgJ_vdv zL0t_iRu)?#5Vk~6Sc@p1zfzl~98O%!TqvvyOJQC86t=QPno&8N-pY!w)_`z}4Z;>1 zgf*L$C5xA`)Ro|_gG)4zm7vuwL1C>fg*874YkoHrEx(qSR5vxYRaE=iBH^aSn%byX zB&{aY+U#$u4qC~zwIO7#udnh~*I8h&sVNd^Y-+X=TKrb9wJpSaYHKU}t*wC;DFu!XtE?Yvu>>W$njQN%+OX={Rl zOkUm8($wA-Y7A7g1X|l00z=?+E&k>TfBX6&2^&IzdR?AXfwqP~o4?IpRj)aOn*E`c zR?ej&2Ac+dTd=}krPEckx+yx|8fxVHD!t7=B%WguR0l%Z3NnL@AEL6>VN#hKSg$QC zqqX%-me~~0(4@XlJ66l!b>w8#i?LS#qkHjfBFt*#cPfG=ng^mORnL+HU8*#RQRT2{$G44SGCk0ooVyENQH$7Gx1#HI!= z0wo64wEMY6tY}3w+li1`)p@DBp;p}{RJ=Z5sMUt1&DNld6qT(&ky2E)1S2Y2LnLk# zs12Qi$qP}F7osLFikiF-H+Z!-HjsO)s;;Q=x3q);EwTn8(Y6+UwQT1Rs9k19yt=-r zHDJYRLyi9W&_?)T4aOv9YJu%0*b)eEw+Ak@?e+Dmq!%I58ff;n_}c;|x$ZtF89hlw zZD@U)Y781#twz>{fNESMo5JX8R#i9YSPRK)l7a#)Eft6~w91h~##+pvbO?rZopMx` zox;>SRW}fc84Oi&gqr<|XzK%VK%yYDB=ux4qD)h>DOANQw5s$q}P5M^6(%wU2v#44;YF+zc^PPXY!v4x|Wa} z9YHf_KwFE3R9_@JAj^O%#`ch-h#ZP2BabQ7L0KD7BMe7m(Nvgw0U5E{NF>H%iv)OR zk>OCI?%*(VM1~oe#`UGbSU{=Tmr_l4>i_G>norhOPoml=JwWLlnhK`TH2ynwAMG-koL9F6e^C6 zm3lEbI;p7@Iw?!O3PTo+-YUXnK?KF-6l!M}YphyUF>5kLn%f}R1{B85pdu}S`cMNp zMVi$`vZ=0sK}eS4rBn!+WkzWnUK?9Iyq>pK=xUDwrqSO(Fni?x|D!dihm}$59XKQP!DWS3~g{zf95um}} z3PUJsN9K=Mg2+t+wdBFvM#h`b3;Suzk+XV?G>y`QFe|KWs;{vc8pms!<&cROR(f(c zKoF}oIm<;?(OT_qtiZxWRf84fb&Mt;DyFDyz&-{KB}k?yIv^u4vI^p43|vMsbXUtN zP9-;&lPDv;HX3NFwF$%!RSPjT!5VFk)`wv5HdO$!ehASJAYv6NB-rpkY$@8droE{x zphqJj!nEBq#k%Mmw3Lfxy3QC4nQb%ymx+91vGjQAi#QexRM+_%(H+Y)ia~k+vlauX z2Uo0u4FvpUR#NJd3 z@hGJbH&voW70sY6(As9n!)hJ;YUE9Ey)zULAq|o?9 z7bMbrSI+(@RvVy&lS;7)s7oAS1j^_LO|@07_U5(z`gUmsc&gfZLrSQ%ng&#Dbi^a& zM<)Q46D+oFULl~L7_s*!dMSfo*GBDL{1N<*m; zQ_2{%X!h$0Yy|P-0F3pnkQGEnr^0glwt@@?8k*Ls8bYsHFV}8F!rP1pBA4M8h*^F? zVeR;GEHK@cfQVmEg#7|R(=TXPYsXjwN!SB0>Yxp-XnILolWA}(hNY3rYT7xn5hat9 znKfav_YZ3cUcspj1)Q z8o;`(wGC@(%B>;vJT|0#2(ms3sa;ot?Gv^vu_3@RwFWTPSGKo+mH-y^XTl_J{)Zs>Kfi8mn}*Z$m7Y5MwmD2wBSpij|x676Xcv8C7qS!S^1FeAZ2)D2yG>z<3vrkQ%jJ zM?t-3Okv!)kXCM}#)b`U0%7Gv(p9v&sexOKitAOiipix7`kx5BbuUj5U~~zz(5R#N zwQf+`!mW*T8>>c^Q--Mx%Do(-jUWvmvykR?Y*bmXmcXjkW~3VchBfIyGCyQ%_m%O; z_KVunwpLX-+SG`3P_1OZP^d=sDmvCES5h2npk;<$R5OMt2RB9r(DRde9JBgd9p_Gm zqvoO<-74+7qi5!+1LD~7#`ao%F8SC7VFK#*qlqZ@h(?0&QWI%6_{bif-CNNpL~at8 zfbv&H>O)l+amf1>K({pfRUsoLC#aD`wSbWCqxs<>M1X;xI%7GF$s zF+dn`=pP-!La3n`GZ`Cd4b@779`aOdZM_wzb%(XrqZ}W_lgwn2)k&)~D5v$2$%te9 z1l4s+=^fW7PdBQ>G5Av?hHE2iMd0LL(FM$-d`rdM-lCa0aDDE0uN z$z`|7B-GW_1Zw>-uq<<=>m#F3OwTD~q`lFKTJvcllBJY88JKzNxbB!NfQNA_jxm6Q znsMH>vLKA)Q6xM+x6(0pib_YksfDLSM1=f?RKyGh%`|rm$lG8}0J#l;n^4$hMvAqAgSahft&11aL;($ndTClN z1l9*2rBzl9#c3fC9dE3$R;bv@k!G+Q zLv{$nC1L@JQH#g0BbU94akHEIjoR8Ex-9*uk9?*_4khh=QUW(z)tpp5Insj13Yr=) z(Wg67Oh5@%L_R&l2@#V?Mpmh1EQH-trlUuDIM|H#?WcJa$K?jS6_YnmIR!Q++_F@w zplV&)FssS>ff)ZXte~&}zXHq7#*e_PbAEoV$1{8OoB~{MR3_cAVDU9hhePPYA$}$z zF^vjQuq6`q$)Hb+1ZCyMP5n;|_igZR+}yu^tmu9!DW%K1)pu;(Hea9LACYr>KCI{2I`ndK-4pL3L_SBUb% zUv`wIi>he}LZlL2g1A6jc>L4ya_-&rm%+h_pG*ED7m=T3lb>mmkGLg&`WKM@>P6&V zVUvHkO+Mn5{CmED{O2wrf4WV6x=lXfmi(;|`I|>i?IIu8>hcYkKCtv$)At4o#ZzyO z66J0Re_1@0aOt9-duBS|56(WgUHJ#Dl)dqMV$k94JCV5f=kCG5a>oJRJz2@VfxVv& z?kmgm6}m*n^0H5_oHHU(q>>L@Ooz-%qID1+rNeRf*~R4dejJg%<6|X%2IOaceC3=! zyOsQNuDN^323xotbc&99#-Pm99@3w2%Qivf_e~|aj=ntS1?!^!v+_H1Df1h9VSc;g z)KR3J7IQmw)?G-qZKyM9t6N;Y^YgY9_Z7i@McgLOpgj_d+sJ?5=d8Mxy<0ya7HRf^Z%PwS(3-Ra~W$?H_ImmB< z>^F(xm3zo%(j19>Bzx2B-Mgr-3vT>se>^|EVE!4%kG|@Q<|o--L@vpUmyc}r;Io~N zA5L(@ZF|AhoBHQ%EA0!rE}WK|2t=tbg=bdmN5(x1;FQ zhvDD7E_a=CZttsZ$D}UznynY)QAs?==f{hu1p2HZv=@==J1E4YuF4D4;h@rQ8ym(yY*^cYQ{J_q~UMK!Piri_R!4IP3|AFP> z8p{t%-@{xurXSS4d2u_D?<2qTgSY=p$qeIa`oU+ARX6-!KcB4azgM!#a5eoPmaKSw z;Q!s{llk^*Ts~Y)Kd{R*ZBq8C%9Due#r(j|$LdYxs-5u3?U?hr|1q)av(T0~E>639o*38Znsh;aB=QV@$hR>U>ZiP9 zKb_YNUlgzh+DqIy_H(0)!^DSpQ2q+x>T_aWW6PI(_iP@mj4pCQipC~Uy8%T3Z?!%T)`Gwko z2YxRG2lpkyuU`Cg#GEG*MC#SF=E8hA{a#T%_n_|{ysjup7b*kkZt8QqTa;(!`VQ_G z<2yJ#)i;poNJ`2ame{ooK3+Tu*JoW_&?#IDUDHrkMbL}%^Ib&0s!s>^_qrzUB|Q&e zuYvU34n5aFPt!i8E{DHk*kshyt_NMBZaT0pYLhBM7W#Kt7gUE%lqJcsds5w2mT@6_ zn>yR;H2u4(P7k{b{kcwy!MjZMYn%GBsGouDJg{9U`imWo`27Xh4gHa{Tlmv4b1G4m z7qff=3pZRg_HdRM$nuE7%u!;1=C-=tkMH>G_5SeRUcBDtWr#xP9$o}{k?vIgv@$~b)gZ^z5{oB$0ywk<8 z(+;sujw$fN>6ctTat3T%Aw=IAS4!6r_(ur-LpBfot*<}hTQsJo^gW94^g=#E{VLf^ z&pl4Yu@U)MDbp2Jl)eUqwlvU|Mo;fT#QGvJ%2A*UDR-ko;a zYr9?UE+_gU3ZHh3+uI78R5{U?&Jf31i$(WR>LV`~Ptkbd*e1%`x2E;4gn!uOku7PT zoA^$>WUAtM_O{mu4`JVw_-!f?-Lg%9-*ohY4{s%Y75ypLYg`Cldv>_*Ogh?X$eGrE z4*nOcThpI8U3AZLOzjJ<_V%B4CGPdZ))m9VX*cTPLVEn-)rx}3(Nm5J@y&kfTLg4Y z?YO1?EXuxrxbM|xlYD2g#_rhl@VUYAR_FMmqzB0-tOqotch$CULgu)=l_Ty5w?g-+ z&W`0(E-_F!!Vxy@Qnc~nb|HRiTowI~V=t_7Tg3s|lY2aAWS95nzI*Dn_>N`f_ztEg z`39zn#J=gHL>G;{R{xsXu?u6Z+6$Q>!XiO*S8hu?@B!MZy&m-ahOB(wLGJ|LK*tE` zuao+wj}~2fFu$QOgT@Kk5A=X%CHQr?61(0td@lrB(43KU-aSTiuO5@qwcC|=w60hj zJBIeLut*$x&^5BJ6K%ll-L>lu@DE~MSq*;i^y!`K8(58cJpI~^U1(?BAy*RGo;dh- z&}km_!H-}rNc@No@uoIK_dklxm%Mhi(HW-pv)eW9sBS}N8;ir6om0C=Cz=b8u9c`S znnzWQxg)$A^QbZGyHx+wKb9g+eOemE{7P~2$DYLb8~yO3-gRSg+_zP}7TlKB|AA|2 zT${Q_b}SFOJC^TxF0Ej@OBB*R7Wq5*4#_9Kr+YaR-_5>%4rP1@e)TYX?l^q=$>%B# zY@Z=cS3&PXC^PjVt*}RCx;PfxI<0^E;NX6`cT_TJ%2DbIDn&*AgJV+qs-Y*9)}*- zl&~Hb(?QC=Q^@ufOOF2&C5OfhQ&tdpWV!zf@}w_}@P(^Js(Cf}0&SsrV$yYjNL;-@rYCG2;AI(f>2L zcX#i$dw0>j0gtD0+IhA=@(t0)&-xs`Md`Bz*R8A%`Qh%973)c-zof)pCy`#{hoslG zuPeRETuv7QH4?@g|=`U+F%)x^jKGTbw?;+Oxj; zKScS3?1(pRe(6u}UpMw=tF#SY!#+Iv$KXZm_#x}-Di`Ibqw^x8YT9$GW2H-+C!O#8 z-o3kM-9UPNf~%>EuFF_DX!+Nt-X1NKV_-$N0x1ah4s)Hf=eH$TlldW=^rvwM?Xd4`i!+=dI>ypibp-cgkHFrQV&3a#uP6@x{wHE!>gLd{M4*Uvu^n@+m_L!uwAM&_|Mq(bFBlwrwQ%s+ zS0`f)L-RM9r`wRmuy%CO%#u8Z{F4%zJY`UaE4fT{Cpsz>Oo_eDwfndh+ojBy_Q!7;m? zT+_q~qM>@u!2E-rTcCbJKQp#Jr#tR5160>k&xxqt;Ks~;8XM&pg}$8DN3<4_>FBrU zUO)Ad)bEfU_PV0=tBD_XC0lzB|2iaX%H9*0YwCXO4Ww6*@4yEV;SbdaZ$+5K7b@>b zmvb-q3DHy|o`5owJ?uIh>c<`#{CIrFwEnzA^nGX_?J?29~zaq;8^wQoVsUZkNNRv})AJ&QFMPaZ%z$@nBk?DL=> z-!wxU^I&ZI1?Cs`IB0KL@pyh6=7^4t<#LUhC!R|5e)r!pFBRRs^`ZW68Fbs$igHPV zHS1fKUiWia13IvdOhF&ggLd@hr@jI2)nZ>J*86g=80|0CUa`-^d&Le{-$Up(wnCpC z%n`7!a3%zKv?p-c~W_{-K#i`{+eXbo+r%}#50Lq=>~7t>PXogDEpQW z<}R4el5d?|qV_3BU)`QI!Y?YPi+z>f_JyaSpQ#)^FPv=f+qNpgk8J5cykwFO{ZK{! z)CADKGcQ~X9xlqG?H`EbA%E~AE}uiiH4%G+w2$t_y@T`wkupyt))B8Ptkb5#-&TXy z36!^Vy}v&Z`cS>o{Aago`>uD;t}`wZxm5n1sj9!1YhL!*8C4Ovr0c_eo31C6u5W

MqUXa}daRf=-CuUIU)-6;tx#(y1iw!?$vG=DF3RP>krU0Q#IV_YB2D-%CeK1O-B z!yg{S`kL~RPf%XkhaA5_bRWlh`yBQHTdQ!N(ka55pB>ys`&X5^ecsA?UZ$Q=@*^(m zhsMx^;&9?sbYC#Bi|Q!Nku>BSW_ZBQ)49t9`%f2ByHYZI1I2fjd^~-Z@8i;& zu~*>1o+#=T29w6ZCm5TszJW-d8mS zzJ_sue2V5dG?#Is9d8!SqqK(b!ycP4UeP*&_CtFyzupEpRTITPX^{B46E=PtYj_=>93SsV$hxQauaEqA|gT zGLtV|$WET+7q^r9dfeCl9JVQpW1Ax=e>~fiUc@#u7e*a*n>O*)43{(X&=!+16cDFEqx` z7)s@$dftR_@^H7>N29qR?Gw(xT8icntz#08##_&ZFeZ|HzJmED?T158Ij)hut`eos zi^Zg?e;Ug@cfv+@xJc1$$5p_Oimt<;n*pp6K0;&ei(aBH>f3^=XS15uw-c@51CL_AnP@|}_MBAr z3XlIn?U%!s&r!dW4*&L}4_jo*`}{1GcRQ|?@N@D*(p!$9Thq?XGw7?oEXvoQ&7vRd zCV7X^2K<;y)4jRkKjHoY^rYupX`dJKv2M?yj$Qr8PtS30`;w$RPjg)=n@h#9x8plc z`JKHge;D~`Z&&8Ot8yBRi}c%#ZJDB+_N8>WU5Lli<;3wAx;z=tWyY1!x;%=x3zb9b z^2o^;y3CE}GUIZkOZ(P4!Zc5%d1FuF0y$?anu)#IN?)Nf*>{kh^9@p8g89HBe;C}? zhjG`O3l%xUPU4Yv&b6lFfzprt(^Xxh<2oJvBF&NP^LHB8XwF3QrQg~3eHr}7K2?|x zKZtQ19b zc57YndyA;DV=ro_oR7kOH1FuiT<~-Ge8^<%!7afv6VsjDRCXF`f4^J|9Jxlw=g9cBAMFP!}xu{6!=aro?-qJ zSS6lir+rmw8!ru0zOn`PRoxDeG+?xi8OaeITX6p;9uG{KWWV7@U4ciI$-^}|!oxoh zpT`dL0itXwRhwd2(Jd>~o^QAEM zySKpK>A8SSxHlUr5#4LBH}x*|&1lb;+AquM>xIwKeEbvFw7qACJHwxPNzkAfa+)7+OnotRJZsoy#78n5(#U1+bu z`mG^&>3jc`9p8|@RqVkWk;W;~_t4fPxqm`sDTb|x&+qSX3>0VIjOSpn*D~7Kbpq=d zDkJSJQMwblKJ4^8O?9PhKzrg;Z_*aHuQ3RI#D9}>O4nS+xTB;K*@X5p>Dd~JS3w`F zTTV~Kyp+;_~fMlR-D= zav$p%AsTu{B!^FoaWtG5lM;SwqO;+xiDScmN^>>*DQz6~?-Lq&uS~`M{ji32t{#v5 z`{51m&Y6Jy`w5oLPEl`28D`8s5Kga`?lFkqsYKObPd| z8r9IhYHIl7rb`+=Zn`XdZr$jHbL*ysKfPm2LyxOy;DpQFU5$G%gCo;m<7r2K{}Zgs z&K1A*+S9nYG2eIj4nB{yBb7CM*{~IdzB&5f;hRSvq`Lg$)4Kd>zvMX9GUU_qa4+P8 z8+`*GVNaXtlR+M*OOsjbP^V|nmxgYn5aL@3a5?6Ql zReFYFMEIfMu7*cOyTgx+PH1>+LSp!_3BwwGG%YFoqiMq%_TEf=#CW-nc-*DzKdw1) zKZfi|_ZFlr(1vLJPvyK&zxBJHqW(rZ!#_(>y!E>Eq2bp;my(8=19bo9m+IcqNbE;| zzuWCQ7|QV#uC8)+G6%7-$`!bvB&Ea~0<|Jtyzu ziTN8Ei&k9c@y^Pfm5mA-h5tbum~XA0HY!alM%+9enyX@?Uvd2Xd9 z&)+Bf(Dgm1PIqivwwzQLK7|OTKofP$$7Lpmr7mAkkyPg4*eJy~v;>l`b?6`(tr&$b zaJ+&A2&S%sc9KWO5`tE1JHF3&|Cs26-Hg9Mm0=uzmqHQn@fsk4zfM;8RW{ti_%a*b zBIP;7-8THYEH?uWV4Fur3iHo3Q6Ua9|MfO}9OEz8@BqtwcTO~)zh(Y+%6yTuHLOo^ zK?I{vE7RX^!}qb=_igxa#-|oW^SO!jdB%pe!C=q@K7tXgek|pGh)3l336B_-y!2 zE^oPNwpNDqY@d1?{YIu&`7Cnr3zj=`d<3J=C5)F(h{h{epZhP3#_L$_-RaSI1IwK> zJsSTB^LJk!jSDT;hA(Hi2WS0_Z1ty zfbml{{CbvKaAmaIn^|tqhCje^@3i56Vg5&K_&hDwhF{5i-muwW5$khTX0$%#tWUoU zznA&=vZCq#%yMy~BkCw*yyvPYSS(<iHheqlbHs-KyX5N>y*B*IjJvZVGAUHZax-jrG0QEr;oDel z(1!nx`FGmzD;a;%hG(+eWh0{Xna=n*8~x?1Plh*|eqA!fono;Kf05h{kHzi z$@-+)#+PACpI{p=Zq)kN@G#5WXTv{{wBZXGf7yoP`G48I z-nHTHvD{o+KYu&(`K`?ky{u1-js6VNci8axjK5&RzpwSN;k~R+r)|7A!E)cX;qNm4 zxwi4*YmC2d!&QIn6mQzbkrOQU4cmC}iuMzEjrjAMtj}9E`aiMUnO8?>DOAAtd>g)l z`PbO+H(8%MZTRaf_c0sZ!~9>c;W>=IWy9|rLs~gSLN;9^$LlP2rVXFY^zX}Sg#H!Q zXTFX8-&k&q4Zn)M}+{tD~!TN_RqxMHlQ6h1tnActD&Tq!45AxYq6GEH@i><>(ltF5*?j=Q92bArhf+h zNXLA25ygxrF#R&d-K>vp!djm!*8d#ZA02vnw3G2W8TZLlAzB#k;JCj22lMZ6s059# zVtPDNDi4kSv(`t!LgVwfyxCkXUEY7;a_ObIF7Fb?%WdVonfc#|eu9n;d4~NM-^25h z^^D)la&O|UY$oGBVEPwq_PLGAHQ#2Rn;Flw@#$o|pWCCZm%}V~6xX}<+p8EaWk-07 z^%qJqk!*{9l;Qt*noxf1K@nh;eP7=NW&C zab_o;XSvz9(s7l#h%?Op5aXJEE#n=Gdzk(_;}6;JM_K<{8Q1#U%=#oSuH`OcKFQn< z>;B{+roYQ(|9s~EKKF-htj{^7f7h)5jUVEEiPGuNcq;SR%>Lk!sX}BiUSQ*Yiuq^T z`0r!>J{$ihna^(KukE>s>6=k*I&^v8XZqa93g4qHVixAx)IYz;c#!dbLO)3OeD1fK z8NZF~>0$a*#+NYvmu=%KF6m_M6OG_#$9jI+ClAFWt9cR%>Y;!_H4 zvG9>`?EEFR+o%ksjkXV-FOl}yldo`X|4!&bb`yEg^msm9;;Brp?fEs-JJHX#(Z9_0 zJjJ-C{|Ky!zSBnkW9DCA)8}5;ljwVF_;8jxiT9(l{=1n^vyFZu<1gFvp&t?v|0lkr z$~zZyba?Pjc<)sd69Uii$m2e?n~xJO;YO^mN+J8OT)gK<@!pt@n6q&d()=R8K%$ns)FkN*2Vl280YE{e_?$_+2r2N zPWN%wOYIv!B#6&gzPl%;zqf{u7x`y-lv4^}Nbvw<+wO zZ?S!*vOXJ_&l5I2YnV^HjZXseakF17V?IUNuNc>U_F|efF_EHUA#2$6m%YpGsZ7Ot_f&{FwQ?#rxYDpU(Yo0pm|F{VwLS*~aG( z<2zZ;Nlbr^?e+xYw=#a5>LYEilhI1aro1EG8Ug_{XBz7|1&mF36cfVx0FEAh7Z~WM$_`l2Z$zJ9^3-w6t_qTlCirOIxv#LEQ<+a4+O-_tneZyc zX}^H*`OIfG1V2B zQOWdk8Q0|<&33D2d_L2E!=dCp$+))vcIK1Ha&`TdF`wOx>w5e#+xdVEznt64o6J9( zB+<-W*rA7Z?c<#rBJ`ix>bXn*J* z5xd{sj`_3Z$t>jME3k7coaDs9r$cTmygrUx+V74u#^9O{lG;sZV0O558uAdJe{3Zj}&j%2` z%E0yW0d{)*d;sAzR_a4PA3%7cf$Qf32(K}4{d|BO*Utgias3)YvP@_K{tut7iH!1o$>je*~9SxtyL4V?CT^zoR1e_w;RzF^@0 zV9>v1;NLUo6S7r=^t{KwXBzlU1D|i;KQZ{%82Eh#{hbE>q(T3Lfk*W-27a%>M?W7% zdj7z`_48qbKVabc`7pwF8MuBvjPS?tuMhov7~ugE&s7wJf2xUb%`k9%kC2k}^I=4f z4+mLCTO4}*+!)ahTGT=uibJoTCnI{(KlSrugx`pNedy=O2*1R@_48zeuQ71_JQ?Am z3|v1?MmVia^r4?8BYd=h>*vM@Z#HoK+!*0_FNSsK=f((k7`T3JjBxx`(>hW)L|C_l zM(&3bkGl=LCJud&aiZU3@W(JNk72-43_QcYP5zw*Zt|gz+2MnE^i@Fq5;eZK8*284 zT3Rdo?ed$R0BoP_izGDo+kzDheo2Rq`BmV9^G)(2rpP4I_#@71@!{Zre{BF?1C+`5 zWFLt%q*HJ$eGgTAkhfy(T0&M; zK}pL|eALv4s_$+#t`)Od0`>k`ZTxk3u+bliSJqG;jn}1UUDG1JG>N#s6<>GO5qyQP zqN>sS7%hF7b{2g=8Xpgh6p6k8Dx>Q2wfbATU`HIR&suZb-=e;4jPf%w1gN(tq{*nv zBn{;FZY+PsRi$u*N~J&V+SG^-tTy5Ekdy@h#QZWWb8t9fO!+C@h%sdpf|Qf6ROv7r zmi6whrmrnZjbxmoHKEpKe_M4BpKIl0S$`&_zsgFHpQ@B!V6CN+1zO=YM2c@z!e|_c zC@Rw;igL!-ADy&JTeZH431wZhSTU(KKI5(c#TMT(C;8G&9OfFrhefq!&F%CZQG6P8 zo%$pwC=katJ|j@%E3wu$W~oe^v%R_5p3{QRkjQ%~g7`otKKRLov%Z)OxTN;@)HGldbuw`T&q55A{tv&}Tdj%Z?2i37u z%S<4XZL)Qp`bN5vts4DW`4M9FBpJ5Evl*og{P;G!8Mj3nR4TI4m$Iwy=~qcj7UD1S zDw!OSuEJq$Wq+GLN&-h!KK^z+7o??0ekvQ%U{LBsShMxbI)bEXGh&6o!3q-*XGRd8 zG_|5ugN&rhN?>a45iGgVLe+tg){1gr{LpdA8d%frm&r1(6@y&*+&w-$i!Uqd?5O-8 zz9&zGLOS{cBSx%^D8AlZtD~~d(h>PF+X!zl3;l6m*0oDkep$*=2CJ>81v~nLGsR_o zZ3PV)hA|-ezA|N@`b8%TuUB6)SKXLZ2szb-lxrqT;A`8HZ#Hi}>C) z_1^&-RLzLgIr7bNtKK4zq|i9&0lu<+Oib%i-y}b6jHv8LVW~;zGNHEH3K^SqPASoU)YfMAd!jc@9eHVImjz+ZGKwq6FR25aWDtvmK5Ls9Y zsA><@*FcQFr6E6eR*k<^ex+K4nie*c0Xq(tNM z%Wk;g1}495<>E+q>3l0(G(Qqvv9j30SFTu4uJe|g;cFv!*@^|%Yntnp>JX$Z(P2o9 zgqO~@!jNi(A=L_(tyr=^=e-6+(cy(=q%10e95zF@f(hK`Z&k_9@v*a|_JmDjPH4hyo%M~+uIlM@R7nRH}DlZZ< z*Uu^}q;r8h&ynYRdCrsPT%2oWd1uRrI(u_uM4i1}8R2ubjNnu=tFVC11@b&cp7Z57 zPo8t-**jZa)Y+ROBkJt+Dgt%RmKU6$?HsACJkOEme0k23=UjRA&XyN-_U6clI(xl} zK%KMY1t(~mFSV8DIr5w@&w28kE6?89@}kb(92rq(uU8SMbGE$T1a0%Aw(>kjp7Z57 zPo8t-**jZa)Y+ROBkJt+Dgt%RmKU6$ZLZW-p6AGOzC7p2bFMslXUmH^dvjz&oxNT~ zpw8Lyf)lizEwz>BIr5w@&w28kE6?89@}kb(92rq(ua^mki8ou3k>_FFpjHZ)z~xBw z<+(tf=g4!uJm<-Ct~`5Z%ZoaDb7VxFyJ6xYdvjz2XTzA7ka|@=*Okr%PNrd)R2^-Go`r_k&=WjHkuF26+`68nP8%EKLRSG=BjG?CdDG6@J$wS|d zd==?-ors{)CRgPeN=x^$D8Jp3I{#>$k*`{ozRtvbTOBq@n^}H`2_mfZ*Kiv0$0~ns zgQBQpLMlI*Lg&}zAJ6h}+cfGp#quADLL>P#oE%4fDc64~6Ow$AZI_RCvFo4sXqNJN z_t#YP{tR^`8_|6VdwzKOs_I!yS9|#I=H=(k&d)0-EcAH1+1c5~IX^!avHXI90!dq$ zbjO0l*Enedm=A~eSZu!UX2l&>**-g&ygc`i>7w_PiGhFPW z_w&5(a%6qrO558z-B*}6OpM*`Ow7VJCfB?@;=##o*Q7abJ4JpE-r3}HsqgP4;v0Td z&(Zt3(sCdI?@<){DDT_giT9}CU5=OK^iCIrFXG+4!5n;x#hKKVcNp(l23?}VHvoPE z6CGjzkIkokhi73a%DA)ST#0T)4Za3aNFyO{};ix`(67arK z*fSB|PM!B<;q_A-@9j^-`{k*AsZ3N3lqabSc1*2-Nsu>B!lA^P*X--nD3UDLDhO!e|fc$e4f!-cmJ_LS}EQnBV? zw6%ww4yjL%D|K(*;NX4atLUGW&vQ&%?ZNxq$ZyGK&!YWnzio$}`|-U{jJ>IQ5Dt>B zqg_(_^@As2ozy1bi^P}S%jZrJ*Sl{C;@ceaUYGgN-%vSCU+W(+U)t`&F_-o0ew6x% z-c8eTs2z~a?%nD;*ok+jb#BCW4`vmI-HGmz?hR=x($JUYJ34ojI!5+whYs8GsU0SE zb>`DM)YQBEJAZ}mcREDw>-fIVAMxJU#jq*S%{xElbOzox*opQjV1KtGxf_oMrFMP= z@2foU!&ei(_4t{$uYcprj@x|)!_)rrjQf1?Ywp`#d_Y~39_WEj;<1}l%HM-}%yc9l z+YY&%@Sl6>oqgPIemJ5;md_j~#-V&c=#@5JtT}@I4gJpDnGX2nhCK(U{-_KB?~3%J zFS+CPVc|Qj5Ca(=(Bs?H)K}`VQF{7Jd=H7!Dvh+@YSo@HQ}A7Y%Z2wO(i~`0v1n6g zbu9OoTcSq_}U)oAJKPG+y5-O?jMbJ6gtQE9mjiV zG3SIHs-8)YJs5X_vtYAX7$0G?PLgBT>^S@qdhPV%y^%WKcv<%LxMkmuvOmjZk0}rD zT?~Gj5Z(jZX`WgaieoI#BAM%Q@Xk}z?a%Pue;R*ZM|%mOoe|9u=y@F9JlEsI5sY7y z=a0^beTQLl;+HX!^3j+aDenX^p^L^^DsyL&*#CdX=J+;92)x^1SL#=ihKZE)OWa+Q zZ*{&nNPHy?`X78-rY;1(=ygrY3I0kH29YNO|M%g2zivnBQS!s!SH!@Nz}G(=->D#; z!|;7Etpn3nPDfwv7;n+jxauA!_G3N(8SXVM)N^RG?_knx&J}p)Yh5S#;%$x<)K5r# za^NQ^V&5K5$MWD<*ZS>L4qzFu75Na_DQtWF({}>z#oUN|kM!*zx|e)~uzgHp zt+AeH?f}glXp?I}XURhO((ZMfu7(coZpSeyU&pA9<(MjC&IG=&CEgRTkH#??Uq@mL zdfes7AL;cStaFLncR_PWqHo|IHq`gO2cN~eEmG315Z)Q^>pzYc-oMhfZo&I6$oJ#% z)5iVisizQ68!lQZk+yfkRsGa={4oz>9pdjHt#L4I&RrN6?{JLjbHKN0-24*0 z_caP*=wIMNn75~<G0 zJCF0GA+IhQ>HBNseGg@$a-2qd9`Xsi=lLbfeSQp|d)6_sE)#M0CFsjP7~Jp2yR@x3 zfZwks-#H<=k2=S9y*onWgvf_529-HR;{Bg#d+W&`pQC?gVF-1EdOS!v>N*uU_-2D` zZVF$Dd6;918}AyWF(nb-BgsTvWo7yb;e>gan7d?pZ!U0O0-r}8j`7(VgZ``IPidU- zrx$jn@q@;mF(@02J*zSHBw_5?j&bK5j6XEq?4|MNwwHM9Nqm6pK>02<<_uIngLz71 z?mg}av|*HM58704EasMM1AE!i;diul`4D69M`(96C#QS|Fb@9|W7{5#!{Myxad^Pl zxhunwB*)<}kHh%AGkeJhdpJ_MfB_QF_8xEotqkqS=V8X`LhI( zyM6-3NW=#)SDNBK_&^A2@{e8aEcn|~*wZTisbkWd(&|eea1Z+|^Lr)hUWb?y1fS2U z8}=Pi(i{`(67da+KMogbuz)U?{lSLIWZxBB&%=R`v9#OdtEzr(KwHX zO}o!-nvXgwLEROj4vVm!|0g*fkPp3%J(tAszJf%IS@VAESW}5Ud)~h~*3i4_-*!!v z>GW-x{0|0mX%7Vbh};87!#B=)&<075KUQI^XrF@h<%BHiCp$5}lzku8D2K40aKqUv z^U>aN$foywFqron@cVGnlpLzB{bvUA@b2!3Y4G9n5%@j~`cmqv$xkZTPsm58AKZhw z#oU$p|6JO;Tl<{oesN=ae-`?fh3I1{(8tg`JRQD~2_DoZXkU{&kQe(7sOOBn64dhq z_zm^PiH@5KG_B)d$1&~mBx?`sB4s@yx(`Fv#rU2C-wCEDK$`S)1^i5QkYvJ#C*gtZ^ zw`eU(^?3p|-Q)c1{wmj#$Xg8^X+A)630emSAtQ7%_ITl!w5Nh+o8e=5axcK0j{T$4 zx7~9*EzG3`NoZ*=>X?Yo{G<~wr;KK2CUE_94KN_;TZ(kq@*pEz7`;I6-M zued8wq%6GdDw&pnv3>Pq^l^|$a~k@#2l`#i3Ef8>_-3v2F)H8b+g=k}9Np7lYw{)i z4aOkWhoPJWnb@z}&^KZl#@EC}Ww(udAmh4>E_dRnE^*w^Jsx@NeSQYM7qKT%zB37XZ0?D$yI-t1j`BIM?-*@I zwZ3+bLt9Gm-E-uMBa_jt^JSg}v1b49dnc>?xrue#Q0C6pm7j$!;AfaiNk5Z&694fz z=}&w<`YmWXx;#Cyj~Ke&hPp_NHJ$mYbYg(E@HJ*&zIeFgvT(76f-x{d#G&Oo! zX6FZ|dj7UiF{s;OyJeW10ey`?%p z4}V|X*3?vwhiyZRSF8Nl*|TwzXZD=z{Omb7xj8j8HF*Wzyg;r$J9l#tuWj&nYv#-@tgWreo{jrPIo_Jt1+xR$xwW+g*@5buKp?LW_jvPgKOd~E z(k)(m!*!}Gt!o=Ig}zrQza6l7n*4SE{a#bwdpkuIUpzYdhtBUM>>Pft`};}vjYiy9Y82$vs44mH|JMBwf!Dj-v*f1X1ZIBc)Fz9dY#2 z$(G*(NWWi(-lsD}2b6`%P{}-`zD60KqS(x7*$C4?^mjA%1_3sD{ad75O2a`s4l(_1 zi74#1jLl_?%F@f2w56>qB-f2aG#xc`GUR#?oylqFXNHy&O3VaY$~5(4%kt67bX}3Z z=z8@ashR0+C4FMl8_<|XE;ct~eUsun;6m_=_>7$N0r8=CykQ54)9uUXjcVEjap^AoawkYdfxzc$N*t*H0vV)et;M;8Gt~ZyK4OPx`l0Pk(GRT`g%53C z3Lo0O6h5?lDLhhN6xW9`8g+Gvq3ur54{dh}AKLB|KD2!)JmL=& z*N00){6}MSbs2uE@n6BOlDV(e7+vK%17qOyyZBi2fMeoa;1P>{QXD>CkHcpy_>6T% z>QRrSzmj;w&U!4Q^s&x#oYkRw{6&b4bw=uIH>ZCeO=zq$;{S5qg0!^~k2E$dm)-*~ z)*0!S_fa_Riq`mYo{u7Bu{J)>^trCy;znqf*BZ*_3 z5kHY*I52w0&RA!}uWEqN;gI@7{7~zUy_uNx)f5M(IY_Mft&T&V9tXca4n7cv|NSUK zEV;ME;Y07*ibcO64*zcAPlmD`H*uVP3w*tiHp##v-YA5w2cp+`iF797blCamc_HDq zC=z*o!Jy~I(Ino(Gp7$BJS+182+~lw4^LDxC4Eluz|7`d<9d`W}8@S28)4)xCcqI;w zXL&6CD^*aQ>ka%y1HaS2&31wPL3xm#Up44;kbd({{-gVCIXy&N<9fd2<_sD?$MI1% zyp79~Y{PXqQ*HQs)_XnUq^If6cg4Zu`G0d9dM%gy(DVnbKeZPx=cUUe4pVzEaZN&Y zAU=08VA_rFos64yBfNugE!WN`nbS4i$#Jc}#fuj75Ja z4t^>QZnjfXAG1B0cm_L)UC(9%zg4Lw&z%Nt@|kJ0Yuu}|4xfRW{b3DL*yZYe*j~Sy zp#%0S*AZN`KNDVL;K>{&e7S*Zzardc;2sVWKF`224E*Z`uFFpJa}B(}pufSueFlEB zft&4OhJkCI)Lv#9xGp>4X1}WalkmvwPKbv%FX2}je4a6IT}Fa>3_O#=@`C(y5FfKY z^ceV6ibS4$2L5FOuQ70QwbEhWR~z(tJSDl>=9K)TL2vH%==l=S&o=nHVbJFq_`3$4 zXW*l_eG#901J5wuBS)$iIK*@UiA>8zT`gu&`r7DpZmdpa)5KzCTH{N4HaMb%! zqH`e0d~piBNTs$VK<`meZ$Yu%S~4V?e7nQyP@8~I{1}PUq91fqFg7i}3BpK(@TNw* zrzOzLSz4NE@Js1gLvVT_3m3$omMCaj*9E`<^5svMNqzhTyRAw8Oq)33wJx(-G@`kY zweW-IRn<+}ra*=&PYm(PbfUp8rq$aMj6y(GvwxMpEzsa^sWWp!GXshgO@d%XKV@$X z;uRqB?E~tC1uCvyQ4r&m1!UlsK+umj2pAfG7i94pacW6V{Jffe(H`2Uf2*!dRU2yb z*GFLM7wyO+e=%O|uMWyzt`i3;xZ;M=Suypp8l7gDoCrxhozPA-X~n7|G3i&)UMX3c zB|>q4$)ERApgO7;Qdj!LJ}RZDT7Z^hk|HJxP*F;Ief_Fx(ha|}LAvdC=R=Ix8ff;n zptMr^80^@56&FjF<(0pV(?1o(59K01?^M6fR6oy@zo3-ArR1MOMt%UvKV+1@T9m(E zD$31I#Xge^QA+oySl)r!{AKHFof7)HM%MYNOvC4lF7fR1_;>jmF#VSAUam&M$ zPrG$?`FN%#ru-+E>6=f>0hJ4yBx63~ZELQnD$yspp$aCamm;WA;>=;oW zVfot6$^NvSiYVok^B_=+vWc|Fp|&HDTLJV zGH8lg!7hIfuvq1Pi{ zj7XDtaisO9`lq{1cKJVL`F8*RE#DHDNz9DHF6*f{@_j7-|FQQj@KGJ--S9cP66{Js zNMgC#Mk@?qS6qx_aZ&12E3gxgu#K_Y*p6FCAQ=e>0lEZS--Iuzgm8jvlGw%xkhrZ@ zHL25p18wqI*lAxJY}eFon!a_v2s?c%ED{@EuoRo<{r~68?9R@fH6(4m{(j#t1KM-W zGtbO3^UO2P+@DeDCw;D-oAin1mj4k+Umqhe876%;GbW69)8u5XF8>99oAj>%%#FTt z_iB7^2;-zPX+>OM#9QP-|8l@h`kYsBqklYyu_TV^`EAnwC`I@*Dm%CfwO{8_$nQ#* z^i!pp=`Tm(-O_)vq+cge5&tpMe-#3oFk;uZ&<_D_(x*;!qyGa*zl)J+&ZNa^X2OWR z-Gx47)ug{OMgFhOV=Rg5+9`WrkrA3Z+5Se@NKdc=8u*Er96&w?iRwpR^euk4PQ7HjyP4l8Gg zI=e);vRU!|#F-;J_YQvV_F+FU_u>YQ72y1-v%eo_`NbJlp6B3s-1o;XA3=Npbza1e z^BXuTQpmFtp@&u+E&DFcfZ$Aj=ppaX$swE-n{Soko|;44%bNij6*lsS{mp-M?w*I6 zU+6sAY>h1K!Tx7-;{$xwV()UkZ4cj{VO2F@Z*o5NF>^0;CeqgIxAJi2@`iob^F4(8 zt-j-_BfIR3o=%)?x))~&I>Ad6M4$=#otv=V8TX{*`mUXK;xKG#Ab)|Z9e*;iFWov@ zjkSK5d3i-&Q}{XLu``2hLbk97U>c;6DtX$Njfx0YTx-YRJXp5OML2qQhX zGh#G~ur~70jlJd={s(xjp8VQ}Z@b*;-2oi(ybJsPeSeO<=;Ev~_=z(sgE%`tKhP`L z=#M;HJ>5Ec0O=`AUr|b12!-k1Qs$L3v8Vb3=!kQejPt9ApJ5Ms?)@94^Q#`;67-b= zlW>+Ggz$pz2+wppvd}6ePKWK|^`rrepGvqdy$kX5A^lyzQDrRfEZ?RMlCG(ab% zi^K44>j0>e+p-l5pYjC_TE$8c%Hfoa?LZEgzIumT;gDDRrslR{W;(p z&Sx=h@cd*3(#`$pjo9bk1RC>jwiF+y_UYkC$r0Isp=!svC9j*i)7J|1gL5^_d^@eAW?hs_=p*s#9IcR6~?1vmJ zfQ&o~894wr!(}4OOOU67kSE;Nk{iBu0piaXW;o1e2TqK$mXgi{&&ZOOP-bC4KV#TG z&Z?RRxk6hM__2UzoG8S8{tE2pufTr(>YK2i9cL#fQwy-?{vp^CX@tCxZ-uBwLKaYm z{EeGN!Z;H`n*ii-BhGP@;XEXDP`M|5wp-`x0n34R-Ive0x+jY7M#w|=ebpm7P!>Cv z)9y%qarZdXRmAU?Hb=VtqAaRxj!-`+eUVZS;PLB;4vn!DX(vCvljqBFqC@Ma|Bdfg z``$ebdlqkbJ-x##(t3xsSvVi=>0Ncq>is|Y-h)4%>N)tvMEf9g)xrOhpAr4}RDbl1 ziN5IRZ%>F0Hz8e+0hYfy^P1}1uhLtCfA-mfZ#>U4%dj6q{q<+*2bp)CKRJbX2!9jj zY_QeoB;hJ=9~)!iI&5^L6@G|!hTZQO_zc>$-9DUqf_?&cZhq^fH`t zX3RO)ptn8bNf_tH`f=VLa=AN;=Yb&`zwm|&%WyW`4_FiGL`Bg+jEa zsCuLtw2pz+D(HbQ^gtMTz;kW*1jfmMO6c%={npu2@SkV@$;iFX9mJ)qz2Wusqu(Fk z`AH0u0`pK_70?A9JL5zX%BBfr)6`+-HeF`r-TN7*O{)l6y&GqFqN0qTi&!?RZnD5@ zU(A+-lHCi{IqFEg-VM*45Zwv67;0mG!a6AG%nFn>>I>@*^Q_lRRWINC9Pnj*Qgta- zCZNH71M3`NB270=#F$4~;%t(rTM2bWq|fRdf=sjiux_)zM*CB2!w*{?1l_4M_YrTR-haDu<(rs9QOy^-2`_CS2s4!9-^=&;|bZ5HI_2jC&pFq6~@0dj6KI;~|8hP70$whG5eKLjcJS ztJi@?M!g8fen`P&pWvBUmZILvGW5MPtH+ZbarzNHJpUYW_vg-;Xw?px&$0Va#^~R^ zait~Xn>-zw*m=}OoTOC%-R#fufk)QXH@)4DtGdPhF2ag_Hf1^{&t|*!UN&UKY1df4 zRNXptKiVU-XP;EBPTlXcQMwGM@>b{KnBE4Iqr>Zfu-8CdcYVnkX-A)m>1A3~zZ?eN zgY_+&J2o@~v8=nf^$rWerp>Lv#+IP-A}&jyiSrfn<^}7wudm*Lsy&em%E%>t#O^nUATMWt)5!u0UyLGj7!M6J5 z+a2EWtG0CmjJLP62QQyfCwL_?PR=6}xU8aneS3Y~{NM&i1ahMo>u^o{#*mPV*3BI- z=wBZPp)i7w8>iG%Y}V?I+921QDKl~07z6>DVV}M^?&ZkU6$;}DBffPw99Uo5LQ2?C zu>FpBz`5YoTyVFsy|K30DeK^-j<)vTx_T79ywSr!YHr-r*q+LhJ13I;S{y+lgX>$q z*x0(cMO;#&$(gV+AFN&9y1A__xMG12yLFp8TIy<1r^x>1#tjYa!B_>^vRT{$BD`uH z{%mW2L3|2GHP+!#9ou0=A9p;|Sm|1ZkeXxxI~L-qEs!_c&lzKwW)nykrEUoZCbYnNtSVTy?v_T!$ZqzYw7< z&;qD$PL+g61UKIvY-O5|uQpU>9paR90!Rs&@QR7tW=F*+Pv=tzb_|781NZLCMa{V# z1u_@aTxW<@MoiI$#xK@GX4Y*4ixlgeI}3uX9W5;^)tE#Z{&nC~O3#+fEeqN@+P2iA z#_CwxARil~%#psTd7=pB;;IhZf<&e{s>`WcRDr?T_MpQ`)KJKQBmBr~aIRDFk$Cb*$g&W zDyF$#m>aCU9T($(!0oKbLELtP&lXEDN`9lPx8Od8dTUc{GvxrRS3V(>gjC3L=gbYe zVZ_M&G5kAP*45&W^7?obmWqn$qmpliE>;PUgpoFC=ve)d;5I~uokNXn4HO2MMio>O zVo`A%0gjhvYyFmH?BEglSqcOjp0Gv6BOxufgKO?5ZY-59mz)u>)EKZ)Yq~!kxmB%Te3vC3$29Ks=m$5qwS8C_S)@E z!_cM`q153TlPNz+TbW>#olwylTqH_Q%3Tr@VCu+}$1mkaq6y#|qeA|U@L*hZ+m#`WkUwYyY#;0R7R zEHaxqrV{Fy7XU$bx5bsD?3p3`t!+Z6bpD_^VFc0c$RpS({It$hLRUA**J&F?r`U-B zO$+Q3eHvxIz6sgEZA|Dlpt~T!s(*&ys4U>%ia29Jcho~0#NC{> zPtU3QGzTF(D)4(lBf`)K*n>Gi;dEOgTrcGxo!C>S*`^?zYpZn2_@nGnU;>DKYY2lI z#Nn5Z*Gvz%oB3me>mm&9Q9T^u#QLT6r0|jJv9xP~jRB1B2NHgS&(+zxJv4Cf zgwL9d&!0-a{d`ts52hs=zj%WAW*ipj!5!j{mQT{XRQgrXPtqm4M8X>k_-YA%O2LsF z(op9oItka($+$XY7``hST#goe!1DpZRhT{FkUJ;cM`Spe_n0jh#`Bs>oJ_|V2^V?R z_|GstxiBtxBJ)Zf1tna`330g(mX2vrX(n8qr!e7lDe%?#sjC@}Ob_Yrk@!MhR>sSf zeosrk2;Nl~Ea;_lXT03Uadyl^aBPL>r(_)r$5see{}bI~kU3{pY$E*M1YAG8=J+2L zaQ*bJ1E=h&m3;@|{N66$awC`K@e2V*CJgt#1RN{YhWk$emm69%zheSEU4uBU{Q}P2 zc8Ts00p~8bM0cNnb9Y*z+bZA%i9meS2>9hm@aqMfJJJ%}9}2jB>dEn6AmF-2ci>M8 zICo1Yx>Eu^FA<2ZzY}o%bd!Vfq=0kRPNI8Az!xO~@pYGgbD25OH3@i0A`oA<3OIMB zB)U}szAO=lFXzl&W)ggxz~}DdM0b;b=OzO2b+v$V=U1Y;Qoy;(HPLmTetEQ0YDc7Z zH=Z7`E7t)i_-uh6Pk%(>^YMFICk`{b!s3I*82Re8lItD4yqawqJ=E{s)=6@`bJCMs z?;Ln?{c_;R^~-@L*DnX2T)!N6a{Y4P$@R;DC)Y0r9+yvkE9XtHhM=J2f3iORbF`hR z4UA)=Ek-?ZgR_3P!T%1bJV&-+dOTGr;L#ND^(o-Af#MebZJ?R!iMMO2$vgmfo+n=J zY{%)2<1fz>FW+ebioKPHKhLAdgX~j$L*QR7vEpai*TP@7?V{r6Ucfw0ynPXUCWPKB z;)%B}oiawOrvpFUepN|$mcWnevHcSMj{-lgKW~5hx^fVgy`zm0e1&#fH0fa(T+ zECt+)_}%bVrHKFa6!=f2fd6mg!!3T=K68VgNfA#r`Kj$pRpr7x&w1KuUePB++CRWw zp4i5Q7dVAK9(40!BNViMj<r%ACcdRp9-$ZL-A9=`y{@S1qFX!!UOWD;7`i$X$D-y6O?fBN6(ki6NKyX zLp?x8xGoR#9k8(VquvQxB;hPC9li|TbV>1Ra6SGm4PNgA6~Ek2MrWqSfjYJZ*lO&S z0Gzlv{Wejkwdj7P68yHdonTf)tF^zzl?Ii$s} z^Ygz_E;`@za?$Ifl4nzH2ef?Y_&<_x6aN(rzec|E@tS-mevN$ReU8(x%$BKQu)q))TcDK z(({DR)!ipaBfMCHuhHVUQiC^Wa8-8nen5jS*6^Ru;QFk{4>Y(gZ>qn|^eCP) zI*xzo2rqSB#V^l-(-E%EqH{h_!Q-+ox`C0h1mup|)zw^0 z=XTsA53cgNc<{`l3wAQpF^=VAF(Gp4fsIctVC*)M&_wPMUVT%`Hmp}yUtQmfmH%t> zjl$R@>=GHRNP#0T7R6+^AYk_qvhVl;QEVK6JtMIp2OrqRsPVQ#P?un=&et#e+;ulC zNJ5iE;A9*{$rOM))kp!qvY=k-NIsFN2*9!lL7$Nq#T=4+ZT%0V#l16 z_!U3J!m?D6FfAos4f|5C4J9l~6)F2t00_%cMfj~-==?ZFr4p@7!B1G3Do(I91^a4D zJ56jAErbuSgwd)0b^}zfX*+AJY11`st`Si(e)xY{ze7n)VRAy9fI~mlZ^_mNec*+Jy z4L{&WpR>p&efE>w=vPVlgYpS9;Y|8d0X1Pn+%G#z1N?v^{qguS>9g-a5@2J3E0IFM z^y$u|#Xge>Bfhd>q55N_@5i4>{{;{yeN%qcNcuO!Pj@D*A0e;_Bff9G6KbUlO!^%A zne^{ULBCJZf0T*SoJnh23i@j#{oOJw>2r0#r2nv_Z}LAPmmDs{|A$i0AC&a_H2M== z=syU;%%aKv+a!IJUKvdiuR9Um&~RbuqKT7)8ruI9T}MPxvFK-p9(p1qyGa* z|Bwu?9wx0kgg0Tt^~u3ZpA1O))DfmX@h~Fg%*YE?5^z-p&(&rvGH~KeIS;GaK zN9@<6#XBxc7?Fo0{gpB#=@;P7r2lom+~~tDhj0%#kJztC>tXnqFd{FKgYz1Gz>)st z_%rGAZVfm3?@0O=(mxv!-i`ilN&g)Zha>$t_%rG6O+g>`&kJ`U{(mh6{Z2Uvq4S^f zEhha%sq~MUa3XUwXXbTY3jK3j(%17JMm#3{=Kyo#{}1Fut!gJ!5={C(gog87@|n(KfHgD^xr~QxBM@1p-+)A>DwvF?_){- zYJ}09N$cYj^=GA|Un2vP{{)%zm!#l-B+CidEW@jZNxvus|NA6;@|=$JIqzrEpNaIl z@&74FKY}p2GwDxHk^i5%&|ij#O!~Y#j`R^tf;%JW_hcu41+EUsli^W}32r+ZYdA&E z`AYttfbeFXL^wHls^paXBfPxV|R%TI+<&##&ter}D30*C4zb|ALZ#TV(j<2oS-a z3a|Kg9^nlVBI+7;HsBg$JHq^4jXyIyW{_||Ic|jQf;QNS7cU74ckwpZLYiZXN_PaPDJdpN^a04!m{&wg8u>1YFnPPQrMuZnc#P3KQUh@CJjxM zBvbdBKR6W_Pjx)J(k-{dLE=qiOM&^#KXZ;Dq7aOy$+^$LpW#hC6OrL!d{p1^sU93k zGQ7!9an0FT)xo&;jOl9zbI&#UC z#X>~}FJ4FP*O(p=>5)3p>O|%{ZOik3C(T>sebT!q?FVUA`qk+Vr2i=WBp-Zm5bnw!TFYUT4Yi4NXZ8LYx?3+0-^XD_u z@`L#``MdEi5S$jQ31)@XgnWfJ7w#%do3}lb6|M{K2|pEHHgC(kcNRP~Z)pC_3v(8h zEd2Sx`B$vIqWOwlS3Gsai&vbvB5Tq7MXMJzFIrU8T$FXip+&nEy}l@|=!v3G@r#QC zOWs+$Y{`}-eM<(HOj~L#zIt)j;zPwl#mlbz`IU=G?kc&z2>(j)ui*Xy?;P)(`)A)j z+lzlYzPsbQo%rYdp7(ov-?3vy__3%k9JV z_ji16$07TW=es-p=E3i#AAayq`k@D&v8ULRc1*U@y%Qd@r>9T%K4$OrUozp6%=@zT z`im=zD?RwfXYu#$d&cvk8hoq1GGvu#pv^YS9JP3v&i(Cw}b6MTeO2Z8hn z>vR8&Efn_{B@TA+~Jgg~r=6T}rE1rH4 zaN;Xhqh92b;}$*FiZco>mmp&2mK0pgNvU#G@X0dXpb`H}`5iLgbL96T1FmFanE_XG zWDx_d=&m&2oNuF3{7~s!?to)=ax1tBUnBh$T=Aj7fGa+za!~jR9vfFlKC5(g8u2JT zbQ$pLsXw#2p|iako|I!JXBBvD{23oVX0agn^ajJTh;QH(u{ z-9mAXpV(XFY^uVxuf%;*+ZU=F%8dS&kFOwHvKE3(4|d+*UUVL@U$8U5 z@tc2fP2hM(oJZ1cT$4CnT*~^S@Lfg>X84>G;g!6sxj=ZzA?YhQR_N0RgwyxG^IL*r z&reC1$;0gu@f8NroGzmT7vRs#6X7EgsOG4%03(l8_-RCfOV!6lpHR39^|3z-ER`oG zg!8NRDCsc1o48+)Fi9?kuEIxR5a&guUxEJ!FK+p7kn*RbocU*aqQa~EbB*1k4Un~4 z7D$6kFdtktGsAN@*KzyB_wh@MN`K?|rv?sWq>G4W1m^~9OWg?)9^AL~^w?jwmRbHL z+Si`twW@|-yL#i7BGE=qWOUejNpXd3pQzqpZC$;iXU4EMt8ky~Yua^3{*B)r8>_0x zrk(E0!sT~I9)1(Hp%>eBCCI?k%;X+Ft_f-ISfh>iS+Fr)9{u3P=la+WXBgtBG@Smz zv|>fy2iw=APujJ(V*&Aa%Lo9ToN>!vp_=4c!j8GQ?B3&Xz*X`8oW=Zv?Ij(d@| zri8R*6wZ=q6X}X9PDe~-L7sW{ z$`JTl*c&+-ycXlD8>~^>uToiU+f6IvxG7lR=|vg?=O$h@qVBNq`65RrV;lrq=!Gnw zb4ZWRo?Mx4dz!wDw7l;P6b^bP54trquT$@*w|EM$C~kz9>#&7XBWcGcGDoz76@3&YEX{4{c6SqTiCICCq6_xX1b>! zo|2r%QP^-7cQp9yDV6(R1HB9BKCq5=EX31%{36qQ4rx3KS`)J;WMyXfedEWar+Gbb zdDio=7_@1d8+xdc_Tqb)Q7+lBP; zKAVSZ-~uP#nlQW$a(B>^d19A6p(o4A>e&Z>j&t8an!@SU$$1}CFRPqvE#nxLbpyH~ zKtJqdiSbU!8TwMY_uB)XsmzT${AJKzjk|3&;;w}e-sc{?_uww1 z>*XER$pXu|ZaMxAbeA1GxWno#0F6rAmoo%@uxw7jUOmh8IKEZg`XqiF2R{x=e)t7H z{KMo&C3tafxpkI2Sb_Y}ZoD7xLcn)=GI}b&qkJo4_&$#P?W|$U*MkRH{kTJt7Z1%$NtBlz}IgOP&y~(S;|QesR~sga4U+effV{*Y5<6{nmsY z&(H1af9ajje}DS1t6oN$>K+JQSO37Q>t>hCZh7+3^(|>>JFX%h?!`Sa1s{)9y=Cy? zh5u<@JScc^!*9onG=mr8|I57i@C!eLKCq#WJyGhEYTS`U8Tl*R*RvG$h5F_5nN~^H zJ&{LF-Q(LEg6?SpUlTfk|^h#c*JZgzB#-Nd_}#&EyFamb1dIXLYtDSYeB{Nggd zRkZ5lo?C4@QW~-YnNx8u!?|&+^OK>cru0)zf0kjLodp>@4H(wK0xx)`_MEsK_klpZ z%22oF?dW;DvDP|y#?$%m0(%PT-INpGIeq8D8TQnkX50ZZ(a!F9r0o)O?4$M%-4ak$$GcNpcTTU((gdY=M3F8_{x{_qRWi?)&V zSn1||$gXND$DX%Oe!SU^{%V6KI#TV8p8I@S^!@A8qv!7&hjL8Ay*J)MmL1FTTQJl2 zd6ea|o#(lbfQ5?>O4!OYG@AAK|{4n-DkkxY9izf&L{K z)}dP5mlOJU^CS6~>l;9yB7ZXG?9jG{jzk_l=bhF+;+@g|E3`xJdoS(BT}nqU&5azr z8*=p)(zL@nH8X5qR>?lWP`XuRLmqHP8|3Cv!JEJHUfT09+Pe3>GYWqt;+leXF*3?L z?DI@+ss%mtsRNYN8pL^eV&o{>0F-MJ?w8^4a1YZ-T*~ZR;O2h@bD8i9S{uH3U|i=~ zd+wlmGd=S| zDL-L*TIJ6?{w523lo0ZI3UzxBe15|_UF6U5PVdwy&__GAp-fY;5TV2><&n7S0w6jzQ`4xk-*s)EMOfdMX>1(!QwN zf@VG8;-|)};;Drroo3?0&37K+EOMuO-@>P67xZfwG%*eP35Q!LezJqYyeI}joICje zVQ?Z|m$0up-c}9=P+D3T?}+rva`6ig250(_<|65LgioDj#@Dk#0IiY!kb4-C$=>o! z&o|N@8Mnvx)r_xYeLefpoX7GW5A2=t#5D4QXI$v`P8Y=AZV7vofHm2XM02W-l#jC;%%aP%+?=M(Te18P~n5M|3!PIjs1(9@HV0r83%mSit);;do} z!7FANVxO@WuQ(wU`;5JKt>k>s)9WH94m>%(4m?$UljX$0PnHu0o-8L0JXua0c(R;0 z@E{)vt{q=_o;bd!pMd=_%2BsN_k;{Z`=0t*h0vq$dr`y_mlL7a0Go$$&-29PO6Wtt zF}4Rh&S# z9TD*a@#eUQd|of$@p`mI!v7DRd7gMZnlItE33$9*lnyLKJUOCnNJRN~Dg_)(fh#`k z+_}XwJq7-z6!-wg^s`Kgc<>mBO0y1UzUVGNz!K+G{C3KB!sQVN0a4{_;w$+w@fT_F z=<&1dp`#rT&g&|7m3(15Tt8E;PQDPX)>#OOq<}Be;CehY8eEU(X$hyjm`mh4ABW^S z9iuhGqN_@Rsp48$|c_&Cur_P7fTKwFXshpZi zXZ%YP5YIjhUyn!CS2Mq_Y4|#yf1U!KC23I}7Hf3Z$aluC)2&GX@04&eo?RNgE^n$v zbL}dwo#M7m2%jv&@=+z<36E=`_!=(ZQ#E|0M+uK>IkkrE*d>{+;SXr>$F-Sd4Qgl9qGnf0n~8~p6{TD-zp6r)Zm>Oyg-BR(crT*xRM9bP3V=u1jqU< zcSxHR!YqojI*3I9X~Y61Jz%Ru-K7J3T)1TznZWV^Y+bY?fQyH?Ld*rezP7#CJ%kfg zH7*mxr8|jsF5;A`JGQ_uin}*=P`miFCs{PnqQmV=36?wBZ^up?mq?H}X|{ysLHL@S z!nOu%-hpir!w3m@iv2v*xXA=8ZEy)EGv12(@LJoHi4Wag2gt$v2`rVsj)q*e!2)XB zI*kKkS%8p53lq-sj!k^R3`VIkzaiFqs#|f3)Vd~Mia4FM*7a@e zj$I7?ZeJ*Vim*JpoolqPsu8z{L0cHxVGAQUHN3H?*ahBFUtgDKF9Q)emNG=#!YGDn zs5DvrZC?K!a-Tf9u&e>86uxcr6=XGvk(z`z!p6lQ&P&AjR-b9=MLtuVLybs(rH@oF zGkmIZs5diVaEeXT>C7klGjvL~eIEI9OaG4?G-nJh-}x}k4X9|pUgjdk0$*=z})CRE$OTNB+!I2Y5g0ZCX9%$xX@=W z)ucZMblm8_F6nP!WSTQ+1%YS6h(6@Pf44Q>e*mr<{nb+LS8BBRYSKF90wdlu**NR` z=cvTY|7QSmqn~hh2qTovq`wSs6GqfUlD;ng9Oanwr%Cybk6aiUPAY{Q=PUNBzSVOF z67QD&92K6PnlsbNIT{m2^ctCd#ed2#(`cr@3otkOK^dtUZvjm>lh*x!nlK{vxs)G4 zCjGwz%#HqhR(7}x(f<~3+~^Ou&}aY6q<;=DH~Pz@LRS47pb2NvIt!=?BjQh8_)l3j z>AwKtZuH-gLsd1dWt?;-tsfz<2_s%mc47zk0mt%Z|I(!YM}WD}pOyg+I3=gfS2C>| z;NeDpP}0}yFZ;13{T9I7=!YczM-^fDG-)*gZo-HoyPPUf<1yt;TsrmqW4x$$$H)2gsR5D>)WRw7w`6#!ZWY*4;g1`U ztNbg(Z@}No6a8+MgPjH$p8UHUe=58x*Z+XONt@wckyA)rvK}*<*)HLo;Xu+Jq0&W* zg2AFi3BOC0lmvq%OG=gng}eAOY7Oz}EGvREa28<_xSoMEqA>orZzY0#H}kQ_W_6lX zG6CyxL%47LZEqp=h)ir6>g~SOxAn3chq1=E5bKJ*16JIm2W~xq zu)F3QpAp92KBS`@-`sz~cc0anXD#l!mEY!C*S(gf3G1HyU0A1kA9=VOdmXr+rvvM` z4QbX5w^+WW2-dgGVciL9TUf&i#MUuC1pa_+9U2j9*3$r=g!M0H-5RVZ@p%K4rCwjt z`&j2Hz&bGLpq#PJ8o)Z;)P%J#u7fds3HxKf*8q6Ma}Qtj_&Wg3s+{tI}eib|_JcazcfxkE98XvyFqsdrvwfZ3- zdtSiWYFWBf)CvCm7;CIUSPx%yN8Kv0*Ryfs2%ahp?xt+VTx^-E>{9Rka;)ec<&V{dWJedDhm;k?v>ii98&=r~K6( z&y=42dzQc2?eX_C9jiVPK2?2$`&?F^tv=F)yqA`K8yl7(Olbwe2>eoiI#jwa5$W-WjaPz6DwS1?t|HH*PxeP~)Z}2kq>NmoSCo)V;|~6|(MO z?kF%1b&Y3wHlaTCV~us^IIHAC@cr}W#|}S_eHfH8B?l~X-}8~u)83iI(_gd0lUdKx ztvuEf|88r$FKCrI`_KZhdh+bXCChxsqhI84x{!r=jT=XXQGQDs3rGA|2QNg~b6q|I zdk-2>PftO9?K|?XR5FhG5SaRHPcOO)fo&g+9U4NOxetN**q%0DR^(_J>WGj*mPM8&^r5e> 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≪tvR>N1^3M~5p5ea?Yi<{yLY6ZWF~*oLv+a|-o*%>yfTGu>=YC}-|R zU12+NCFDHM;XQHvmGx{Ncpfk10P8-_z-1k0oo0RBPVs`*1~&eZx^t%(lU7FNz=woe~S7?of^w4ODFi+kLaWD58uM?Mm{j z5bBd~m#Nwi>H=olP}Gm^*oGv*or$rIu&xwcf-&(7qX6sO3d)i8H8@lARcC7b5ww$^ zVyxxI=s%GT%scZ#eEfSoqFv?vbt^%q$^>J{DA|UxPJEFzl(c6*Di8A%uOMEY(HBDd z8I>ho$P!a-YzK`@xj|WC%8l)y(Ggw-K3j9=UH*v(Eh#J&|CLiH>nKnNkj7UtF1i~Qozsa zA-@VCzZOD%wcz~6T*xc-ciC@T$bKWf*=Ufr zYP#o`xmnM>LH3bYU&s&aBXx-SKQPGqm(HL*c4>Vm(RUK=2E*MT*cnaV#@$L7>q_U? z68V7RhL6tI!o`!rPL8|mNDj+{Mxz2r-9R-I9pG+G4%#v_57-+F%6 z0|zjdV|V8DMwPM5_(x;2@l#_jc36C9oHhD6ava-`;az;G%=yedg%h!TERp!+z(d;r{ozZ#rD(sJ;*?y7|VI|D1QC z(i8sRj~`Zk)&KLh+gzXBy8gx2Pv?H^otx&p{Qlf~Kl|gXTYG-<&TBvHxZ$R%@1MAS zRd?Bo+Xn^@zy0oYX3CBiTAvS(`NoS^{`+qxz1@1_kH!x?I{ptE_V#=Kv6ELe{j}#F zY6m(-U-nd=&aIRF^YUkg{;GIt(TA7*@M{~M`0YKXvwuA3(7s1^{5tEi!)axinTf z4(*)O>HNs`QQ}9QkAC{`r62eGr2dnkpG^K_@$nCik2ya3_)8~7oG3o=#K~bN3r;Tm z^ysHoe0uAtpPw3es^nDaY1iqiPCGwyeU|u{uubo|S?)15F=jNV!^L)aE8_uU)@Lwpr;OrTKohuHf)0yCOJJXzg zXUJLW%yi~E?{pn>`ULw_^hxhKyzjKWPPfb5$Gy<= zAD&T3H+ps^U7B=F(mL-@@1$gJ%D|M-DL1FQkTN3Wx|GNJ4eM9XZ%OKr)GJbNP3@mH zGOZ-dneIyOlTP|$tk#%^--l4tQ!h7+t&cg3!lG1T^>?2#dRk5=_Pn+EsvemCxpV5` zXIA+@LyQ>;tzV1lbIxe0qGOna{F~lyhB_jNpRvqwfU(Xp zn&F^pXr>mEFK}p-7IUS**){HMF!l$7(H@H#DR8-Iv%{%xp9A!fCWip;3d}X2H!S`Q( z#*RH-4AvD{S)?K{pDx2rf75+5oyx~XyriiQ?fEsNH`W;@%tkEyQQ-R78iK!oVN4r% zw7mTIrpdrBRygB`(}BgX;f{qX&dEZ;gwT=xYUPuATG4Ncm`5zQva6Fg_p~aE(0U85 z?9xaG7>3XKsSMYq(=Z$zA8m0T60YPKY?^z8W9^MF3}4Up)e`4kbsfJ=@})|T;?wyO zSLspsSXm^bo4#K1KpcEVf|(wxd$s3+c&6z@{6jYr#_E2dhRfxG!rg{A_#gV3;V3$& znvC-pg;8`+_)#`GFjhLK`_im*m@cbI#J!~N42ehFOWd7ehR=NICqD7A8=6QslJ3Q76yE` zozPW>-M_|6yqCa%kq zX&NrGC=kjw8f!QzFWh4*i(0r-;S<-xpD%39y~dP{5o0bE)i&csSC5(-Z7myKxrcYr zVq@v;xYTap?UivhjNZo$vvTXCefML0OZuv;yl2^*dEv@=)#1uJ=HL|4D=vN=-W_+} zyR`D&g^Mc}Ro)&+*X_n#^K0(Jt$mgAZ=YAWtQzU9zI&mzL&c!!FACS785S?+f*88zSi-)+WcX5qkfhzMx#Atz9&*;~3eYse!$2 zET2LXB4%yzL%JvJU5e!hG8be@6`Zvv;BVtMX_5tZ_4!} zR_-2A)R+Ve^N0K0=cjIT@6D;l+N2I)kGal5jD>O@%srTEtv&m*ug~fD2;)Z_tHPZ} z;!ZjJUEDj3@h4)u8$r2I@#4J43Xk866KhEJ$hTz663zz^_Tw6sT4z6$gHP)zHpOR94 zEYZlg0e%)E%npZl|9VGKS@^`N!&gi(4(-Bklap)Az4f{Hd7Vl7_pVvJ>+LnhA*_o( zv3*V9u3dQNy(LLpf1hI3)$eKfmkJ?v|cC*JR&?kNMkHsB}5 z`dH?qt${moNLO{g2=9I3{DZ^QHK}HJQDYGF!F)|eF8Cyz8S2Je=N*4S-pB{wmBVYC z?lN`WI?rfd3z{V1z8i0j(GW)bNMm;x;e=B>;3;p%RHO^4xsPt$2pj2d;JNLnHogTi zz3L7$@?9AG06uE+JYLk5v<7)Rm{VVhJY#)R$2{02;qHXe?Jlls_IcJ9bp>Hh_o(B( z60F-US(Dx6!4rNOgdfD83;!OZi}_|8&m$bJr7lJsC5R&zVbBflg_(!E^1iuT#KCdX zHhe>6_qh?52kz*PIKsodlDOj%<**vx$q2uV_hBNwV#M#pFCgRO9vin0cP=PeBQEl? zpb6ed54GRMedLi0uAM>ktq90>uJ;dMJ(0K*Z-ki-cN*iU>>}nFiMuy)Fiwwq6LR4$ zmzc-s=6mq`-5arnDjjQp$FUrT!>+^+_ld^RD&{pOR8Zndn?%}(IS|B4UU45B&ayhh zyz&l4?4js(gC>5^Vjt#?n8teeXTInbI=Qb+;(jgdIe7Ps2z5iY`V54DyIGo$cb^Dv zimL(rbszKM5qZU0E}19c&x5d8-aS3<;yz38L`oO)q{=dBOsF9D$RkhY?j61#vLyUC z(<9UAVz}Tz_jc?Pf}c_meo~lzcXna@62k#)azPv1yEM)P%n8~QgEm-Cv9$I~Plckf z19$*<+h>C&G7n6@kV*4RnM9uIVBCUkIrR?mlHuui2y~-c(u?v}(aQloB2Ib{-vhra zYrgLl;e@)qOh4jsfJStyXe8FVNgB1%EokI`yAsd{b+jq4KBbH9qqNECMH>goP=p8C zI6xcmjxuB(MzO3=7J7a76L?S62lQclZ;3Q}!ePYC`hdQVk8_Dk*B)Rf5An`?B%$1y z58+>yHN#I5Zj!L>0d)_wZAH96a@ zMu7){;DOS;Ir|~2!aFhdmz#n+qL8=am`_sqQe}g11W&s(o`x!CD*$) z3hh7XzW2c=+l`i!fsy+*<3NWD(!yHaqp==F@&AAS9nfL#7oY>%&^FK^+u;oR(SD-K z?^E)gv~Ytif*zju^uTyb2K`R~-D1&&bzjj1ck&HVy33c%Cv#Z$V(|(1LA6DpIC)CO zJ_ePiQ!-CSrkSz{?IhL~V~ss!PGTt12C}YyS#`oeeK1B|*=AyXGbrx!f=u2Heh_UQ z?vCPq#TKk5iB+ZxQRh|udC%pSU6!pE$)CuZs`Jp7nIGPP%X~XfCW0R+6Xl#P&U+U5 zR(FnB>-l=Ep11uSe zh5U$or6XU+-(QojGVqJFE>aIwx=bb7W-oavP}G;IrL|gRV-a42kmXFIxo@(9_F4$w*NV@Eme9#CGG%MdIHIRl z1D%3xDfRh6mR=wYDWhc^TDZA+y=&NCU$KDs zLOD>!XhR!=zC=emo;eP85_Mkof#;x1TOqG8F66_W`*92dYkn)HKvvJikA31l0W;9A zgS)0|Op-Su>_CY3MrLE&q<<6pd9-Kwdgd61*k5_L2fW69(Hx{#?-z;m zNm(QEg0R^CRAErIDW0E#{jv;Wt`CAd!7Dn$Pr`Mj;~+9TIDt` z&hL2G98Zhp+w5O+{iJG3+L>?YIc=^xe~^RvU}*Z>w(~vtZGA)MJK%DnO&Yn(>2vh#ySbHJl?L%GW_$S+E#O3;aQ#jnw557z77 zgLuHtdDV!gMbfJU^c;V_=M}6mZ~hSUQ)8H)LS~YF-1k9Vs}t?<_(*%qzJ8sox2mtd z+G&o*)ImPE4~`e(7?eN65xeCIgETF4*v^+gy`X4J`caios} zuJf0oml^|&^3`}TZZloegFlvh)rvIfJXHmHkw&!VUBBED(~7mMtndGSq!GsNUaUpE zV;zh~tIim-`qJwleM>_uurJ!8td2^)|XYGjq&<~*1i+RRScZ#VBoH9<%jhS zdU4Ylj92S*&%hi5f+yw`@`6~yZh+Q26NY85gW=;znq&N<`9Fa3{WnYl@HU2xay@dk=hYTq zD!*TLdF+kD$9g$zS3G zy4yPN9{Y{xS4HN@eCSiMzpdt%T2O~M2GvG=4}G=0_;zdaFg~f9sj(yWx764X>q`J_ zs}E^ZeZsnLr*t9yCZ@%WyT;L1K8gF%o9d9}S)cX1`ZCfR#Qf4I%r8~%4eV!lot!&N zao79MzhV9P{{nB2FUTK%4R7pV|5)RVxu7q3gJWG*-k8cgnUXgqp**RlQ)ZLyl)uzh z>6hb_v3LN?5*eoqu^h$tlv~X4u>7rMs>UVB4_K4yOTwI^7k=8oH|SF|m15qp(C~&! zQAZpIuY`PoAIA%eG5?5l5>4a{jt!Kd{70kw*Y3@QKJFEB%yh@GfdeT263nCKgBOU! z3i*P#5kL9J1)T4c zIaQQ7;3t5aFt=adK%{x{gcypWsft|4ZY})JGUY)zKwp{fg|0Lafx&mvgW=&~q!QRI+x4t3HhGklmJI1HR#r5%?{%9Z2NA6Jb z?fua{s6MzZ>-$62b1eb;;KcVpwySz>mGk|joR2lnu$}YzsGI#YIbV&sT#dY|xi^Ed z3S+p)x9B5MR}k}z>7nKfq(Qt72{mJ#wvX*7^9H#Qcw%k>YnW)!G z&5Dx3Kn~zU=%`p2d=R5giJ1crC~e*Jd#P+o@-e5B8d4f8>c+dZSH; z`m)Ov<#n-qGEarWFlOi2x;a*UIyL$IspL~Hc|fjnQhbW@Pa|_}s{MYRG{Zb2=f&7I zq7KEZ+pTcNxkRxJ40V=kX_Wg|^_%T=tUM_{R^HpibTC}V9py%i(?-6LP7l^FdOl~Z z5%UAtao&7lJO$@M_hEXtPBsT?EPRI8Yh8pmNl)gvef;$=iE!cfGtiKJb618o7CIaq zQ{XqZ=e2UjNF(=RYn=SX+#fLBGw`q0zcNp3?>Gm^wXaG?XFJL{0m^o^fs|chz6ttm zBlKI3;b~%es(&0^Q&m0C=w`oAUpvY$)Hn0NZ-&LO?Wq1@H07XO;hYF``bZk)q77%e zK=((GJ~KVB)53P!OrJ^rcndc-{a!Gc_-RLS0m|jTGB^P8_&Ai)@RRG zkuLB9>Evr_>0A5NZO%PkZE@9pm1+KT#Z6)v*ixnq7a+PHH?l$kTWv)h*&@+4PDVWz#lq$V=|OY(3eI_&Z$AhGSC` z8rtr|ndlB@Lk;9h+dW42vCC5$TOYo5*O51zku>6*La;K^Hly*}tQ#7Uj$UcwIGlwy z#JXOcHy%PgkaEUf0<->>NjCcbuQZa;sK`n9E>Y^z;iYKFYw%9b<)LeHW>tMC+QV*G0co9~UwRemOo)9f;-1^V>a;U7R0$i#ify1N9#G6?4{{=Y}3B z`Yn3CxDFu*e_X>IfS*gnmn^s;~C0D=GTq5)cVhPprNXhls)d-dB#Qmjuy=EtNBYMqgZzIugdHp zDIZx*N-pa0vAo!4Q1OxH_4p_gDcf{;#IQInY>iW|`#8I)BG9t6yshVFOSd{PmV)oU zwl1pl=4$l$BI&JtJ=(WdbmJIvE6#dS-#U*W-N8b)xxR({F_s(S{-M(+*8YDN=W97o z*O~8a36TG=}3tt9Y46Y}Za?rgxGjwbS$wJve(2IJ8Ajdh3VaUYy0g|PNh7%ta2T&$nMwF>Mfh%jV7MXfL3n3a;ZT-U&Uigk?w<6xe+?t=84 zgYOVzSU}R2cH~LgiS*2YJGh+#%x$30UYp&e>VQ=jnl9%tIET-5T0L(VXfMq^By|bu zs|j%*#_E)_SZ_|&dl1LkD_(tq{5(W?t?Co??^yNe^VZpOEt{%OYMp(|`ho#-j+`TtZgjshU^On#rD3{ebe9T3O zJ%q&K)h+JnVck;tuIdM|?EE;t-;|-gChDdGY`T%D3$eZ8{y_SHF7yido_f(X79tXi6DCcY>B0kD$#8Dm~Fkp930wI6rnV`mlY^)^rmijx06) ziZLyiM8|=o~NATKAwz14Bb>v#q8?H|v%_t*c>1e&%&fdDSl_sO5eqx}0 z|2^zky4W~j3C3`6HsK-Goh0l}S%)=P?t{7YYK)L_Ki+ug-`hChcHSERSrAKxtcFg= zx{CVh z+y_V0yD=^uNH;KF9o^rWi+!6V=$BGfbMGe3x@BFp?TC^)Zd$?>^poeJ?AKTUc7HNUGgjYcE1H(bs6yYpx3m@ zzFw?8kQ%3CU4O60IHb=H?0d-Mza1RIbEHjL244HTy1QOm6Ui}3`sElO$M<%~@x2`w z-wo0Ec={j5QtR@}zT#TSXXJ@}Me4$omuiiN=pW+j2mO2n59;t6 zkcr&Wo-5m+5Wd%fHXcXXL_WFKC>JzZ3mTQ=V*Mv*ghLxJ#%}g2;^~Wu_b4mB2=D#P z$8F?(8SA(Wb;BJPR}ONl59>+FK$}YRvrf6{H*N zHZZPk^S*vq8`jM7H2aX`ZL@4I-WGPAjE)<e|Ln6DN9b>k*I3(1s}7>K zm9b>HTJNaFwYc6f*0>heE`HH*Vy;uu_o3-JT`TJabn|84O*J0MwP~s^rp867E46Sg z7Wqe=5PJ)`uAE~aqF)A_G-Dl9XP(T1Y|_s>AzkaVI-=8+I+tn_;*EW-m+d3hMvDEs zKCDrP9*26oBqzscaQF=H0Qvw21N(X39nUc0y3#VvA7Q?bZrqrM$6QG|(~R=;sdj_w zd3g5DvOZG_knVi;OX?9;3C{2d|IpP?jC``cq4?cBu6{Ge^k|QLnN1wW;d=mXyhAbW z;qdMcAU>9HG2$}Ql@l{vbjLG}m@e+6!#aI2w!8;@zG|dr?Oj80mzt4*`Osi>A6Ef& zRVByu^n<52pg-KeJdjswrGH;TNmG7t3^?&iF0lRIEEhB2>D_mvx7awj{ws)M+T1NA1!Z!~z`GMd%d zOzJEt&WkG9sOvqPW2dgJqKF zza{si)NDA+^IkY!>J6}dVGp|7 zm`Hsl3G1&$Cr&LG?e;F` zcH%6v$8k2XI=pE(YwQY)b>P{M?(DaJW=eYfYDapi@ePI0{h_dVf^q3OGf#uC(J zu4kLR)@Ue0{NT&HwGPkzPCQGXQ+UTX8yQzJ;$gX|`s@Mi$@4W%&Z$i1MDdybAI#I58W=RcQWZAR;l%z8#0obl=NTXjzG zk7eDCeS9rDPsyHE+;u^DN?B^^3R9p*WCtk^=?39PH(;D13_Kwhgdw(Gd*>^|*v1!_P5e_~AW?MxOJXqd&4<9= zk?+golj%Du-$(N)?`t4_PU5dHeXgAjCY<5=_zkm1{F`y19t-ma4O8d8yQLk&oFU)+ ze7c5;Fo{=7{C)a&z9VSFxN0@Ov?8`iVl4z<=zoXAM4Fv@BL4U2;ldsLzZU~*lbFb> z4D+1CUO>gu>Eh!z%t{SsS)hIkGnD?E&#^!gixbTB6-&Di?PNL84|ED)Mrb$$t0-F$ zK5TpO2ke;Nr=&k|_P+BOkze8>t$5anG;Bi}Odi~4jbEkh((PpV-X`tl({6gdkjgvhvRv9dW7=(SnwHPNt0;@7r2QXguf<6^ydv%L zX$M0(?vvQn1eOVQ5qBxHNL(tZZ*W%)4QlO?{4xJsYQ zcZIb3rNwS2zHtt%Fm3#g5udtyA({ND#kWKHn@?Qx$F#gD?OO0|h`Qq3$ZRwHEz(ZZ zF-`Vya-BxVE01E#kAniojG+LgL_|29u8DE;b z%Rs*+ z78F*)Xtd!6L`3W|_ck0nf@JOu;%mJKM+#WYcBa5V5Q}+C;QcMAVU!7+rd!5zFvfn%4#voM1G4cs9_Wcyu^kd6XBHE z@Sh3%dK;5XRtLV?e;;Yk9YWy60X^7RcHzD?ja+3>KyXWQ_bMEK&bm)%_=zqj_n z_%UAK-?ZUJMG%!XyiwqDZ1`OQpJ&4h1b({>PZ0Q>HvHEjUo|#-v%teP{C0savf;x; z_#$(??5YKHcQ1?|V+4*N6pQ&U5e{}wTgq=hJPe*>qD)2{a`1>OLkJ<3=3%t&T&lUJO8$L$h z>uq?KNawe0_!|P>V8g#Ha1KxRHnRo3sW*tP-2!LJ-`m_K^84N1Aii=0{*(>pK%{{i zQmy8D0v8%kFRR-G{)1i^KQ0&eRvUg&q;tCs|6c-s)`rg#_)l#3!vasY;WvtW?Xclv zpr1L7sQ#dI=-)uqaBBHgIb?s(q3Jn#3l#rOL{wisMEXg!v3 z^}5X~>cS;7#OSwrbM?CAOQB3>lx|U!xLxm}z00ucT_$eVyG-1!cbT|d?=o?_-eux` zK5WK?MXIrk%dqQRbmuZg#BvVYu3wq%?fR98+x06G9~CG3F>!Faer1MZ*RM=`e4KFX z`jzS4u1A@;U5_$xyB=lYc0J0(?Ru1nhxo7=mtohV=*SfrN$u^$W!Uv7)4g4fGI6`U zWa4&x$;8X}uo)L_l#XRwhFxExJC|YCmrQ(CtYF~Yt}mJH?fR05+w~KiQDxe6A$xYGcIG14I|((?D~(1+w~t4zlRT-aT#{~ zhmKr^UH>t0yZ&S1cKyf1?fQ?2+w~t4ujRvLT!vlGp(B@J*K z>-n%5mtog)=*T6me6l$QZr5{6_jWzU#O?ZwiQDxV6SwO#Cazk0enpMTuDOVjEURz8592zA2#DM?0OCzxeU8LW8#grFjgdD{Ksj7#huWx@N1x&#KJ?+mtx`R zP=sRPZzIZB_+>~-EW9C(`>(`F&zU&sxfXh0tnkP6jg4Q4E_5vS4?^FIh5t*Oco)QR zzbFpCsICSvGq5or0kz>U> zE>1Y#k3*kfarmS?j{E#L@ls;PN)N~KW8o*_xW7A2y#3;Y^ZPjNzY`~&l;p9}b3Tsy zpTxoc5C^|94*$%JQ(wLVJi{CjN6Ii?f&9?;@ypO|>3*Le%st@S3?r&%Qohjq5cJ6~ zqWYnjKLmbSxR2_+V%!_}Ch$pyrXQ*nVh{K{L+fW%FmMQ9{h`3)a-(H5l3?r&vwMm>k$_%X^ zw@2cyA&3kk+MX)X zHxiCoBXCN%zdeGhbpA=u|IP^hOZny&`HJeRs$S%Z@TW!Gi+Oi^eJb#%-nB=%_?Ez< z{fm5w|5?y;w*10eqkQB1VTKXyzbFlCgP>cq-xQMWFNpL<`zcpT{53((neq#Bg!1ij z!G~oLJRslFMR`U0YbuAo6X8VrUr$N*ei84yNH{a(+d+~3K@nW#i*u$KT7PZ6bn!Kj zo{W!#hOy>ms<~|A$37QzN)a&z*u#(j)k2 z`F5SCFWV#dJM!&X5zdYXuK4hIAQ_rIFXm=}Z4}`@7I81;knwd+gugz5cOpMDoD0v0 zlpfj-iGN*`7nBrfl%#uFq$k>6m@eJFgJ%XbWn~boFyBldewBia1M&^~;ecNo!H>(g zTLd4DkKl^`Dd97W==e#Uj2G)yfh(?*Yh&Q{k0P8=k#NMCAbgS2GK?`1JS4*zEZmnw za3u%af)9%$xGI+`h1|F10j==Na5 zz2e(H2)ZFr(kOnoN0bX9kw)?DgChKBze(u{_aU4#GXaFmn&aQ`pr15YGJm;n|%Bynpvimt??tyNTCU^;&#{qpe~zGo;qS?J;(Ik* zy^{XQ4KbbmI=)YOU^q$!6RN^D4e9W%`6~X!nl-%9{jW9rYScR#;_c?E_&+McAF$f;xUbM~C4)((77hPTjc$6px_i|JVmfvAW3_V8)2Z4+y1!1w#b}mk@#^7Y zGDsL}_#q9~!}puc1^*Oi;TLQ8wHm%q!{3zee5m@!c=hmAJ3zcebAL*{Thr;6IQjpu z=Kkt9xJr-J{kAynRhq5tRo%4WBeZaI`7rkXAj;p^q4hd)gV=Xdg*kJ~g{cdw^YcfTo)`xzSkmVDfyI)xE_v9AHNpk(^*gdLFtB%D*4WE^!96?#I5w-skwhg zzVo5nTf=!lbFY`n9u3#arA5Q_@Xu+up3bpIHx1*}>7%FfkERpxufnAJ|I%>Pep&OY zw|9E@Y0@vl@yIj~3TU{VU!BkO{OWx8f%MCVYTvEt(aZNwn)?>{ela@i`2y}2%e*jN zUC-3%rsqqKSI<|cmL5G{J`F#wrAOz_H#A%?$3q(4riG*P!wVX&r*n^n>*;LKa6SCN zk`AP&9{!t}`=j!mj{_S1-x{v^mkdXz=WSZ}A8PK~H2hyRT<15%tF-n@H!Lqz7YHf- zvBvv~bWePbeCI>g$MkfDq#K5>)8Q$JGn@|j&PTF*ryl;QhO6|mAEe`hr5lEGOmly= zhQFoZdc3-P)5Fp0<5(>mogYFP{=OFebPd<}HiY!iFr7Lb^nQw-o_y(^ba>75D*lyT zN;>Gcu1|iXxnC&X8LyJDgmgOSa!K(a%d1lhN70Ar`Gto2hP`sQR2BEfpS;-);+DE5DO1_$K+S_(z5FoWy+=_lmz&ewBLz>7p5GJ|gK% zlepi4t8tqV7JNjEaOO!jd?;fj6?UmrJ6a+3I6ntL^VLp(Z4X&9;=5nrsiufR7A@#yF! z_B3etQqzg}e?-IY(eS4V`y!ynV|`5OL@8vcle*J=1O8opM;U(oP%8vdq+ z*K7Fu8opk`v1eWw=Ie0{R|8DMqqA>lPZOfu=_(eMKr{#^|}s^Q<$@PtJ3gZWi$5RnlY{IJCJq0-hVRtyA87bK4d1HaM>Tw#hM&{$?HcauV}3BdKh*HC8vd+?Pt)+{G`vc~ zf283nHT=gKzTtnf_criV73aS2T6+iBI|<(bLipH8P`k5Lgz%XbWhbD94_maCu*Hg! zRA}!1KWk?1$z*NOo_p^5`@L`1FIj7^|C*U+=9y=ndFGi}vo!p>8vc}qw`llF8s4hm zT^in|;XNAuw1%e*ac)@NXEc1KhCi#}%QXCZ8ooipzpvp98h%K_n>G9g8vcTY|4_qE zX!wsb{G5g>TY!&!J|_^%rQ4rZY50$|bQWs(Pc(d`h9B1O4I19A;kz`Pc9A+-H2ehx z;`)My|4hTJskP-*rBmz5H`h(A+EiLxR=r`1fh{dAi*~=USEE%^Ru+BT;0@_u2MfYtuC!ARX63ewZ&znRaND+_n7H! zEU#NrzJ36Fw}e5AkxOguzK7ISm#^A%ck!ls)|aj;M;sQCutOKWjk2%j^EfLi)^9AY z?H7p5Dc)FB4X~_w-MaGiA~{L1Ur4gDw)9?Pmju_9qi}WdhSd4fAdb)|MLe{;VQBs| zLYGyqFDs3Q=I?mMH`bNbZQ7_x3R=ayD2K^AH*L75v}#lNTGTo7S5*$e{S$+n5Jj#j zmM#IR$~SJTiEU0qd9tbbx;vU=ojSus@*s4XokFJ4oHK+pt4?paq{wt;HF zOlTk~5hs#s90!!Cx~1uY38|&lU{p{zjcMB?YQiYkeqkJk<%|e9H{vzrY z0<7Ocl^2(ahtvt{Hr~x}QVI4GRR~eV`nwHUq6t^IK7zV%e;`Zf{;-(!@)3{RNiotr zYZ5Yd(|wt=qDpT&qiQ8}C)rQ?$d{@{OC;nThmA z%Ok~WYSHa7J+=zQW;bl+DiKaCTDq!gKzJ%sH@vL29IeOg(NdZfY<6xB*%K#vw)CSO zvIew>G5e`vz3J!&iFQ343wC6Je*iJ)#I~f;Go{8L=GoQE_(! zCX)&f<4DCu7qG564mw3;8QCq9%mVAG%~R**@jOSIXN&VJah@s8GsHPpoTrO3POGQR zohu@V^K5aRCC)R&d4@RWit}`Fc209dBypZC&a=dMrZ~?K=Uj1~F3#dKceaQm&a=gN zmN?H8=NaOhE6&r!S)At15|PAtwm8oc=b7R>L!5KPdAc}@)7+UNk~q&6=UL)BQ=Dgr zbFMf~cW^QyZw4dH73VqPJX@S+iStZxo*~Y;;ym3!MATdnRh;LD^K5aRCC)R&d4@RW zit}{mH!BeRrQZEc7s=s_oQU%rah@&Cv&4C(IL{F0TydW6oEa%^nusdSbHsVJIL{L2 znc_S{oO8u_x;RhMhi3no-}fc+{hWcvH0ji78ruIEhOhmOv$!KBhx4&#;n=VKKcrhH z2EL5Q9~EB?M`Pj5_|5Q}xWzA&G5YyPftm65A-;(*>IUg7O_%A=x4>{JKMMb80{R^? zUXi@2i%IMG1oRsueO1w^~ru^WE=tmIW%oD>Nb}2t;oAiGJ;c=s{ z)*Gq$ltlDjLwq;-CtS)8Q5``43km2eKlTVkSYAz9^#8i$|1RlY)_s^v!i>KlLH?Cf zUC9aSk4?$s-vbHi@4TeHnnbn3q(2gwcguef^2MXhxx~(9{8GPr{7xDFx>!u-hZ+Aa z#5Xa9OqY`idih5JH_QL21o_AQ^5S@oh0_j`RyLlS7=urf^b2KN@_#h`P5Nw8Zv0dG zv320Newefv*Tfipv!uUUMkf6+_&4eQQ-b=BNQL@_jIS;xtz!w=uTM_i==>k&LO&B3 zax4Erq{~B}>*u{m|5AedFO>z&Wa8Rk#=n>#|CuiN&prV!(&F-`8ULqri@vo$RW+dpp_qvq-YM1hVDFOYx!^y??duYzxKwfhm%Z>ksT;%6dNW|nn z=l$HuUpUI4xK;K;iRfeRb65IZF7$I;=>Il>{JkU_j#}T6i2g4V$lnM#Nv-R@YhCEy z2F$JeT~rJ>!hEP5Ca(+e%)}Tx=tBQ`;3oh7kf8jTRMt4udJpGrAgwbA${&{Wb^UPz z5;5ujeFFLmCF8DSKQ)jN;d^ne^ds!7aY!~e zH#nQLCMK|dg7r=mz5ibV$fTc=p#FAC`U{<8VrP^7-~{p;u6Ls7^l59D^dCvU|JNn` zu#-&eY|{U70{*Y8ccSR@KL^O9-=08!q{)H*!!gRv50n0L3G~N?dMA9LjL-UCj(?N> z>j~)ZmGt+@`08TP|K|ks57#>}N@PURza9T3{of~`KaIv3j@8a3b~fpEC!n9c-HD>> zkIw@#=_e-`Kkt$BpNvs&N$WktH!+4h z>B9dn0XOOYBLKJZZsJlU6(8n-~N8b~sTAWlYL{F>!gX`0_6a==-GLzAeM6 zi%IMC1oW3l`Xw?V>6hZ)q@R(1|K}wAWir0HnDoaa;Qt{>UzL;e%UtOH9)2P>{?FrJ z1xKB8iJeXQ-H2~u4BY9$|8n4F`Ts3J`436@FT^N2KTKLD6O@0%Lr(Y-8K3398~-N# zXHj^!@>k_L5u-A`x|sA^5ZS~Sc7vo}C?k@71^!L?-vQu8zlZ}f9I1S$9VV>>yF*%KQ-Hlf2HyN#RT@(W=UV?e~kO%<}&%0sTx4R&mH=oEw}?`iB$H?~oBoWK7ooCj6W9*}h%*FX;!b zQ2w7FzL_ULR_2#^cD}vAE9u{hf0Mok>ATT?_0x=nbgn@EGQzmgpDXF>^}hvSP5RF! zus_ayhScNl1v+;FX|*Jy;E znMi7{OZ{<3ZsxxwLI3gOd?&+2SE#>lC+I&8N&1COGD3dpUFaW6K>vK$i8$A}#Lg!F zewKiKk4ycrOEt^?7yvi^2lE}0SCZeIh;QbJF@s-m;_LGJFd&ouqY31vu)vAG@(TQK zNT5GfO8O;EGJ^kvO!~`_zFYa57dR2Gq`#LUvRnBNOZs~M(cnV=-v_zVe|4cl|4RD1 z3-R6PpKzi7hztD>z!10cPrSvUe~u5e!=&{t;+q(QMSEFwnxOut{Wm9uE`N^!GU@+4Ft_qwC+Qbnq5RE=Z{`V*RU+xDa)S`X?oQDMmv7>~*34 z&k5*XlJuWsVYI`f^>PCGnGH@PUH+c{WS0M{3HqPCOP%nj{zMu7O8MWIK!0?~{Fg|=%>RD;oB7WN;3mI&KIcR{ zA>*ryng4l+Z(};0xvkB;*ko3>Xm@GeawORh6A@2M?BUu)zZ!L)U8C_u_&b^AKp5B2B z5i|3z;&&PuHg2sI08E}T?T$wr3hKQ|*55PuSMgQ7>_GjSv>EddosBp;COcQ=@d*CS z_*hW9p|*NWMOFFK>KigMGpEm*J#)tFS$WfD;PW()ZBg%pTz(6@?7MA0aO+zI;r3JBw6@dUF(J#I z{~M;^D;+;-tUWe#55hU$MlS%J{ML(izSx3zX?FS6t10~ zaGw9DwS4~7Rt>%tT-1$kn!h|bJU8co^a(*bn6ik^a;zGLiF%VmQ}FHb`S^DHod3Q* zgK>SA`(}YnX|4DcdzW`iTkzRo?JOgo1uyl@f|#aV#CPjEKkS=@`c7k>#)3z9-rIst z)-sL^-wT`K`HG+JT+xEG7Ns7n?S3$4AH#+&Z~Ilw5vM#*27Hh!B{yA=mu=s3_o-bOA_rOt=Ml(Z$`M{LDuvGxP}ns zVqf35wZ8fl@8eoL)SA8+*je1KwI9hi4-CAr{`$@O#NVu+2=*wQD{M0T+r9YKb|#+B z#Xpa|REb5y>TUHwYJQA+?+6k9E)fFynOE(b)l6HYi>oj_wC~qKzMSvV!9d6%_JBEj9pH&r(*Kx?d z8@?3JMtS0VR&v1cmRtBPhPUGR6!Ic4;_>ndIRwu1Mrq|0vIndT{{w5?@iVyL(-MSd z+u*^ywe)zI0>!#>1D_{x?x8hG{^q4l{^s6YI^H62hG$z)N2mN@(tTCplMT8jCC+pl zh35coBnW>&;%55F$T7>Md<{%LUB=}_`JkB2a1Fl;_dJ-6j#o*X>Bwb(BHUIDA1@H+ z1iL{TWGe z{?;#MI?BE_(^)7ZnewLOnR}(^tzPkmxXK%oD3R$9A1Z(IvQ@)%t-Dvl^?G++aW&ri zT)e1AS?GNAj~jicJv}y7++DtIL){jh+UX4|+ChPBRt3k}b_jU22Cf*BOJypEt>AcR#Hy)kWD*0=g ztd9Tmh5J;;wRk+aWm1T?;JJPnw?eHD8>|Py@33*NZk1fCd%B!ID*k2_P+raW`M^z# zL4C4;mhc7#+ce9m+O5)cY!hzu4+H0+`XlFVAT9RDZuBFPP$m<{LHg|FO!~FJ+~_Zp z1LQ+^t{)~X&X1cI!*h;=M~65&^qE(a{=WiqqpyTQ=}Vc+09wDs12_7G7~}IObS|R& z%#ul;10gs1%cM{$eI%0^K&u50-01Iip-+)E=~F)vGuyxk2}JNrKU92$eF{IAf3rcV z_!t}YJJhYZ_R9GE0^#PQTcKRS-hhOdmK2v*GAe#c3~_##`41to8!4`l;i1|e<#z=B zReaTcK8yG!ZN{sYCS8Mk$UL&&Gvh;1R+Vpd{5bT`T*;S{J98RcIygSQFQ?=4%#m}1 z#U*TIfomTOpVXs#IqzYdj_Kc4`c8sZb^J0j$r|2;-xu&dKh5fWbC{7x$Q=p$f$7zf`5@O0 z7yF9n7pQ}eB5T9;74)GrWLr&IqyLRB5mRJtYzWediY!(fzQSB?gPJ~--SMx2I+H&JP~f^^U}rPUWV}v z@-;FX!!WE0R~mxfaIq8iVT9BDHw>fvEA>|3H}Bnlq?NL1%?-Clz`MZ1Ni~sstoBpj zPiX=CdMG3FUozWjfA9XIE#yyRShzRms`?cbpN8Kt+3M{DPx@Z8U%OOoxBlsFPis%H zxAlWNl3Fi(Zcyvx`vo%3tdA^n~3Z}q;9y4B)kOd2Wz@+FL+V$|w05o#GB70E3qM*e^NIc> zt#dHy{jyyXNk^UE*K#-$dG*=j8ZA5Uo1ho|Km1e1k3q&L<2j%)7IHNf{yEHNrRiY` zv@n!m=oiSa!;=rt4xrfEAJs6*GchI4rSykdV=FNyP}DEo!To7ZH|Q#vXWmGcK` zvppLwjGkvo! zKpyE!_f1Tn?a+60M8}l+6_dd`oe$yFkZJH?tP3AbYce$s^)nlJZXQ&>Vkpwk^K=^Z zuJT0LLig35#wy6gN65hr_9L?0F#cl1*V8{}JYQlw$NWsc_$!R(t5W(u{{o(?HV1!y zsLwODavb>IvD_+}1RZe~{Qf_KUV*L9uN?JvLC2%~iR9U1Ze|I5nSm3ePJ;ZqrPDP!kbB3+i0dY6&EQ)h<7)keo4#Qii@+W#LHpNjq6+k()PJU4 zRc)GjrsZ32b!FGDfYBXGhxEco`$L3N z?T}a|un&MmA56JDu+FLp7a08s+DG)k)Z2X(6LQ%G9X&=~T9sYU5z(^oxzVYEXLO?; zL>u+ueylYk6aCIbuP>zQy)NiB>b-F;dQaE?)O&ipP+w42P-h%PUj$yn%AjPCW$}5^ zXE%5zPDsOC1T(dS2_%=QFQqGOy#jVTV3!&{ERZ~a-KpQ7F`j?lxW{~UzwqE?zxyf1{a(cHLtnTKGSXLzd0RtP4x)cnx}Ln9 zi1hnl`c-Z?Txwyjq&%{;dL06B{U%S=UxBu8zq~wV8L;i{S`LM5OyjDMa7Nsrs zj$Ok#Y=O+Q+~0E8XHOEgoKCOg19$r%4ZLUDT{WnGIYKDMz34aYM)`k&YdNlZABH_# zV&!IiV;rA02jT8SxQi)P?iYCVPRhN*h*x0r39tkE^^L1EeM)|=#q&Fm?#)bZ$mHAw zxazziZ&`NQljL{)cw9Ycl^4Bfp)T0BdY(^@i|3hX|0B|lyf{bb+sM`FvsKs&$E@Xo zCu#BUEaL%$SF{7?Y+=V9n9`rdN40~C=+9V}s$F%hpE%

M&xZ&xvGZ&K`G_HL|Z@ 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