Upgrade to Lua 5.4

Dieser Commit ist enthalten in:
Reinder Feenstra 2024-07-12 00:23:12 +02:00
Ursprung e545408c1e
Commit fdda0888d3
12 geänderte Dateien mit 328 neuen und 243 gelöschten Zeilen

Datei anzeigen

@ -314,12 +314,12 @@ jobs:
# Ubuntu only: # Ubuntu only:
- name: Install packages - name: Install packages
if: startswith(matrix.config.os, 'ubuntu') if: startswith(matrix.config.os, 'ubuntu')
run: sudo apt install libboost-program-options-dev liblua5.3-dev lcov libarchive-dev clang-tidy libsystemd-dev run: sudo apt install libboost-program-options-dev liblua5.4-dev lcov libarchive-dev clang-tidy libsystemd-dev
# MacOS only: # MacOS only:
- name: Install brew packages - name: Install brew packages
if: startswith(matrix.config.os, 'macos') if: startswith(matrix.config.os, 'macos')
run: brew install libarchive lua@5.3 run: brew install libarchive lua@5.4
# All: # All:
- name: Create Build Environment - name: Create Build Environment

Datei anzeigen

@ -54,7 +54,7 @@ Name: "firewall_wlanmaus"; Description: "{cm:firewall_allow_wlanmaus_z21}"; Grou
[Files] [Files]
; Server ; Server
Source: "..\..\server\build\{#ServerExeName}"; DestDir: "{app}\server"; Flags: ignoreversion; Check: InstallServer Source: "..\..\server\build\{#ServerExeName}"; DestDir: "{app}\server"; Flags: ignoreversion; Check: InstallServer
Source: "..\..\server\thirdparty\lua5.3\bin\win64\lua53.dll"; DestDir: "{app}\server"; Flags: ignoreversion; Check: InstallServer Source: "..\..\server\thirdparty\lua5.4\bin\win64\lua54.dll"; DestDir: "{app}\server"; Flags: ignoreversion; Check: InstallServer
Source: "..\..\server\thirdparty\libarchive\bin\archive.dll"; DestDir: "{app}\server"; Flags: ignoreversion; Check: InstallServer Source: "..\..\server\thirdparty\libarchive\bin\archive.dll"; DestDir: "{app}\server"; Flags: ignoreversion; Check: InstallServer
Source: "..\..\server\thirdparty\zlib\bin\zlib1.dll"; DestDir: "{app}\server"; Flags: ignoreversion; Check: InstallServer Source: "..\..\server\thirdparty\zlib\bin\zlib1.dll"; DestDir: "{app}\server"; Flags: ignoreversion; Check: InstallServer
; Client ; Client

Datei anzeigen

