Commit c0b9883b authored by Jack's avatar Jack
Browse files

added Lua 5.3.5 as source code to customize its VM

parent b64a7710
......@@ -84,13 +84,13 @@
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\include;C:\Users\Jack\Documents\dev\sdl\SDL2_ttf\include;$(SolutionDir)../../../src;C:\Users\Jack\Documents\dev\retro-8\projects\vs2017\libs\lua\include;C:\Users\Jack\Documents\dev\odreader\projects\vs2017\zlib\include;C:\Users\Jack\Documents\dev\retro-8\projects\vs2017\libs\lua\include</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\include;C:\Users\Jack\Documents\dev\sdl\SDL2_ttf\include;$(SolutionDir)../../../src;C:\Users\Jack\Documents\dev\odreader\projects\vs2017\zlib\include;C:\Users\Jack\Documents\dev\retro-8\projects\vs2017\libs\lua\include</AdditionalIncludeDirectories>
<LanguageStandard>
</LanguageStandard>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\lib\x64\SDL2.lib;C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\lib\x64\SDL2_image.lib;C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\lib\x64\SDL2main.lib;C:\Users\Jack\Documents\dev\retro-8\projects\vs2017\libs\lua\lua53.lib;C:\Users\Jack\Documents\dev/retro-8\projects\vs2017\libs\zlib\lib\win_x64\zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\lib\x64\SDL2.lib;C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\lib\x64\SDL2_image.lib;C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\lib\x64\SDL2main.lib;C:\Users\Jack\Documents\dev/retro-8\projects\vs2017\libs\zlib\lib\win_x64\zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
......@@ -116,7 +116,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<ConformanceMode>true</ConformanceMode>
<AdditionalIncludeDirectories>C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\include;C:\Users\Jack\Documents\dev\sdl\SDL2_ttf\include;$(SolutionDir)../../../src;C:\Users\Jack\Documents\dev\retro-8\projects\vs2017\libs\lua\include;C:\Users\Jack\Documents\dev\odreader\projects\vs2017\zlib\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\include;C:\Users\Jack\Documents\dev\sdl\SDL2_ttf\include;$(SolutionDir)../../../src;C:\Users\Jack\Documents\dev\odreader\projects\vs2017\zlib\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<LanguageStandard>
</LanguageStandard>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
......@@ -124,12 +124,46 @@
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\lib\x64\SDL2.lib;C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\lib\x64\SDL2_image.lib;C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\lib\x64\SDL2main.lib;C:\Users\Jack\Documents\dev\retro-8\projects\vs2017\libs\lua\lua53.lib;C:\Users\Jack\Documents\dev\sdl\SDL2_ttf\lib\x64\SDL2_ttf.lib;C:\Users\Jack\Documents\dev\odreader\projects\vs2017\zlib\lib\win_x64\zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\lib\x64\SDL2.lib;C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\lib\x64\SDL2_image.lib;C:\Users\Jack\Documents\dev\openmom\libs\sdl2\win\lib\x64\SDL2main.lib;C:\Users\Jack\Documents\dev\sdl\SDL2_ttf\lib\x64\SDL2_ttf.lib;C:\Users\Jack\Documents\dev\odreader\projects\vs2017\zlib\lib\win_x64\zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\io\loader.cpp" />
<ClCompile Include="..\..\..\src\lua\lapi.c" />
<ClCompile Include="..\..\..\src\lua\lauxlib.c" />
<ClCompile Include="..\..\..\src\lua\lbaselib.c" />
<ClCompile Include="..\..\..\src\lua\lbitlib.c" />
<ClCompile Include="..\..\..\src\lua\lcode.c" />
<ClCompile Include="..\..\..\src\lua\lcorolib.c" />
<ClCompile Include="..\..\..\src\lua\lctype.c" />
<ClCompile Include="..\..\..\src\lua\ldblib.c" />
<ClCompile Include="..\..\..\src\lua\ldebug.c" />
<ClCompile Include="..\..\..\src\lua\ldo.c" />
<ClCompile Include="..\..\..\src\lua\ldump.c" />
<ClCompile Include="..\..\..\src\lua\lfunc.c" />
<ClCompile Include="..\..\..\src\lua\lgc.c" />
<ClCompile Include="..\..\..\src\lua\linit.c" />
<ClCompile Include="..\..\..\src\lua\liolib.c" />
<ClCompile Include="..\..\..\src\lua\llex.c" />
<ClCompile Include="..\..\..\src\lua\lmathlib.c" />
<ClCompile Include="..\..\..\src\lua\lmem.c" />
<ClCompile Include="..\..\..\src\lua\loadlib.c" />
<ClCompile Include="..\..\..\src\lua\lobject.c" />
<ClCompile Include="..\..\..\src\lua\lopcodes.c" />
<ClCompile Include="..\..\..\src\lua\loslib.c" />
<ClCompile Include="..\..\..\src\lua\lparser.c" />
<ClCompile Include="..\..\..\src\lua\lstate.c" />
<ClCompile Include="..\..\..\src\lua\lstring.c" />
<ClCompile Include="..\..\..\src\lua\lstrlib.c" />
<ClCompile Include="..\..\..\src\lua\ltable.c" />
<ClCompile Include="..\..\..\src\lua\ltablib.c" />
<ClCompile Include="..\..\..\src\lua\ltests.c" />
<ClCompile Include="..\..\..\src\lua\ltm.c" />
<ClCompile Include="..\..\..\src\lua\lundump.c" />
<ClCompile Include="..\..\..\src\lua\lutf8lib.c" />
<ClCompile Include="..\..\..\src\lua\lvm.c" />
<ClCompile Include="..\..\..\src\lua\lzio.c" />
<ClCompile Include="..\..\..\src\main.cpp" />
<ClCompile Include="..\..\..\src\test\test.cpp" />
<ClCompile Include="..\..\..\src\views\game_view.cpp" />
......@@ -141,6 +175,33 @@
<ItemGroup>
<ClInclude Include="..\..\..\src\common.h" />
<ClInclude Include="..\..\..\src\io\loader.h" />
<ClInclude Include="..\..\..\src\lua\lapi.h" />
<ClInclude Include="..\..\..\src\lua\lauxlib.h" />
<ClInclude Include="..\..\..\src\lua\lcode.h" />
<ClInclude Include="..\..\..\src\lua\lctype.h" />
<ClInclude Include="..\..\..\src\lua\ldebug.h" />
<ClInclude Include="..\..\..\src\lua\ldo.h" />
<ClInclude Include="..\..\..\src\lua\lfunc.h" />
<ClInclude Include="..\..\..\src\lua\lgc.h" />
<ClInclude Include="..\..\..\src\lua\llex.h" />
<ClInclude Include="..\..\..\src\lua\llimits.h" />
<ClInclude Include="..\..\..\src\lua\lmem.h" />
<ClInclude Include="..\..\..\src\lua\lobject.h" />
<ClInclude Include="..\..\..\src\lua\lopcodes.h" />
<ClInclude Include="..\..\..\src\lua\lparser.h" />
<ClInclude Include="..\..\..\src\lua\lprefix.h" />
<ClInclude Include="..\..\..\src\lua\lstate.h" />
<ClInclude Include="..\..\..\src\lua\lstring.h" />
<ClInclude Include="..\..\..\src\lua\ltable.h" />
<ClInclude Include="..\..\..\src\lua\ltests.h" />
<ClInclude Include="..\..\..\src\lua\ltm.h" />
<ClInclude Include="..\..\..\src\lua\lua.h" />
<ClInclude Include="..\..\..\src\lua\lua.hpp" />
<ClInclude Include="..\..\..\src\lua\luaconf.h" />
<ClInclude Include="..\..\..\src\lua\lualib.h" />
<ClInclude Include="..\..\..\src\lua\lundump.h" />
<ClInclude Include="..\..\..\src\lua\lvm.h" />
<ClInclude Include="..\..\..\src\lua\lzio.h" />
<ClInclude Include="..\..\..\src\sdl_helper.h" />
<ClInclude Include="..\..\..\src\test\catch.hpp" />
<ClInclude Include="..\..\..\src\views\main_view.h" />
......
......@@ -16,6 +16,9 @@
<Filter Include="src\test">
<UniqueIdentifier>{91c70d3b-3da5-4d36-9075-f3004a94a914}</UniqueIdentifier>
</Filter>
<Filter Include="src\lua">
<UniqueIdentifier>{b501b260-9d32-44c3-8fa8-7ea19ecaa1c6}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\sdl_helper.h">
......@@ -48,6 +51,87 @@
<ClInclude Include="..\..\..\src\test\catch.hpp">
<Filter>src\test</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lcode.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lctype.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\ldebug.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\ldo.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lfunc.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lgc.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\llex.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\llimits.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lmem.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lobject.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lopcodes.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lparser.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lprefix.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lstate.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lstring.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\ltable.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\ltests.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\ltm.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lua.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\luaconf.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lualib.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lundump.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lvm.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lzio.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lapi.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lauxlib.h">
<Filter>src\lua</Filter>
</ClInclude>
<ClInclude Include="..\..\..\src\lua\lua.hpp">
<Filter>src\lua</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\main.cpp">
......@@ -74,5 +158,107 @@
<ClCompile Include="..\..\..\src\views\game_view.cpp">
<Filter>src\views</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lcorolib.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lctype.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\ldblib.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\ldebug.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\ldo.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\ldump.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lfunc.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lgc.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\linit.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\liolib.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\llex.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lmem.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\loadlib.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lobject.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lopcodes.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\loslib.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lparser.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lstate.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lstring.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lstrlib.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\ltable.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\ltablib.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\ltests.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\ltm.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lundump.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lutf8lib.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lvm.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lzio.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lapi.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lauxlib.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lbaselib.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lbitlib.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lcode.c">
<Filter>src\lua</Filter>
</ClCompile>
<ClCompile Include="..\..\..\src\lua\lmathlib.c">
<Filter>src\lua</Filter>
</ClCompile>
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -62,7 +62,7 @@ void LoaderP8::fixOperators(std::string& line)
else
break;
}
else if (isalnum(line[t]) || line[t] == '.')
else if (isalnum(line[t]) || line[t] == '.' || line[t] == '_')
{
if (s == S::BEGIN)
{
......
This diff is collapsed.
/*
** $Id: lapi.h,v 2.9.1.1 2017/04/19 17:20:42 roberto Exp $
** Auxiliary functions from Lua API
** See Copyright Notice in lua.h
*/
#ifndef lapi_h
#define lapi_h
#include "llimits.h"
#include "lstate.h"
#define api_incr_top(L) {L->top++; api_check(L, L->top <= L->ci->top, \
"stack overflow");}
#define adjustresults(L,nres) \
{ if ((nres) == LUA_MULTRET && L->ci->top < L->top) L->ci->top = L->top; }
#define api_checknelems(L,n) api_check(L, (n) < (L->top - L->ci->func), \
"not enough elements in the stack")
#endif
This diff is collapsed.
/*
** $Id: lauxlib.h,v 1.131.1.1 2017/04/19 17:20:42 roberto Exp $
** Auxiliary functions for building Lua libraries
** See Copyright Notice in lua.h
*/
#ifndef lauxlib_h
#define lauxlib_h
#include <stddef.h>
#include <stdio.h>
#include "lua.h"
/* extra error code for 'luaL_loadfilex' */
#define LUA_ERRFILE (LUA_ERRERR+1)
/* key, in the registry, for table of loaded modules */
#define LUA_LOADED_TABLE "_LOADED"
/* key, in the registry, for table of preloaded loaders */
#define LUA_PRELOAD_TABLE "_PRELOAD"
typedef struct luaL_Reg {
const char *name;
lua_CFunction func;
} luaL_Reg;
#define LUAL_NUMSIZES (sizeof(lua_Integer)*16 + sizeof(lua_Number))
LUALIB_API void (luaL_checkversion_) (lua_State *L, lua_Number ver, size_t sz);
#define luaL_checkversion(L) \
luaL_checkversion_(L, LUA_VERSION_NUM, LUAL_NUMSIZES)
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 const char *(luaL_tolstring) (lua_State *L, int idx, size_t *len);
LUALIB_API int (luaL_argerror) (lua_State *L, int arg, const char *extramsg);
LUALIB_API const char *(luaL_checklstring) (lua_State *L, int arg,
size_t *l);
LUALIB_API const char *(luaL_optlstring) (lua_State *L, int arg,
const char *def, size_t *l);
LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int arg);
LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int arg, lua_Number def);
LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int arg);
LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int arg,
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 arg, int t);
LUALIB_API void (luaL_checkany) (lua_State *L, int arg);
LUALIB_API int (luaL_newmetatable) (lua_State *L, const char *tname);
LUALIB_API void (luaL_setmetatable) (lua_State *L, const char *tname);
LUALIB_API void *(luaL_testudata) (lua_State *L, int ud, 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 arg, const char *def,
const char *const lst[]);
LUALIB_API int (luaL_fileresult) (lua_State *L, int stat, const char *fname);
LUALIB_API int (luaL_execresult) (lua_State *L, int stat);
/* predefined references */
#define LUA_NOREF (-2)
#define LUA_REFNIL (-1)
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_loadfilex) (lua_State *L, const char *filename,
const char *mode);
#define luaL_loadfile(L,f) luaL_loadfilex(L,f,NULL)
LUALIB_API int (luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz,
const char *name, const char *mode);
LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s);
LUALIB_API lua_State *(luaL_newstate) (void);
LUALIB_API lua_Integer (luaL_len) (lua_State *L, int idx);
LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s, const char *p,
const char *r);
LUALIB_API void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup);
LUALIB_API int (luaL_getsubtable) (lua_State *L, int idx, const char *fname);
LUALIB_API void (luaL_traceback) (lua_State *L, lua_State *L1,
const char *msg, int level);
LUALIB_API void (luaL_requiref) (lua_State *L, const char *modname,
lua_CFunction openf, int glb);
/*
** ===============================================================
** some useful macros
** ===============================================================
*/
#define luaL_newlibtable(L,l) \
lua_createtable(L, 0, sizeof(l)/sizeof((l)[0]) - 1)
#define luaL_newlib(L,l) \
(luaL_checkversion(L), luaL_newlibtable(L,l), luaL_setfuncs(L,l,0))
#define luaL_argcheck(L, cond,arg,extramsg) \
((void)((cond) || luaL_argerror(L, (arg), (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_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)))
#define luaL_loadbuffer(L,s,sz,n) luaL_loadbufferx(L,s,sz,n,NULL)
/*
** {======================================================
** Generic Buffer manipulation
** =======================================================
*/
typedef struct luaL_Buffer {
char *b; /* buffer address */
size_t size; /* buffer size */
size_t n; /* number of characters in buffer */
lua_State *L;
char initb[LUAL_BUFFERSIZE]; /* initial buffer */
} luaL_Buffer;
#define luaL_addchar(B,c) \
((void)((B)->n < (B)->size || luaL_prepbuffsize((B), 1)), \
((B)->b[(B)->n++] = (c)))
#define luaL_addsize(B,s) ((B)->n += (s))
LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B);
LUALIB_API char *(luaL_prepbuffsize) (luaL_Buffer *B, size_t sz);
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);
LUALIB_API void (luaL_pushresultsize) (luaL_Buffer *B, size_t sz);
LUALIB_API char *(luaL_buffinitsize) (lua_State *L, luaL_Buffer *B, size_t sz);
#define luaL_prepbuffer(B) luaL_prepbuffsize(B, LUAL_BUFFERSIZE)
/* }====================================================== */
/*
** {======================================================
** File handles for IO library
** =======================================================
*/
/*
** A file handle is a userdata with metatable 'LUA_FILEHANDLE' and
** initial structure 'luaL_Stream' (it may contain other fields
** after that initial structure).
*/
#define LUA_FILEHANDLE "FILE*"
typedef struct luaL_Stream {
FILE *f; /* stream (NULL for incompletely created streams) */
lua_CFunction closef; /* to close stream (NULL for closed streams) */
} luaL_Stream;
/* }====================================================== */
/* compatibility with old module system */
#if defined(LUA_COMPAT_MODULE)
LUALIB_API void (luaL_pushmodule) (lua_State *L, const char *modname,
int sizehint);
LUALIB_API void (luaL_openlib) (lua_State *L, const char *libname,
const luaL_Reg *l, int nup);
#define luaL_register(L,n,l) (luaL_openlib(L,(n),(l),0))
#endif
/*
** {==================================================================
** "Abstraction Layer" for basic report of messages and errors
** ===================================================================
*/
/* print a string */
#if !defined(lua_writestring)
#define lua_writestring(s,l) fwrite((s), sizeof(char), (l), stdout)
#endif
/* print a newline and flush the output */
#if !defined(lua_writeline)
#define lua_writeline() (lua_writestring("\n", 1), fflush(stdout))
#endif
/* print an error message */
#if !defined(lua_writestringerror)
#define lua_writestringerror(s,p) \
(fprintf(stderr, (s), (p)), fflush(stderr))
#endif
/* }================================================================== */
/*
** {============================================================
** Compatibility with deprecated conversions
** =============================================================
*/
#if defined(LUA_COMPAT_APIINTCASTS)
#define luaL_checkunsigned(L,a) ((lua_Unsigned)luaL_checkinteger(L,a))
#define luaL_optunsigned(L,a,d) \
((lua_Unsigned)luaL_optinteger(L,a,(lua_Integer)(d)))
#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)))
#endif
/* }============================================================ */
#endif
/*
** $Id: lbaselib.c,v 1.314.1.1 2017/04/19 17:39:34 roberto Exp $
** Basic library
** See Copyright Notice in lua.h