@ -384,41 +384,41 @@ if(BUILD_TESTING)
target_link_libraries(traintastic-server-test PRIVATE ${LibArchive_LIBRARIES}) target_link_libraries(traintastic-server-test PRIVATE ${LibArchive_LIBRARIES})
endif() endif()
# liblua5.3 # liblua5.4
if(WIN32) if(WIN32)
add_definitions(-DLUA_BUILD_AS_DLL) add_definitions(-DLUA_BUILD_AS_DLL)
set(LUA_INCLUDE_DIR "thirdparty/lua5.3/include") set(LUA_INCLUDE_DIR "thirdparty/lua5.4/include")
if(MSVC) if(MSVC)
set(LUA_LIBRARIES lua53) set(LUA_LIBRARIES lua54)
add_custom_command(TARGET traintastic-server PRE_LINK add_custom_command(TARGET traintastic-server PRE_LINK
COMMAND lib "/def:${PROJECT_SOURCE_DIR}/thirdparty/lua5.3/bin/win64/lua53.def" /out:lua53.lib /machine:x64) COMMAND lib "/def:${PROJECT_SOURCE_DIR}/thirdparty/lua5.4/bin/win64/lua54.def" /out:lua54.lib /machine:x64)
add_custom_command(TARGET traintastic-server-test PRE_LINK add_custom_command(TARGET traintastic-server-test PRE_LINK
COMMAND lib "/def:${PROJECT_SOURCE_DIR}/thirdparty/lua5.3/bin/win64/lua53.def" /out:lua53.lib /machine:x64) COMMAND lib "/def:${PROJECT_SOURCE_DIR}/thirdparty/lua5.4/bin/win64/lua54.def" /out:lua54.lib /machine:x64)
else() else()
# MinGW can directly link .dll without import lib # MinGW can directly link .dll without import lib
set(LUA_LIBRARIES "${PROJECT_SOURCE_DIR}/thirdparty/lua5.3/bin/win64/lua53.dll") set(LUA_LIBRARIES "${PROJECT_SOURCE_DIR}/thirdparty/lua5.4/bin/win64/lua54.dll")
endif() endif()
# copy lua53.dll to build directory, to be able to run the tests: # copy lua54.dll to build directory, to be able to run the tests:
add_custom_command(TARGET traintastic-server-test POST_BUILD add_custom_command(TARGET traintastic-server-test POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/thirdparty/lua5.3/bin/win64/lua53.dll" .) COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/thirdparty/lua5.4/bin/win64/lua54.dll" .)
elseif(APPLE) elseif(APPLE)
find_path(LUA_INCLUDE_DIR find_path(LUA_INCLUDE_DIR
NAMES lua.h NAMES lua.h
PATHS PATHS
"/usr/local/opt/lua@5.3/include/lua" # x86_64 "/usr/local/opt/lua@5.4/include/lua" # x86_64
"/opt/homebrew/opt/lua@5.3/include/lua" # arm64 "/opt/homebrew/opt/lua@5.4/include/lua" # arm64
) )
find_library(LUA_LIBRARIES find_library(LUA_LIBRARIES
NAMES lua5.3 liblua5.3 NAMES lua5.4 liblua5.4
PATHS PATHS
"/usr/local/opt/lua@5.3/lib" # x86_64 "/usr/local/opt/lua@5.4/lib" # x86_64
"/opt/homebrew/opt/lua@5.3/lib" # arm64 "/opt/homebrew/opt/lua@5.4/lib" # arm64
) )
else() else()
find_package(Lua 5.3 REQUIRED) find_package(Lua 5.4 REQUIRED)
endif() endif()
target_include_directories(traintastic-server PRIVATE ${LUA_INCLUDE_DIR}) target_include_directories(traintastic-server PRIVATE ${LUA_INCLUDE_DIR})
target_link_libraries(traintastic-server PRIVATE ${LUA_LIBRARIES}) target_link_libraries(traintastic-server PRIVATE ${LUA_LIBRARIES})

Datei anzeigen

@ -17,6 +17,7 @@
# Copyright 2007-2009 Kitware, Inc. # Copyright 2007-2009 Kitware, Inc.
# Modified to support Lua 5.2 by LuaDist 2012 # Modified to support Lua 5.2 by LuaDist 2012
# Modified to support Lua 5.3 by Reinder Feenstra 2019 # Modified to support Lua 5.3 by Reinder Feenstra 2019
# Modified to support Lua 5.4 by Reinder Feenstra 2024
# #
# Distributed under the OSI-approved BSD License (the "License"); # Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details. # see accompanying file Copyright.txt for details.
@ -41,7 +42,7 @@ SET(_POSSIBLE_LUA_LIBRARY lua)
IF(Lua_FIND_VERSION_MAJOR AND Lua_FIND_VERSION_MINOR) IF(Lua_FIND_VERSION_MAJOR AND Lua_FIND_VERSION_MINOR)
SET(_POSSIBLE_SUFFIXES "${Lua_FIND_VERSION_MAJOR}${Lua_FIND_VERSION_MINOR}" "${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR}" "-${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR}") SET(_POSSIBLE_SUFFIXES "${Lua_FIND_VERSION_MAJOR}${Lua_FIND_VERSION_MINOR}" "${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR}" "-${Lua_FIND_VERSION_MAJOR}.${Lua_FIND_VERSION_MINOR}")
ELSE(Lua_FIND_VERSION_MAJOR AND Lua_FIND_VERSION_MINOR) ELSE(Lua_FIND_VERSION_MAJOR AND Lua_FIND_VERSION_MINOR)
SET(_POSSIBLE_SUFFIXES "53" "5.3" "-5.3" "52" "5.2" "-5.2" "51" "5.1" "-5.1") SET(_POSSIBLE_SUFFIXES "54" "5.4" "-5.4" "53" "5.3" "-5.3" "52" "5.2" "-5.2" "51" "5.1" "-5.1")
ENDIF(Lua_FIND_VERSION_MAJOR AND Lua_FIND_VERSION_MINOR) ENDIF(Lua_FIND_VERSION_MAJOR AND Lua_FIND_VERSION_MINOR)
# Set up possible search names and locations # Set up possible search names and locations

Binäre Datei nicht angezeigt.

Datei anzeigen

@ -5,6 +5,8 @@ lua_atpanic
lua_callk lua_callk
lua_checkstack lua_checkstack
lua_close lua_close
lua_closeslot
lua_closethread
lua_compare lua_compare
lua_concat lua_concat
lua_copy lua_copy
@ -20,13 +22,13 @@ lua_gethookcount
lua_gethookmask lua_gethookmask
lua_geti lua_geti
lua_getinfo lua_getinfo
lua_getiuservalue
lua_getlocal lua_getlocal
lua_getmetatable lua_getmetatable
lua_getstack lua_getstack
lua_gettable lua_gettable
lua_gettop lua_gettop
lua_getupvalue lua_getupvalue
lua_getuservalue
lua_ident DATA lua_ident DATA
lua_iscfunction lua_iscfunction
lua_isinteger lua_isinteger
@ -38,7 +40,7 @@ lua_len
lua_load lua_load
lua_newstate lua_newstate
lua_newthread lua_newthread
lua_newuserdata lua_newuserdatauv
lua_next lua_next
lua_pcallk lua_pcallk
lua_pushboolean lua_pushboolean
@ -61,23 +63,27 @@ lua_rawlen
lua_rawset lua_rawset
lua_rawseti lua_rawseti
lua_rawsetp lua_rawsetp
lua_resetthread
lua_resume lua_resume
lua_rotate lua_rotate
lua_setallocf lua_setallocf
lua_setcstacklimit
lua_setfield lua_setfield
lua_setglobal lua_setglobal
lua_sethook lua_sethook
lua_seti lua_seti
lua_setiuservalue
lua_setlocal lua_setlocal
lua_setmetatable lua_setmetatable
lua_settable lua_settable
lua_settop lua_settop
lua_setupvalue lua_setupvalue
lua_setuservalue lua_setwarnf
lua_status lua_status
lua_stringtonumber lua_stringtonumber
lua_toboolean lua_toboolean
lua_tocfunction lua_tocfunction
lua_toclose
lua_tointegerx lua_tointegerx
lua_tolstring lua_tolstring
lua_tonumberx lua_tonumberx
@ -89,8 +95,10 @@ lua_typename
lua_upvalueid lua_upvalueid
lua_upvaluejoin lua_upvaluejoin
lua_version lua_version
lua_warning
lua_xmove lua_xmove
lua_yieldk lua_yieldk
luaL_addgsub
luaL_addlstring luaL_addlstring
luaL_addstring luaL_addstring
luaL_addvalue luaL_addvalue
@ -133,10 +141,10 @@ luaL_setmetatable
luaL_testudata luaL_testudata
luaL_tolstring luaL_tolstring
luaL_traceback luaL_traceback
luaL_typeerror
luaL_unref luaL_unref
luaL_where luaL_where
luaopen_base luaopen_base
luaopen_bit32
luaopen_coroutine luaopen_coroutine
luaopen_debug luaopen_debug
luaopen_io luaopen_io

Binäre Datei nicht angezeigt.

Datei anzeigen

@ -1,5 +1,5 @@
/* /*
** $Id: lauxlib.h,v 1.131.1.1 2017/04/19 17:20:42 roberto Exp $ ** $Id: lauxlib.h $
** Auxiliary functions for building Lua libraries ** Auxiliary functions for building Lua libraries
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@ -12,9 +12,16 @@
#include <stddef.h> #include <stddef.h>
#include <stdio.h> #include <stdio.h>
#include "luaconf.h"
#include "lua.h" #include "lua.h"
/* global table */
#define LUA_GNAME "_G"
typedef struct luaL_Buffer luaL_Buffer;
/* extra error code for 'luaL_loadfilex' */ /* extra error code for 'luaL_loadfilex' */
#define LUA_ERRFILE (LUA_ERRERR+1) #define LUA_ERRFILE (LUA_ERRERR+1)
@ -44,6 +51,7 @@ 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_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 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 int (luaL_argerror) (lua_State *L, int arg, const char *extramsg);
LUALIB_API int (luaL_typeerror) (lua_State *L, int arg, const char *tname);
LUALIB_API const char *(luaL_checklstring) (lua_State *L, int arg, LUALIB_API const char *(luaL_checklstring) (lua_State *L, int arg,
size_t *l); size_t *l);
LUALIB_API const char *(luaL_optlstring) (lua_State *L, int arg, LUALIB_API const char *(luaL_optlstring) (lua_State *L, int arg,
@ -73,6 +81,7 @@ LUALIB_API int (luaL_checkoption) (lua_State *L, int arg, const char *def,
LUALIB_API int (luaL_fileresult) (lua_State *L, int stat, const char *fname); LUALIB_API int (luaL_fileresult) (lua_State *L, int stat, const char *fname);
LUALIB_API int (luaL_execresult) (lua_State *L, int stat); LUALIB_API int (luaL_execresult) (lua_State *L, int stat);
/* predefined references */ /* predefined references */
#define LUA_NOREF (-2) #define LUA_NOREF (-2)
#define LUA_REFNIL (-1) #define LUA_REFNIL (-1)
@ -93,8 +102,10 @@ LUALIB_API lua_State *(luaL_newstate) (void);
LUALIB_API lua_Integer (luaL_len) (lua_State *L, int idx); 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, LUALIB_API void (luaL_addgsub) (luaL_Buffer *b, const char *s,
const char *r); const char *p, const char *r);
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 void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup);
@ -120,7 +131,11 @@ LUALIB_API void (luaL_requiref) (lua_State *L, const char *modname,
(luaL_checkversion(L), luaL_newlibtable(L,l), luaL_setfuncs(L,l,0)) (luaL_checkversion(L), luaL_newlibtable(L,l), luaL_setfuncs(L,l,0))
#define luaL_argcheck(L, cond,arg,extramsg) \ #define luaL_argcheck(L, cond,arg,extramsg) \
((void)((cond) || luaL_argerror(L, (arg), (extramsg)))) ((void)(luai_likely(cond) || luaL_argerror(L, (arg), (extramsg))))
#define luaL_argexpected(L,cond,arg,tname) \
((void)(luai_likely(cond) || luaL_typeerror(L, (arg), (tname))))
#define luaL_checkstring(L,n) (luaL_checklstring(L, (n), NULL)) #define luaL_checkstring(L,n) (luaL_checklstring(L, (n), NULL))
#define luaL_optstring(L,n,d) (luaL_optlstring(L, (n), (d), NULL)) #define luaL_optstring(L,n,d) (luaL_optlstring(L, (n), (d), NULL))
@ -139,19 +154,54 @@ LUALIB_API void (luaL_requiref) (lua_State *L, const char *modname,
#define luaL_loadbuffer(L,s,sz,n) luaL_loadbufferx(L,s,sz,n,NULL) #define luaL_loadbuffer(L,s,sz,n) luaL_loadbufferx(L,s,sz,n,NULL)
/*
** Perform arithmetic operations on lua_Integer values with wrap-around
** semantics, as the Lua core does.
*/
#define luaL_intop(op,v1,v2) \
((lua_Integer)((lua_Unsigned)(v1) op (lua_Unsigned)(v2)))
/* push the value used to represent failure/error */
#define luaL_pushfail(L) lua_pushnil(L)
/*
** Internal assertions for in-house debugging
*/
#if !defined(lua_assert)
#if defined LUAI_ASSERT
#include <assert.h>
#define lua_assert(c) assert(c)
#else
#define lua_assert(c) ((void)0)
#endif
#endif
/* /*
** {====================================================== ** {======================================================
** Generic Buffer manipulation ** Generic Buffer manipulation
** ======================================================= ** =======================================================
*/ */
typedef struct luaL_Buffer { struct luaL_Buffer {
char *b; /* buffer address */ char *b; /* buffer address */
size_t size; /* buffer size */ size_t size; /* buffer size */
size_t n; /* number of characters in buffer */ size_t n; /* number of characters in buffer */
lua_State *L; lua_State *L;
char initb[LUAL_BUFFERSIZE]; /* initial buffer */ union {
} luaL_Buffer; LUAI_MAXALIGN; /* ensure maximum alignment for buffer */
char b[LUAL_BUFFERSIZE]; /* initial buffer */
} init;
};
#define luaL_bufflen(bf) ((bf)->n)
#define luaL_buffaddr(bf) ((bf)->b)
#define luaL_addchar(B,c) \ #define luaL_addchar(B,c) \
@ -160,6 +210,8 @@ typedef struct luaL_Buffer {
#define luaL_addsize(B,s) ((B)->n += (s)) #define luaL_addsize(B,s) ((B)->n += (s))
#define luaL_buffsub(B,s) ((B)->n -= (s))
LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B); LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B);
LUALIB_API char *(luaL_prepbuffsize) (luaL_Buffer *B, size_t sz); 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_addlstring) (luaL_Buffer *B, const char *s, size_t l);
@ -197,21 +249,6 @@ typedef struct 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 ** "Abstraction Layer" for basic report of messages and errors

Datei anzeigen

@ -1,4 +1,5 @@
/* /*
** $Id: lua.h $
** Lua - A Scripting Language ** Lua - A Scripting Language
** Lua.org, PUC-Rio, Brazil (http://www.lua.org) ** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
** See Copyright Notice at the end of this file ** See Copyright Notice at the end of this file
@ -16,13 +17,15 @@
#define LUA_VERSION_MAJOR "5" #define LUA_VERSION_MAJOR "5"
#define LUA_VERSION_MINOR "3" #define LUA_VERSION_MINOR "4"
#define LUA_VERSION_NUM 503 #define LUA_VERSION_RELEASE "7"
#define LUA_VERSION_RELEASE "6"
#define LUA_VERSION_NUM 504
#define LUA_VERSION_RELEASE_NUM (LUA_VERSION_NUM * 100 + 7)
#define LUA_VERSION "Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR #define LUA_VERSION "Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
#define LUA_RELEASE LUA_VERSION "." LUA_VERSION_RELEASE #define LUA_RELEASE LUA_VERSION "." LUA_VERSION_RELEASE
#define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-2020 Lua.org, PUC-Rio" #define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-2024 Lua.org, PUC-Rio"
#define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo, W. Celes" #define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo, W. Celes"
@ -48,8 +51,7 @@
#define LUA_ERRRUN 2 #define LUA_ERRRUN 2
#define LUA_ERRSYNTAX 3 #define LUA_ERRSYNTAX 3
#define LUA_ERRMEM 4 #define LUA_ERRMEM 4
#define LUA_ERRGCMM 5 #define LUA_ERRERR 5
#define LUA_ERRERR 6
typedef struct lua_State lua_State; typedef struct lua_State lua_State;
@ -70,7 +72,7 @@ typedef struct lua_State lua_State;
#define LUA_TUSERDATA 7 #define LUA_TUSERDATA 7
#define LUA_TTHREAD 8 #define LUA_TTHREAD 8
#define LUA_NUMTAGS 9 #define LUA_NUMTYPES 9
@ -123,6 +125,23 @@ typedef int (*lua_Writer) (lua_State *L, const void *p, size_t sz, void *ud);
typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize); typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize);
/*
** Type for warning functions
*/
typedef void (*lua_WarnFunction) (void *ud, const char *msg, int tocont);
/*
** Type used by the debug API to collect debug information
*/
typedef struct lua_Debug lua_Debug;
/*
** Functions to be called by the debugger in specific events
*/
typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
/* /*
** generic extra include file ** generic extra include file
@ -144,11 +163,13 @@ LUA_API extern const char lua_ident[];
LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud); LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud);
LUA_API void (lua_close) (lua_State *L); LUA_API void (lua_close) (lua_State *L);
LUA_API lua_State *(lua_newthread) (lua_State *L); LUA_API lua_State *(lua_newthread) (lua_State *L);
LUA_API int (lua_closethread) (lua_State *L, lua_State *from);
LUA_API int (lua_resetthread) (lua_State *L); /* Deprecated! */
LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf); LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf);
LUA_API const lua_Number *(lua_version) (lua_State *L); LUA_API lua_Number (lua_version) (lua_State *L);
/* /*
@ -181,7 +202,7 @@ LUA_API lua_Number (lua_tonumberx) (lua_State *L, int idx, int *isnum);
LUA_API lua_Integer (lua_tointegerx) (lua_State *L, int idx, int *isnum); LUA_API lua_Integer (lua_tointegerx) (lua_State *L, int idx, int *isnum);
LUA_API int (lua_toboolean) (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 const char *(lua_tolstring) (lua_State *L, int idx, size_t *len);
LUA_API size_t (lua_rawlen) (lua_State *L, int idx); LUA_API lua_Unsigned (lua_rawlen) (lua_State *L, int idx);
LUA_API lua_CFunction (lua_tocfunction) (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 void *(lua_touserdata) (lua_State *L, int idx);
LUA_API lua_State *(lua_tothread) (lua_State *L, int idx); LUA_API lua_State *(lua_tothread) (lua_State *L, int idx);
@ -246,9 +267,9 @@ LUA_API int (lua_rawgeti) (lua_State *L, int idx, lua_Integer n);
LUA_API int (lua_rawgetp) (lua_State *L, int idx, const void *p); LUA_API int (lua_rawgetp) (lua_State *L, int idx, const void *p);
LUA_API void (lua_createtable) (lua_State *L, int narr, int nrec); 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 void *(lua_newuserdatauv) (lua_State *L, size_t sz, int nuvalue);
LUA_API int (lua_getmetatable) (lua_State *L, int objindex); LUA_API int (lua_getmetatable) (lua_State *L, int objindex);
LUA_API int (lua_getuservalue) (lua_State *L, int idx); LUA_API int (lua_getiuservalue) (lua_State *L, int idx, int n);
/* /*
@ -262,7 +283,7 @@ LUA_API void (lua_rawset) (lua_State *L, int idx);
LUA_API void (lua_rawseti) (lua_State *L, int idx, lua_Integer n); LUA_API void (lua_rawseti) (lua_State *L, int idx, lua_Integer n);
LUA_API void (lua_rawsetp) (lua_State *L, int idx, const void *p); LUA_API void (lua_rawsetp) (lua_State *L, int idx, const void *p);
LUA_API int (lua_setmetatable) (lua_State *L, int objindex); LUA_API int (lua_setmetatable) (lua_State *L, int objindex);
LUA_API void (lua_setuservalue) (lua_State *L, int idx); LUA_API int (lua_setiuservalue) (lua_State *L, int idx, int n);
/* /*
@ -287,13 +308,21 @@ LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data, int strip);
*/ */
LUA_API int (lua_yieldk) (lua_State *L, int nresults, lua_KContext ctx, LUA_API int (lua_yieldk) (lua_State *L, int nresults, lua_KContext ctx,
lua_KFunction k); lua_KFunction k);
LUA_API int (lua_resume) (lua_State *L, lua_State *from, int narg); LUA_API int (lua_resume) (lua_State *L, lua_State *from, int narg,
int *nres);
LUA_API int (lua_status) (lua_State *L); LUA_API int (lua_status) (lua_State *L);
LUA_API int (lua_isyieldable) (lua_State *L); LUA_API int (lua_isyieldable) (lua_State *L);
#define lua_yield(L,n) lua_yieldk(L, (n), 0, NULL) #define lua_yield(L,n) lua_yieldk(L, (n), 0, NULL)
/*
** Warning-related functions
*/
LUA_API void (lua_setwarnf) (lua_State *L, lua_WarnFunction f, void *ud);
LUA_API void (lua_warning) (lua_State *L, const char *msg, int tocont);
/* /*
** garbage-collection function and options ** garbage-collection function and options
*/ */
@ -307,8 +336,10 @@ LUA_API int (lua_isyieldable) (lua_State *L);
#define LUA_GCSETPAUSE 6 #define LUA_GCSETPAUSE 6
#define LUA_GCSETSTEPMUL 7 #define LUA_GCSETSTEPMUL 7
#define LUA_GCISRUNNING 9 #define LUA_GCISRUNNING 9
#define LUA_GCGEN 10
#define LUA_GCINC 11
LUA_API int (lua_gc) (lua_State *L, int what, int data); LUA_API int (lua_gc) (lua_State *L, int what, ...);
/* /*
@ -327,6 +358,8 @@ LUA_API size_t (lua_stringtonumber) (lua_State *L, const char *s);
LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud); LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud);
LUA_API void (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud); LUA_API void (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud);
LUA_API void (lua_toclose) (lua_State *L, int idx);
LUA_API void (lua_closeslot) (lua_State *L, int idx);
/* /*
@ -376,7 +409,7 @@ LUA_API void (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud);
/* /*
** {============================================================== ** {==============================================================
** compatibility macros for unsigned conversions ** compatibility macros
** =============================================================== ** ===============================================================
*/ */
#if defined(LUA_COMPAT_APIINTCASTS) #if defined(LUA_COMPAT_APIINTCASTS)
@ -386,6 +419,13 @@ LUA_API void (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud);
#define lua_tounsigned(L,i) lua_tounsignedx(L,(i),NULL) #define lua_tounsigned(L,i) lua_tounsignedx(L,(i),NULL)
#endif #endif
#define lua_newuserdata(L,s) lua_newuserdatauv(L,s,1)
#define lua_getuservalue(L,idx) lua_getiuservalue(L,idx,1)
#define lua_setuservalue(L,idx) lua_setiuservalue(L,idx,1)
#define LUA_NUMTAGS LUA_NUMTYPES
/* }============================================================== */ /* }============================================================== */
/* /*
@ -413,12 +453,6 @@ LUA_API void (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud);
#define LUA_MASKLINE (1 << LUA_HOOKLINE) #define LUA_MASKLINE (1 << LUA_HOOKLINE)
#define LUA_MASKCOUNT (1 << LUA_HOOKCOUNT) #define LUA_MASKCOUNT (1 << LUA_HOOKCOUNT)
typedef struct lua_Debug lua_Debug; /* activation record */
/* Functions to be called by the debugger 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_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 int (lua_getinfo) (lua_State *L, const char *what, lua_Debug *ar);
@ -436,6 +470,7 @@ LUA_API lua_Hook (lua_gethook) (lua_State *L);
LUA_API int (lua_gethookmask) (lua_State *L); LUA_API int (lua_gethookmask) (lua_State *L);
LUA_API int (lua_gethookcount) (lua_State *L); LUA_API int (lua_gethookcount) (lua_State *L);
LUA_API int (lua_setcstacklimit) (lua_State *L, unsigned int limit);
struct lua_Debug { struct lua_Debug {
int event; int event;
@ -443,6 +478,7 @@ struct lua_Debug {
const char *namewhat; /* (n) 'global', 'local', 'field', 'method' */ const char *namewhat; /* (n) 'global', 'local', 'field', 'method' */
const char *what; /* (S) 'Lua', 'C', 'main', 'tail' */ const char *what; /* (S) 'Lua', 'C', 'main', 'tail' */
const char *source; /* (S) */ const char *source; /* (S) */
size_t srclen; /* (S) */
int currentline; /* (l) */ int currentline; /* (l) */
int linedefined; /* (S) */ int linedefined; /* (S) */
int lastlinedefined; /* (S) */ int lastlinedefined; /* (S) */
@ -450,6 +486,8 @@ struct lua_Debug {
unsigned char nparams;/* (u) number of parameters */ unsigned char nparams;/* (u) number of parameters */
char isvararg; /* (u) */ char isvararg; /* (u) */
char istailcall; /* (t) */ char istailcall; /* (t) */
unsigned short ftransfer; /* (r) index of first value transferred */
unsigned short ntransfer; /* (r) number of transferred values */
char short_src[LUA_IDSIZE]; /* (S) */ char short_src[LUA_IDSIZE]; /* (S) */
/* private part */ /* private part */
struct CallInfo *i_ci; /* active function */ struct CallInfo *i_ci; /* active function */
@ -459,7 +497,7 @@ struct lua_Debug {
/****************************************************************************** /******************************************************************************
* Copyright (C) 1994-2020 Lua.org, PUC-Rio. * Copyright (C) 1994-2024 Lua.org, PUC-Rio.
* *
* Permission is hereby granted, free of charge, to any person obtaining * Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the * a copy of this software and associated documentation files (the

Datei anzeigen

@ -1,5 +1,5 @@
/* /*
** $Id: luaconf.h,v 1.259.1.1 2017/04/19 17:29:57 roberto Exp $ ** $Id: luaconf.h $
** Configuration file for Lua ** Configuration file for Lua
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@ -14,6 +14,16 @@
/* /*
** =================================================================== ** ===================================================================
** General Configuration File for Lua
**
** Some definitions here can be changed externally, through the compiler
** (e.g., with '-D' options): They are commented out or protected
** by '#if !defined' guards. However, several other definitions
** should be changed directly here, either because they affect the
** Lua ABI (by making the changes here, you ensure that all software
** connected to Lua, such as C libraries, will be compiled with the same
** configuration); or because they are seldom changed.
**
** Search for "@@" to find all configurable definitions. ** Search for "@@" to find all configurable definitions.
** =================================================================== ** ===================================================================
*/ */
@ -22,20 +32,10 @@
/* /*
** {==================================================================== ** {====================================================================
** System Configuration: macros to adapt (if needed) Lua to some ** System Configuration: macros to adapt (if needed) Lua to some
** particular platform, for instance compiling it with 32-bit numbers or ** particular platform, for instance restricting it to C89.
** restricting it to C89.
** ===================================================================== ** =====================================================================
*/ */
/*
@@ LUA_32BITS enables Lua with 32-bit integers and 32-bit floats. You
** can also define LUA_32BITS in the make file, but changing here you
** ensure that all software connected to Lua will be compiled with the
** same configuration.
*/
/* #define LUA_32BITS */
/* /*
@@ LUA_USE_C89 controls the use of non-ISO-C89 features. @@ LUA_USE_C89 controls the use of non-ISO-C89 features.
** Define it if you want Lua to avoid the use of a few C99 features ** Define it if you want Lua to avoid the use of a few C99 features
@ -61,45 +61,43 @@
#if defined(LUA_USE_LINUX) #if defined(LUA_USE_LINUX)
#define LUA_USE_POSIX #define LUA_USE_POSIX
#define LUA_USE_DLOPEN /* needs an extra library: -ldl */ #define LUA_USE_DLOPEN /* needs an extra library: -ldl */
#define LUA_USE_READLINE /* needs some extra libraries */
#endif #endif
#if defined(LUA_USE_MACOSX) #if defined(LUA_USE_MACOSX)
#define LUA_USE_POSIX #define LUA_USE_POSIX
#define LUA_USE_DLOPEN /* MacOS does not need -ldl */ #define LUA_USE_DLOPEN /* MacOS does not need -ldl */
#define LUA_USE_READLINE /* needs an extra library: -lreadline */ #endif
#if defined(LUA_USE_IOS)
#define LUA_USE_POSIX
#define LUA_USE_DLOPEN
#endif #endif
/* /*
@@ LUA_C89_NUMBERS ensures that Lua uses the largest types available for @@ LUAI_IS32INT is true iff 'int' has (at least) 32 bits.
** C89 ('long' and 'double'); Windows always has '__int64', so it does
** not need to use this case.
*/ */
#if defined(LUA_USE_C89) && !defined(LUA_USE_WINDOWS) #define LUAI_IS32INT ((UINT_MAX >> 30) >= 3)
#define LUA_C89_NUMBERS
#endif /* }================================================================== */
/* /*
@@ LUAI_BITSINT defines the (minimum) number of bits in an 'int'. ** {==================================================================
** Configuration for Number types. These options should not be
** set externally, because any other code connected to Lua must
** use the same configuration.
** ===================================================================
*/ */
/* avoid undefined shifts */
#if ((INT_MAX >> 15) >> 15) >= 1
#define LUAI_BITSINT 32
#else
/* 'int' always must have at least 16 bits */
#define LUAI_BITSINT 16
#endif
/* /*
@@ LUA_INT_TYPE defines the type for Lua integers. @@ LUA_INT_TYPE defines the type for Lua integers.
@@ LUA_FLOAT_TYPE defines the type for Lua floats. @@ LUA_FLOAT_TYPE defines the type for Lua floats.
** Lua should work fine with any mix of these options (if supported ** Lua should work fine with any mix of these options supported
** by your C compiler). The usual configurations are 64-bit integers ** by your C compiler. The usual configurations are 64-bit integers
** and 'double' (the default), 32-bit integers and 'float' (for ** and 'double' (the default), 32-bit integers and 'float' (for
** restricted platforms), and 'long'/'double' (for C compilers not ** restricted platforms), and 'long'/'double' (for C compilers not
** compliant with C99, which may not have support for 'long long'). ** compliant with C99, which may not have support for 'long long').
@ -115,43 +113,61 @@
#define LUA_FLOAT_DOUBLE 2 #define LUA_FLOAT_DOUBLE 2
#define LUA_FLOAT_LONGDOUBLE 3 #define LUA_FLOAT_LONGDOUBLE 3
#if defined(LUA_32BITS) /* { */
/* Default configuration ('long long' and 'double', for 64-bit Lua) */
#define LUA_INT_DEFAULT LUA_INT_LONGLONG
#define LUA_FLOAT_DEFAULT LUA_FLOAT_DOUBLE
/*
@@ LUA_32BITS enables Lua with 32-bit integers and 32-bit floats.
*/
#define LUA_32BITS 0
/*
@@ LUA_C89_NUMBERS ensures that Lua uses the largest types available for
** C89 ('long' and 'double'); Windows always has '__int64', so it does
** not need to use this case.
*/
#if defined(LUA_USE_C89) && !defined(LUA_USE_WINDOWS)
#define LUA_C89_NUMBERS 1
#else
#define LUA_C89_NUMBERS 0
#endif
#if LUA_32BITS /* { */
/* /*
** 32-bit integers and 'float' ** 32-bit integers and 'float'
*/ */
#if LUAI_BITSINT >= 32 /* use 'int' if big enough */ #if LUAI_IS32INT /* use 'int' if big enough */
#define LUA_INT_TYPE LUA_INT_INT #define LUA_INT_TYPE LUA_INT_INT
#else /* otherwise use 'long' */ #else /* otherwise use 'long' */
#define LUA_INT_TYPE LUA_INT_LONG #define LUA_INT_TYPE LUA_INT_LONG
#endif #endif
#define LUA_FLOAT_TYPE LUA_FLOAT_FLOAT #define LUA_FLOAT_TYPE LUA_FLOAT_FLOAT
#elif defined(LUA_C89_NUMBERS) /* }{ */ #elif LUA_C89_NUMBERS /* }{ */
/* /*
** largest types available for C89 ('long' and 'double') ** largest types available for C89 ('long' and 'double')
*/ */
#define LUA_INT_TYPE LUA_INT_LONG #define LUA_INT_TYPE LUA_INT_LONG
#define LUA_FLOAT_TYPE LUA_FLOAT_DOUBLE #define LUA_FLOAT_TYPE LUA_FLOAT_DOUBLE
#else /* }{ */
/* use defaults */
#define LUA_INT_TYPE LUA_INT_DEFAULT
#define LUA_FLOAT_TYPE LUA_FLOAT_DEFAULT
#endif /* } */ #endif /* } */
/*
** default configuration for 64-bit Lua ('long long' and 'double')
*/
#if !defined(LUA_INT_TYPE)
#define LUA_INT_TYPE LUA_INT_LONGLONG
#endif
#if !defined(LUA_FLOAT_TYPE)
#define LUA_FLOAT_TYPE LUA_FLOAT_DOUBLE
#endif
/* }================================================================== */ /* }================================================================== */
/* /*
** {================================================================== ** {==================================================================
** Configuration for Paths. ** Configuration for Paths.
@ -179,6 +195,7 @@
** hierarchy or if you want to install your libraries in ** hierarchy or if you want to install your libraries in
** non-conventional directories. ** non-conventional directories.
*/ */
#define LUA_VDIR LUA_VERSION_MAJOR "." LUA_VERSION_MINOR #define LUA_VDIR LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
#if defined(_WIN32) /* { */ #if defined(_WIN32) /* { */
/* /*
@ -188,29 +205,40 @@
#define LUA_LDIR "!\\lua\\" #define LUA_LDIR "!\\lua\\"
#define LUA_CDIR "!\\" #define LUA_CDIR "!\\"
#define LUA_SHRDIR "!\\..\\share\\lua\\" LUA_VDIR "\\" #define LUA_SHRDIR "!\\..\\share\\lua\\" LUA_VDIR "\\"
#if !defined(LUA_PATH_DEFAULT)
#define LUA_PATH_DEFAULT \ #define LUA_PATH_DEFAULT \
LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;" \ LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;" \
LUA_CDIR"?.lua;" LUA_CDIR"?\\init.lua;" \ LUA_CDIR"?.lua;" LUA_CDIR"?\\init.lua;" \
LUA_SHRDIR"?.lua;" LUA_SHRDIR"?\\init.lua;" \ LUA_SHRDIR"?.lua;" LUA_SHRDIR"?\\init.lua;" \
".\\?.lua;" ".\\?\\init.lua" ".\\?.lua;" ".\\?\\init.lua"
#endif
#if !defined(LUA_CPATH_DEFAULT)
#define LUA_CPATH_DEFAULT \ #define LUA_CPATH_DEFAULT \
LUA_CDIR"?.dll;" \ LUA_CDIR"?.dll;" \
LUA_CDIR"..\\lib\\lua\\" LUA_VDIR "\\?.dll;" \ LUA_CDIR"..\\lib\\lua\\" LUA_VDIR "\\?.dll;" \
LUA_CDIR"loadall.dll;" ".\\?.dll;" \ LUA_CDIR"loadall.dll;" ".\\?.dll"
LUA_CDIR"?53.dll;" ".\\?53.dll" #endif
#else /* }{ */ #else /* }{ */
#define LUA_ROOT "/usr/local/" #define LUA_ROOT "/usr/local/"
#define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/" #define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/"
#define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/" #define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/"
#if !defined(LUA_PATH_DEFAULT)
#define LUA_PATH_DEFAULT \ #define LUA_PATH_DEFAULT \
LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \ LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \
LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" \ LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" \
"./?.lua;" "./?/init.lua" "./?.lua;" "./?/init.lua"
#endif
#if !defined(LUA_CPATH_DEFAULT)
#define LUA_CPATH_DEFAULT \ #define LUA_CPATH_DEFAULT \
LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" "./?.so;" \ LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" "./?.so"
LUA_CDIR"lib?53.so;" "./lib?53.so" #endif
#endif /* } */ #endif /* } */
@ -219,12 +247,25 @@
** CHANGE it if your machine does not use "/" as the directory separator ** CHANGE it if your machine does not use "/" as the directory separator
** and is not Windows. (On Windows Lua automatically uses "\".) ** and is not Windows. (On Windows Lua automatically uses "\".)
*/ */
#if !defined(LUA_DIRSEP)
#if defined(_WIN32) #if defined(_WIN32)
#define LUA_DIRSEP "\\" #define LUA_DIRSEP "\\"
#else #else
#define LUA_DIRSEP "/" #define LUA_DIRSEP "/"
#endif #endif
#endif
/*
** LUA_IGMARK is a mark to ignore all after it when building the
** module name (e.g., used to build the luaopen_ function name).
** Typically, the suffix after the mark is the module version,
** as in "mod-v1.2.so".
*/
#define LUA_IGMARK "-"
/* }================================================================== */ /* }================================================================== */
@ -258,16 +299,18 @@
#endif /* } */ #endif /* } */
/* more often than not the libs go together with the core */ /*
** More often than not the libs go together with the core.
*/
#define LUALIB_API LUA_API #define LUALIB_API LUA_API
#define LUAMOD_API LUALIB_API #define LUAMOD_API LUA_API
/* /*
@@ LUAI_FUNC is a mark for all extern functions that are not to be @@ LUAI_FUNC is a mark for all extern functions that are not to be
** exported to outside modules. ** exported to outside modules.
@@ LUAI_DDEF and LUAI_DDEC are marks for all extern (const) variables @@ LUAI_DDEF and LUAI_DDEC are marks for all extern (const) variables,
** that are not to be exported to outside modules (LUAI_DDEF for ** none of which to be exported to outside modules (LUAI_DDEF for
** definitions and LUAI_DDEC for declarations). ** definitions and LUAI_DDEC for declarations).
** CHANGE them if you need to mark them in some special way. Elf/gcc ** 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 ** (versions 3.2 and later) mark them as "hidden" to optimize access
@ -279,12 +322,12 @@
*/ */
#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \ #if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \
defined(__ELF__) /* { */ defined(__ELF__) /* { */
#define LUAI_FUNC __attribute__((visibility("hidden"))) extern #define LUAI_FUNC __attribute__((visibility("internal"))) extern
#else /* }{ */ #else /* }{ */
#define LUAI_FUNC extern #define LUAI_FUNC extern
#endif /* } */ #endif /* } */
#define LUAI_DDEC LUAI_FUNC #define LUAI_DDEC(dec) LUAI_FUNC dec
#define LUAI_DDEF /* empty */ #define LUAI_DDEF /* empty */
/* }================================================================== */ /* }================================================================== */
@ -297,88 +340,43 @@
*/ */
/* /*
@@ LUA_COMPAT_5_2 controls other macros for compatibility with Lua 5.2. @@ LUA_COMPAT_5_3 controls other macros for compatibility with Lua 5.3.
@@ LUA_COMPAT_5_1 controls other macros for compatibility with Lua 5.1.
** You can define it to get all options, or change specific options ** You can define it to get all options, or change specific options
** to fit your specific needs. ** to fit your specific needs.
*/ */
#if defined(LUA_COMPAT_5_2) /* { */ #if defined(LUA_COMPAT_5_3) /* { */
/* /*
@@ LUA_COMPAT_MATHLIB controls the presence of several deprecated @@ LUA_COMPAT_MATHLIB controls the presence of several deprecated
** functions in the mathematical library. ** functions in the mathematical library.
** (These functions were already officially removed in 5.3;
** nevertheless they are still available here.)
*/ */
#define LUA_COMPAT_MATHLIB #define LUA_COMPAT_MATHLIB
/*
@@ LUA_COMPAT_BITLIB controls the presence of library 'bit32'.
*/
#define LUA_COMPAT_BITLIB
/*
@@ LUA_COMPAT_IPAIRS controls the effectiveness of the __ipairs metamethod.
*/
#define LUA_COMPAT_IPAIRS
/* /*
@@ LUA_COMPAT_APIINTCASTS controls the presence of macros for @@ LUA_COMPAT_APIINTCASTS controls the presence of macros for
** manipulating other integer types (lua_pushunsigned, lua_tounsigned, ** manipulating other integer types (lua_pushunsigned, lua_tounsigned,
** luaL_checkint, luaL_checklong, etc.) ** luaL_checkint, luaL_checklong, etc.)
** (These macros were also officially removed in 5.3, but they are still
** available here.)
*/ */
#define LUA_COMPAT_APIINTCASTS #define LUA_COMPAT_APIINTCASTS
#endif /* } */
#if defined(LUA_COMPAT_5_1) /* { */
/* Incompatibilities from 5.2 -> 5.3 */
#define LUA_COMPAT_MATHLIB
#define LUA_COMPAT_APIINTCASTS
/* /*
@@ LUA_COMPAT_UNPACK controls the presence of global 'unpack'. @@ LUA_COMPAT_LT_LE controls the emulation of the '__le' metamethod
** You can replace it with 'table.unpack'. ** using '__lt'.
*/ */
#define LUA_COMPAT_UNPACK #define LUA_COMPAT_LT_LE
/*
@@ LUA_COMPAT_LOADERS controls the presence of table 'package.loaders'.
** You can replace it with 'package.searchers'.
*/
#define LUA_COMPAT_LOADERS
/*
@@ macro 'lua_cpcall' emulates deprecated function lua_cpcall.
** You can call your C function directly (with light C functions).
*/
#define lua_cpcall(L,f,u) \
(lua_pushcfunction(L, (f)), \
lua_pushlightuserdata(L,(u)), \
lua_pcall(L,1,0,0))
/*
@@ LUA_COMPAT_LOG10 defines the function 'log10' in the math library.
** You can rewrite 'log10(x)' as 'log(x, 10)'.
*/
#define LUA_COMPAT_LOG10
/*
@@ LUA_COMPAT_LOADSTRING defines the function 'loadstring' in the base
** library. You can rewrite 'loadstring(s)' as 'load(s)'.
*/
#define LUA_COMPAT_LOADSTRING
/*
@@ LUA_COMPAT_MAXN defines the function 'maxn' in the table library.
*/
#define LUA_COMPAT_MAXN
/* /*
@@ The following macros supply trivial compatibility for some @@ The following macros supply trivial compatibility for some
** changes in the API. The macros themselves document how to ** changes in the API. The macros themselves document how to
** change your code to avoid using them. ** change your code to avoid using them.
** (Once more, these macros were officially removed in 5.3, but they are
** still available here.)
*/ */
#define lua_strlen(L,i) lua_rawlen(L, (i)) #define lua_strlen(L,i) lua_rawlen(L, (i))
@ -387,47 +385,31 @@
#define lua_equal(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPEQ) #define lua_equal(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPEQ)
#define lua_lessthan(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPLT) #define lua_lessthan(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPLT)
/*
@@ LUA_COMPAT_MODULE controls compatibility with previous
** module functions 'module' (Lua) and 'luaL_register' (C).
*/
#define LUA_COMPAT_MODULE
#endif /* } */ #endif /* } */
/*
@@ LUA_COMPAT_FLOATSTRING makes Lua format integral floats without a
@@ a float mark ('.0').
** This macro is not on by default even in compatibility mode,
** because this is not really an incompatibility.
*/
/* #define LUA_COMPAT_FLOATSTRING */
/* }================================================================== */ /* }================================================================== */
/* /*
** {================================================================== ** {==================================================================
** Configuration for Numbers. ** Configuration for Numbers (low-level part).
** Change these definitions if no predefined LUA_FLOAT_* / LUA_INT_* ** Change these definitions if no predefined LUA_FLOAT_* / LUA_INT_*
** satisfy your needs. ** satisfy your needs.
** =================================================================== ** ===================================================================
*/ */
/* /*
@@ LUA_NUMBER is the floating-point type used by Lua.
@@ LUAI_UACNUMBER is the result of a 'default argument promotion' @@ LUAI_UACNUMBER is the result of a 'default argument promotion'
@@ over a floating number. @@ over a floating number.
@@ l_mathlim(x) corrects limit name 'x' to the proper float type @@ l_floatatt(x) corrects float attribute 'x' to the proper float type
** by prefixing it with one of FLT/DBL/LDBL. ** by prefixing it with one of FLT/DBL/LDBL.
@@ LUA_NUMBER_FRMLEN is the length modifier for writing floats. @@ LUA_NUMBER_FRMLEN is the length modifier for writing floats.
@@ LUA_NUMBER_FMT is the format for writing floats. @@ LUA_NUMBER_FMT is the format for writing floats.
@@ lua_number2str converts a float to a string. @@ lua_number2str converts a float to a string.
@@ l_mathop allows the addition of an 'l' or 'f' to all math operations. @@ l_mathop allows the addition of an 'l' or 'f' to all math operations.
@@ l_floor takes the floor of a float. @@ l_floor takes the floor of a float.
@@ lua_str2number converts a decimal numeric string to a number. @@ lua_str2number converts a decimal numeral to a number.
*/ */
@ -439,12 +421,13 @@
l_sprintf((s), sz, LUA_NUMBER_FMT, (LUAI_UACNUMBER)(n)) l_sprintf((s), sz, LUA_NUMBER_FMT, (LUAI_UACNUMBER)(n))
/* /*
@@ lua_numbertointeger converts a float number to an integer, or @@ lua_numbertointeger converts a float number with an integral value
** returns 0 if float is not within the range of a lua_Integer. ** to an integer, or returns 0 if float is not within the range of
** (The range comparisons are tricky because of rounding. The tests ** a lua_Integer. (The range comparisons are tricky because of
** here assume a two-complement representation, where MININTEGER always ** rounding. The tests here assume a two-complement representation,
** has an exact representation as a float; MAXINTEGER may not have one, ** where MININTEGER always has an exact representation as a float;
** and therefore its conversion to float may have an ill-defined value.) ** MAXINTEGER may not have one, and therefore its conversion to float
** may have an ill-defined value.)
*/ */
#define lua_numbertointeger(n,p) \ #define lua_numbertointeger(n,p) \
((n) >= (LUA_NUMBER)(LUA_MININTEGER) && \ ((n) >= (LUA_NUMBER)(LUA_MININTEGER) && \
@ -458,7 +441,7 @@
#define LUA_NUMBER float #define LUA_NUMBER float
#define l_mathlim(n) (FLT_##n) #define l_floatatt(n) (FLT_##n)
#define LUAI_UACNUMBER double #define LUAI_UACNUMBER double
@ -474,7 +457,7 @@
#define LUA_NUMBER long double #define LUA_NUMBER long double
#define l_mathlim(n) (LDBL_##n) #define l_floatatt(n) (LDBL_##n)
#define LUAI_UACNUMBER long double #define LUAI_UACNUMBER long double
@ -489,7 +472,7 @@
#define LUA_NUMBER double #define LUA_NUMBER double
#define l_mathlim(n) (DBL_##n) #define l_floatatt(n) (DBL_##n)
#define LUAI_UACNUMBER double #define LUAI_UACNUMBER double
@ -509,16 +492,14 @@
/* /*
@@ LUA_INTEGER is the integer type used by Lua.
**
@@ LUA_UNSIGNED is the unsigned version of LUA_INTEGER. @@ LUA_UNSIGNED is the unsigned version of LUA_INTEGER.
**
@@ LUAI_UACINT is the result of a 'default argument promotion' @@ LUAI_UACINT is the result of a 'default argument promotion'
@@ over a lUA_INTEGER. @@ over a LUA_INTEGER.
@@ LUA_INTEGER_FRMLEN is the length modifier for reading/writing integers. @@ LUA_INTEGER_FRMLEN is the length modifier for reading/writing integers.
@@ LUA_INTEGER_FMT is the format for writing integers. @@ LUA_INTEGER_FMT is the format for writing integers.
@@ LUA_MAXINTEGER is the maximum value for a LUA_INTEGER. @@ LUA_MAXINTEGER is the maximum value for a LUA_INTEGER.
@@ LUA_MININTEGER is the minimum value for a LUA_INTEGER. @@ LUA_MININTEGER is the minimum value for a LUA_INTEGER.
@@ LUA_MAXUNSIGNED is the maximum value for a LUA_UNSIGNED.
@@ lua_integer2str converts an integer to a string. @@ lua_integer2str converts an integer to a string.
*/ */
@ -549,6 +530,8 @@
#define LUA_MAXINTEGER INT_MAX #define LUA_MAXINTEGER INT_MAX
#define LUA_MININTEGER INT_MIN #define LUA_MININTEGER INT_MIN
#define LUA_MAXUNSIGNED UINT_MAX
#elif LUA_INT_TYPE == LUA_INT_LONG /* }{ long */ #elif LUA_INT_TYPE == LUA_INT_LONG /* }{ long */
#define LUA_INTEGER long #define LUA_INTEGER long
@ -557,6 +540,8 @@
#define LUA_MAXINTEGER LONG_MAX #define LUA_MAXINTEGER LONG_MAX
#define LUA_MININTEGER LONG_MIN #define LUA_MININTEGER LONG_MIN
#define LUA_MAXUNSIGNED ULONG_MAX
#elif LUA_INT_TYPE == LUA_INT_LONGLONG /* }{ long long */ #elif LUA_INT_TYPE == LUA_INT_LONGLONG /* }{ long long */
/* use presence of macro LLONG_MAX as proxy for C99 compliance */ /* use presence of macro LLONG_MAX as proxy for C99 compliance */
@ -569,6 +554,8 @@
#define LUA_MAXINTEGER LLONG_MAX #define LUA_MAXINTEGER LLONG_MAX
#define LUA_MININTEGER LLONG_MIN #define LUA_MININTEGER LLONG_MIN
#define LUA_MAXUNSIGNED ULLONG_MAX
#elif defined(LUA_USE_WINDOWS) /* }{ */ #elif defined(LUA_USE_WINDOWS) /* }{ */
/* in Windows, can use specific Windows types */ /* in Windows, can use specific Windows types */
@ -578,6 +565,8 @@
#define LUA_MAXINTEGER _I64_MAX #define LUA_MAXINTEGER _I64_MAX
#define LUA_MININTEGER _I64_MIN #define LUA_MININTEGER _I64_MIN
#define LUA_MAXUNSIGNED _UI64_MAX
#else /* }{ */ #else /* }{ */
#error "Compiler does not support 'long long'. Use option '-DLUA_32BITS' \ #error "Compiler does not support 'long long'. Use option '-DLUA_32BITS' \
@ -612,7 +601,7 @@
/* /*
@@ lua_strx2number converts an hexadecimal numeric string to a number. @@ lua_strx2number converts a hexadecimal numeral to a number.
** In C99, 'strtod' does that conversion. Otherwise, you can ** In C99, 'strtod' does that conversion. Otherwise, you can
** leave 'lua_strx2number' undefined and Lua will provide its own ** leave 'lua_strx2number' undefined and Lua will provide its own
** implementation. ** implementation.
@ -630,7 +619,7 @@
/* /*
@@ lua_number2strx converts a float to an hexadecimal numeric string. @@ lua_number2strx converts a float to a hexadecimal numeral.
** In C99, 'sprintf' (with format specifiers '%a'/'%A') does that. ** In C99, 'sprintf' (with format specifiers '%a'/'%A') does that.
** Otherwise, you can leave 'lua_number2strx' undefined and Lua will ** Otherwise, you can leave 'lua_number2strx' undefined and Lua will
** provide its own implementation. ** provide its own implementation.
@ -676,12 +665,40 @@
/* /*
@@ lua_getlocaledecpoint gets the locale "radix character" (decimal point). @@ lua_getlocaledecpoint gets the locale "radix character" (decimal point).
** Change that if you do not want to use C locales. (Code using this ** Change that if you do not want to use C locales. (Code using this
** macro must include header 'locale.h'.) ** macro must include the header 'locale.h'.)
*/ */
#if !defined(lua_getlocaledecpoint) #if !defined(lua_getlocaledecpoint)
#define lua_getlocaledecpoint() (localeconv()->decimal_point[0]) #define lua_getlocaledecpoint() (localeconv()->decimal_point[0])
#endif #endif
/*
** macros to improve jump prediction, used mostly for error handling
** and debug facilities. (Some macros in the Lua API use these macros.
** Define LUA_NOBUILTIN if you do not want '__builtin_expect' in your
** code.)
*/
#if !defined(luai_likely)
#if defined(__GNUC__) && !defined(LUA_NOBUILTIN)
#define luai_likely(x) (__builtin_expect(((x) != 0), 1))
#define luai_unlikely(x) (__builtin_expect(((x) != 0), 0))
#else
#define luai_likely(x) (x)
#define luai_unlikely(x) (x)
#endif
#endif
#if defined(LUA_CORE) || defined(LUA_LIB)
/* shorter names for Lua's own use */
#define l_likely(x) luai_likely(x)
#define l_unlikely(x) luai_unlikely(x)
#endif
/* }================================================================== */ /* }================================================================== */
@ -717,7 +734,7 @@
** {================================================================== ** {==================================================================
** Macros that affect the API and must be stable (that is, must be the ** Macros that affect the API and must be stable (that is, must be the
** same when you compile Lua and when you compile code that links to ** same when you compile Lua and when you compile code that links to
** Lua). You probably do not want/need to change them. ** Lua).
** ===================================================================== ** =====================================================================
*/ */
@ -726,8 +743,9 @@
** CHANGE it if you need a different limit. This limit is arbitrary; ** CHANGE it if you need a different limit. This limit is arbitrary;
** its only purpose is to stop Lua from consuming unlimited stack ** its only purpose is to stop Lua from consuming unlimited stack
** space (and to reserve some numbers for pseudo-indices). ** space (and to reserve some numbers for pseudo-indices).
** (It must fit into max(size_t)/32 and max(int)/2.)
*/ */
#if LUAI_BITSINT >= 32 #if LUAI_IS32INT
#define LUAI_MAXSTACK 1000000 #define LUAI_MAXSTACK 1000000
#else #else
#define LUAI_MAXSTACK 15000 #define LUAI_MAXSTACK 15000
@ -744,35 +762,27 @@
/* /*
@@ LUA_IDSIZE gives the maximum size for the description of the source @@ LUA_IDSIZE gives the maximum size for the description of the source
@@ of a function in debug information. ** of a function in debug information.
** CHANGE it if you want a different size. ** CHANGE it if you want a different size.
*/ */
#define LUA_IDSIZE 60 #define LUA_IDSIZE 60
/* /*
@@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system. @@ LUAL_BUFFERSIZE is the initial buffer size used by the lauxlib
** CHANGE it if it uses too much C-stack space. (For long double, ** buffer system.
** 'string.format("%.99f", -1e4932)' needs 5034 bytes, so a
** smaller buffer would force a memory allocation for each call to
** 'string.format'.)
*/ */
#if LUA_FLOAT_TYPE == LUA_FLOAT_LONGDOUBLE #define LUAL_BUFFERSIZE ((int)(16 * sizeof(void*) * sizeof(lua_Number)))
#define LUAL_BUFFERSIZE 8192
#else
#define LUAL_BUFFERSIZE ((int)(0x80 * sizeof(void*) * sizeof(lua_Integer)))
#endif
/* }================================================================== */
/* /*
@@ LUA_QL describes how error messages quote program elements. @@ LUAI_MAXALIGN defines fields that, when used in a union, ensure
** Lua does not use these macros anymore; they are here for ** maximum alignment for the other items in that union.
** compatibility only.
*/ */
#define LUA_QL(x) "'" x "'" #define LUAI_MAXALIGN lua_Number n; double u; void *s; lua_Integer i; long l
#define LUA_QS LUA_QL("%s")
/* }================================================================== */

Datei anzeigen

@ -1,5 +1,5 @@
/* /*
** $Id: lualib.h,v 1.45.1.1 2017/04/19 17:20:42 roberto Exp $ ** $Id: lualib.h $
** Lua standard libraries ** Lua standard libraries
** See Copyright Notice in lua.h ** See Copyright Notice in lua.h
*/ */
@ -35,9 +35,6 @@ LUAMOD_API int (luaopen_string) (lua_State *L);
#define LUA_UTF8LIBNAME "utf8" #define LUA_UTF8LIBNAME "utf8"
LUAMOD_API int (luaopen_utf8) (lua_State *L); LUAMOD_API int (luaopen_utf8) (lua_State *L);
#define LUA_BITLIBNAME "bit32"
LUAMOD_API int (luaopen_bit32) (lua_State *L);
#define LUA_MATHLIBNAME "math" #define LUA_MATHLIBNAME "math"
LUAMOD_API int (luaopen_math) (lua_State *L); LUAMOD_API int (luaopen_math) (lua_State *L);
@ -52,10 +49,4 @@ LUAMOD_API int (luaopen_package) (lua_State *L);
LUALIB_API void (luaL_openlibs) (lua_State *L); LUALIB_API void (luaL_openlibs) (lua_State *L);
#if !defined(lua_assert)
#define lua_assert(x) ((void)0)
#endif
#endif #endif