opening TIC-80 sources
This commit is contained in:
		
							
								
								
									
										256
									
								
								include/lua/lauxlib.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										256
									
								
								include/lua/lauxlib.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,256 @@
 | 
			
		||||
/*
 | 
			
		||||
** $Id: lauxlib.h,v 1.128 2014/10/29 16:11:17 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_load' */
 | 
			
		||||
#define LUA_ERRFILE     (LUA_ERRERR+1)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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);
 | 
			
		||||
 | 
			
		||||
/* pre-defined 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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										485
									
								
								include/lua/lua.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										485
									
								
								include/lua/lua.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,485 @@
 | 
			
		||||
/*
 | 
			
		||||
** $Id: lua.h,v 1.325 2014/12/26 17:24:27 roberto Exp $
 | 
			
		||||
** Lua - A Scripting 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 <stdarg.h>
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "luaconf.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define LUA_VERSION_MAJOR	"5"
 | 
			
		||||
#define LUA_VERSION_MINOR	"3"
 | 
			
		||||
#define LUA_VERSION_NUM		503
 | 
			
		||||
#define LUA_VERSION_RELEASE	"0"
 | 
			
		||||
 | 
			
		||||
#define LUA_VERSION	"Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
 | 
			
		||||
#define LUA_RELEASE	LUA_VERSION "." LUA_VERSION_RELEASE
 | 
			
		||||
#define LUA_COPYRIGHT	LUA_RELEASE "  Copyright (C) 1994-2015 Lua.org, PUC-Rio"
 | 
			
		||||
#define LUA_AUTHORS	"R. Ierusalimschy, L. H. de Figueiredo, W. Celes"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* mark for precompiled code ('<esc>Lua') */
 | 
			
		||||
#define LUA_SIGNATURE	"\x1bLua"
 | 
			
		||||
 | 
			
		||||
/* option for multiple returns in 'lua_pcall' and 'lua_call' */
 | 
			
		||||
#define LUA_MULTRET	(-1)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** pseudo-indices
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_REGISTRYINDEX	LUAI_FIRSTPSEUDOIDX
 | 
			
		||||
#define lua_upvalueindex(i)	(LUA_REGISTRYINDEX - (i))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* thread status */
 | 
			
		||||
#define LUA_OK		0
 | 
			
		||||
#define LUA_YIELD	1
 | 
			
		||||
#define LUA_ERRRUN	2
 | 
			
		||||
#define LUA_ERRSYNTAX	3
 | 
			
		||||
#define LUA_ERRMEM	4
 | 
			
		||||
#define LUA_ERRGCMM	5
 | 
			
		||||
#define LUA_ERRERR	6
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef struct lua_State lua_State;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** 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
 | 
			
		||||
 | 
			
		||||
#define LUA_NUMTAGS		9
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* minimum Lua stack available to a C function */
 | 
			
		||||
#define LUA_MINSTACK	20
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* predefined values in the registry */
 | 
			
		||||
#define LUA_RIDX_MAINTHREAD	1
 | 
			
		||||
#define LUA_RIDX_GLOBALS	2
 | 
			
		||||
#define LUA_RIDX_LAST		LUA_RIDX_GLOBALS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* type of numbers in Lua */
 | 
			
		||||
typedef LUA_NUMBER lua_Number;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* type for integer functions */
 | 
			
		||||
typedef LUA_INTEGER lua_Integer;
 | 
			
		||||
 | 
			
		||||
/* unsigned integer type */
 | 
			
		||||
typedef LUA_UNSIGNED lua_Unsigned;
 | 
			
		||||
 | 
			
		||||
/* type for continuation-function contexts */
 | 
			
		||||
typedef LUA_KCONTEXT lua_KContext;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** Type for C functions registered with Lua
 | 
			
		||||
*/
 | 
			
		||||
typedef int (*lua_CFunction) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** Type for continuation functions
 | 
			
		||||
*/
 | 
			
		||||
typedef int (*lua_KFunction) (lua_State *L, int status, lua_KContext ctx);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** Type for 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);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** Type for memory-allocation functions
 | 
			
		||||
*/
 | 
			
		||||
typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** generic extra include file
 | 
			
		||||
*/
 | 
			
		||||
#if defined(LUA_USER_H)
 | 
			
		||||
#include LUA_USER_H
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** RCS ident string
 | 
			
		||||
*/
 | 
			
		||||
extern const char lua_ident[];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** 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);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LUA_API const lua_Number *(lua_version) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** basic stack manipulation
 | 
			
		||||
*/
 | 
			
		||||
LUA_API int   (lua_absindex) (lua_State *L, int idx);
 | 
			
		||||
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_rotate) (lua_State *L, int idx, int n);
 | 
			
		||||
LUA_API void  (lua_copy) (lua_State *L, int fromidx, int toidx);
 | 
			
		||||
LUA_API int   (lua_checkstack) (lua_State *L, int n);
 | 
			
		||||
 | 
			
		||||
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_isinteger) (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 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 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_rawlen) (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);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** Comparison and arithmetic functions
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#define LUA_OPADD	0	/* ORDER TM, ORDER OP */
 | 
			
		||||
#define LUA_OPSUB	1
 | 
			
		||||
#define LUA_OPMUL	2
 | 
			
		||||
#define LUA_OPMOD	3
 | 
			
		||||
#define LUA_OPPOW	4
 | 
			
		||||
#define LUA_OPDIV	5
 | 
			
		||||
#define LUA_OPIDIV	6
 | 
			
		||||
#define LUA_OPBAND	7
 | 
			
		||||
#define LUA_OPBOR	8
 | 
			
		||||
#define LUA_OPBXOR	9
 | 
			
		||||
#define LUA_OPSHL	10
 | 
			
		||||
#define LUA_OPSHR	11
 | 
			
		||||
#define LUA_OPUNM	12
 | 
			
		||||
#define LUA_OPBNOT	13
 | 
			
		||||
 | 
			
		||||
LUA_API void  (lua_arith) (lua_State *L, int op);
 | 
			
		||||
 | 
			
		||||
#define LUA_OPEQ	0
 | 
			
		||||
#define LUA_OPLT	1
 | 
			
		||||
#define LUA_OPLE	2
 | 
			
		||||
 | 
			
		||||
LUA_API int   (lua_rawequal) (lua_State *L, int idx1, int idx2);
 | 
			
		||||
LUA_API int   (lua_compare) (lua_State *L, int idx1, int idx2, int op);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** 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 const char *(lua_pushlstring) (lua_State *L, const char *s, size_t len);
 | 
			
		||||
LUA_API const char *(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 int (lua_getglobal) (lua_State *L, const char *name);
 | 
			
		||||
LUA_API int (lua_gettable) (lua_State *L, int idx);
 | 
			
		||||
LUA_API int (lua_getfield) (lua_State *L, int idx, const char *k);
 | 
			
		||||
LUA_API int (lua_geti) (lua_State *L, int idx, lua_Integer n);
 | 
			
		||||
LUA_API int (lua_rawget) (lua_State *L, int idx);
 | 
			
		||||
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 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 int  (lua_getuservalue) (lua_State *L, int idx);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** set functions (stack -> Lua)
 | 
			
		||||
*/
 | 
			
		||||
LUA_API void  (lua_setglobal) (lua_State *L, const char *name);
 | 
			
		||||
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_seti) (lua_State *L, int idx, lua_Integer n);
 | 
			
		||||
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_rawsetp) (lua_State *L, int idx, const void *p);
 | 
			
		||||
LUA_API int   (lua_setmetatable) (lua_State *L, int objindex);
 | 
			
		||||
LUA_API void  (lua_setuservalue) (lua_State *L, int idx);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** 'load' and 'call' functions (load and run Lua code)
 | 
			
		||||
*/
 | 
			
		||||
LUA_API void  (lua_callk) (lua_State *L, int nargs, int nresults,
 | 
			
		||||
                           lua_KContext ctx, lua_KFunction k);
 | 
			
		||||
#define lua_call(L,n,r)		lua_callk(L, (n), (r), 0, NULL)
 | 
			
		||||
 | 
			
		||||
LUA_API int   (lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc,
 | 
			
		||||
                            lua_KContext ctx, lua_KFunction k);
 | 
			
		||||
#define lua_pcall(L,n,r,f)	lua_pcallk(L, (n), (r), (f), 0, NULL)
 | 
			
		||||
 | 
			
		||||
LUA_API int   (lua_load) (lua_State *L, lua_Reader reader, void *dt,
 | 
			
		||||
                          const char *chunkname, const char *mode);
 | 
			
		||||
 | 
			
		||||
LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data, int strip);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** coroutine functions
 | 
			
		||||
*/
 | 
			
		||||
LUA_API int  (lua_yieldk)     (lua_State *L, int nresults, lua_KContext ctx,
 | 
			
		||||
                               lua_KFunction k);
 | 
			
		||||
LUA_API int  (lua_resume)     (lua_State *L, lua_State *from, int narg);
 | 
			
		||||
LUA_API int  (lua_status)     (lua_State *L);
 | 
			
		||||
LUA_API int (lua_isyieldable) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
#define lua_yield(L,n)		lua_yieldk(L, (n), 0, NULL)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** 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
 | 
			
		||||
#define LUA_GCISRUNNING		9
 | 
			
		||||
 | 
			
		||||
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 void  (lua_len)    (lua_State *L, int idx);
 | 
			
		||||
 | 
			
		||||
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 void      (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** {==============================================================
 | 
			
		||||
** some useful macros
 | 
			
		||||
** ===============================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#define lua_getextraspace(L)	((void *)((char *)(L) - LUA_EXTRASPACE))
 | 
			
		||||
 | 
			
		||||
#define lua_tonumber(L,i)	lua_tonumberx(L,(i),NULL)
 | 
			
		||||
#define lua_tointeger(L,i)	lua_tointegerx(L,(i),NULL)
 | 
			
		||||
 | 
			
		||||
#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_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_pushglobaltable(L)  \
 | 
			
		||||
	lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS)
 | 
			
		||||
 | 
			
		||||
#define lua_tostring(L,i)	lua_tolstring(L, (i), NULL)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define lua_insert(L,idx)	lua_rotate(L, (idx), 1)
 | 
			
		||||
 | 
			
		||||
#define lua_remove(L,idx)	(lua_rotate(L, (idx), -1), lua_pop(L, 1))
 | 
			
		||||
 | 
			
		||||
#define lua_replace(L,idx)	(lua_copy(L, -1, (idx)), lua_pop(L, 1))
 | 
			
		||||
 | 
			
		||||
/* }============================================================== */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** {==============================================================
 | 
			
		||||
** compatibility macros for unsigned conversions
 | 
			
		||||
** ===============================================================
 | 
			
		||||
*/
 | 
			
		||||
#if defined(LUA_COMPAT_APIINTCASTS)
 | 
			
		||||
 | 
			
		||||
#define lua_pushunsigned(L,n)	lua_pushinteger(L, (lua_Integer)(n))
 | 
			
		||||
#define lua_tounsignedx(L,i,is)	((lua_Unsigned)lua_tointegerx(L,i,is))
 | 
			
		||||
#define lua_tounsigned(L,i)	lua_tounsignedx(L,(i),NULL)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
/* }============================================================== */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** {======================================================================
 | 
			
		||||
** Debug API
 | 
			
		||||
** =======================================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** Event codes
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_HOOKCALL	0
 | 
			
		||||
#define LUA_HOOKRET	1
 | 
			
		||||
#define LUA_HOOKLINE	2
 | 
			
		||||
#define LUA_HOOKCOUNT	3
 | 
			
		||||
#define LUA_HOOKTAILCALL 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 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_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 void *(lua_upvalueid) (lua_State *L, int fidx, int n);
 | 
			
		||||
LUA_API void  (lua_upvaluejoin) (lua_State *L, int fidx1, int n1,
 | 
			
		||||
                                               int fidx2, int n2);
 | 
			
		||||
 | 
			
		||||
LUA_API void (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 linedefined;	/* (S) */
 | 
			
		||||
  int lastlinedefined;	/* (S) */
 | 
			
		||||
  unsigned char nups;	/* (u) number of upvalues */
 | 
			
		||||
  unsigned char nparams;/* (u) number of parameters */
 | 
			
		||||
  char isvararg;        /* (u) */
 | 
			
		||||
  char istailcall;	/* (t) */
 | 
			
		||||
  char short_src[LUA_IDSIZE]; /* (S) */
 | 
			
		||||
  /* private part */
 | 
			
		||||
  struct CallInfo *i_ci;  /* active function */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* }====================================================================== */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/******************************************************************************
 | 
			
		||||
* Copyright (C) 1994-2015 Lua.org, PUC-Rio.
 | 
			
		||||
*
 | 
			
		||||
* 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
 | 
			
		||||
							
								
								
									
										9
									
								
								include/lua/lua.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								include/lua/lua.hpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
// lua.hpp
 | 
			
		||||
// Lua header files for C++
 | 
			
		||||
// <<extern "C">> not supplied automatically because Lua also compiles as C++
 | 
			
		||||
 | 
			
		||||
extern "C" {
 | 
			
		||||
#include "lua.h"
 | 
			
		||||
#include "lualib.h"
 | 
			
		||||
#include "lauxlib.h"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										737
									
								
								include/lua/luaconf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										737
									
								
								include/lua/luaconf.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,737 @@
 | 
			
		||||
/*
 | 
			
		||||
** $Id: luaconf.h,v 1.238 2014/12/29 13:27:55 roberto Exp $
 | 
			
		||||
** Configuration file for Lua
 | 
			
		||||
** See Copyright Notice in lua.h
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef luaconf_h
 | 
			
		||||
#define luaconf_h
 | 
			
		||||
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
#include <stddef.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** ===================================================================
 | 
			
		||||
** Search for "@@" to find all configurable definitions.
 | 
			
		||||
** ===================================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** {====================================================================
 | 
			
		||||
** System Configuration: macros to adapt (if needed) Lua to some
 | 
			
		||||
** particular platform, for instance compiling it with 32-bit numbers or
 | 
			
		||||
** 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.
 | 
			
		||||
** Define it if you want Lua to avoid the use of a few C99 features
 | 
			
		||||
** or Windows-specific features on Windows.
 | 
			
		||||
*/
 | 
			
		||||
/* #define LUA_USE_C89 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** By default, Lua on Windows use (some) specific Windows features
 | 
			
		||||
*/
 | 
			
		||||
#if !defined(LUA_USE_C89) && defined(_WIN32) && !defined(_WIN32_WCE)
 | 
			
		||||
#define LUA_USE_WINDOWS  /* enable goodies for regular Windows */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if defined(LUA_USE_WINDOWS)
 | 
			
		||||
#define LUA_DL_DLL	/* enable support for DLL */
 | 
			
		||||
#define LUA_USE_C89	/* broadly, Windows is C89 */
 | 
			
		||||
#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_USE_DLOPEN		/* MacOS does not need -ldl */
 | 
			
		||||
#define LUA_USE_READLINE	/* needs an extra library: -lreadline */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ 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
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ LUAI_BITSINT defines the (minimum) number of bits in an 'int'.
 | 
			
		||||
*/
 | 
			
		||||
/* 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_INT / LUA_INT_LONG / LUA_INT_LONGLONG defines the type for
 | 
			
		||||
** Lua integers.
 | 
			
		||||
@@ LUA_REAL_FLOAT / LUA_REAL_DOUBLE / LUA_REAL_LONGDOUBLE defines
 | 
			
		||||
** the type for Lua floats.
 | 
			
		||||
** Lua should work fine with any mix of these options (if supported
 | 
			
		||||
** by your C compiler). The usual configurations are 64-bit integers
 | 
			
		||||
** and 'double' (the default), 32-bit integers and 'float' (for
 | 
			
		||||
** restricted platforms), and 'long'/'double' (for C compilers not
 | 
			
		||||
** compliant with C99, which may not have support for 'long long').
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#if defined(LUA_32BITS)		/* { */
 | 
			
		||||
/*
 | 
			
		||||
** 32-bit integers and 'float'
 | 
			
		||||
*/
 | 
			
		||||
#if LUAI_BITSINT >= 32  /* use 'int' if big enough */
 | 
			
		||||
#define LUA_INT_INT
 | 
			
		||||
#else  /* otherwise use 'long' */
 | 
			
		||||
#define LUA_INT_LONG
 | 
			
		||||
#endif
 | 
			
		||||
#define LUA_REAL_FLOAT
 | 
			
		||||
 | 
			
		||||
#elif defined(LUA_C89_NUMBERS)	/* }{ */
 | 
			
		||||
/*
 | 
			
		||||
** largest types available for C89 ('long' and 'double')
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_INT_LONG
 | 
			
		||||
#define LUA_REAL_DOUBLE
 | 
			
		||||
 | 
			
		||||
#else				/* }{ */
 | 
			
		||||
/*
 | 
			
		||||
** default configuration for 64-bit Lua ('long long' and 'double')
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_INT_LONGLONG
 | 
			
		||||
#define LUA_REAL_DOUBLE
 | 
			
		||||
 | 
			
		||||
#endif								/* } */
 | 
			
		||||
 | 
			
		||||
/* }================================================================== */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** {==================================================================
 | 
			
		||||
** Configuration for Paths.
 | 
			
		||||
** ===================================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ 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.
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_VDIR	LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
 | 
			
		||||
#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_SHRDIR	"!\\..\\share\\lua\\" LUA_VDIR "\\"
 | 
			
		||||
#define LUA_PATH_DEFAULT  \
 | 
			
		||||
		LUA_LDIR"?.lua;"  LUA_LDIR"?\\init.lua;" \
 | 
			
		||||
		LUA_CDIR"?.lua;"  LUA_CDIR"?\\init.lua;" \
 | 
			
		||||
		LUA_SHRDIR"?.lua;" LUA_SHRDIR"?\\init.lua;" \
 | 
			
		||||
		".\\?.lua;" ".\\?\\init.lua"
 | 
			
		||||
#define LUA_CPATH_DEFAULT \
 | 
			
		||||
		LUA_CDIR"?.dll;" \
 | 
			
		||||
		LUA_CDIR"..\\lib\\lua\\" LUA_VDIR "\\?.dll;" \
 | 
			
		||||
		LUA_CDIR"loadall.dll;" ".\\?.dll;" \
 | 
			
		||||
    LUA_CDIR"?53.dll;" ".\\?53.dll"
 | 
			
		||||
 | 
			
		||||
#else			/* }{ */
 | 
			
		||||
 | 
			
		||||
#define LUA_ROOT	"/usr/local/"
 | 
			
		||||
#define LUA_LDIR	LUA_ROOT "share/lua/" LUA_VDIR "/"
 | 
			
		||||
#define LUA_CDIR	LUA_ROOT "lib/lua/" LUA_VDIR "/"
 | 
			
		||||
#define LUA_PATH_DEFAULT  \
 | 
			
		||||
		LUA_LDIR"?.lua;"  LUA_LDIR"?/init.lua;" \
 | 
			
		||||
		LUA_CDIR"?.lua;"  LUA_CDIR"?/init.lua;" \
 | 
			
		||||
		"./?.lua;" "./?/init.lua"
 | 
			
		||||
#define LUA_CPATH_DEFAULT \
 | 
			
		||||
		LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" "./?.so;" \
 | 
			
		||||
    LUA_CDIR"lib?53.so;" "./lib?53.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
 | 
			
		||||
 | 
			
		||||
/* }================================================================== */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** {==================================================================
 | 
			
		||||
** Marks for exported symbols in the C code
 | 
			
		||||
** ===================================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ LUA_API is a mark for all core API functions.
 | 
			
		||||
@@ LUALIB_API is a mark for all auxiliary library functions.
 | 
			
		||||
@@ LUAMOD_API is a mark for all standard library opening 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
 | 
			
		||||
#define LUAMOD_API	LUALIB_API
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ LUAI_FUNC is a mark for all extern functions that are not to be
 | 
			
		||||
** exported to outside modules.
 | 
			
		||||
@@ LUAI_DDEF and LUAI_DDEC are marks for all extern (const) variables
 | 
			
		||||
** that are not to be exported to outside modules (LUAI_DDEF for
 | 
			
		||||
** definitions and LUAI_DDEC for declarations).
 | 
			
		||||
** 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. Not all elf targets support
 | 
			
		||||
** this attribute. Unfortunately, gcc does not offer a way to check
 | 
			
		||||
** whether the target offers that support, and those without support
 | 
			
		||||
** give a warning about it. To avoid these warnings, change to the
 | 
			
		||||
** default definition.
 | 
			
		||||
*/
 | 
			
		||||
#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \
 | 
			
		||||
    defined(__ELF__)		/* { */
 | 
			
		||||
#define LUAI_FUNC	__attribute__((visibility("hidden"))) extern
 | 
			
		||||
#else				/* }{ */
 | 
			
		||||
#define LUAI_FUNC	extern
 | 
			
		||||
#endif				/* } */
 | 
			
		||||
 | 
			
		||||
#define LUAI_DDEC	LUAI_FUNC
 | 
			
		||||
#define LUAI_DDEF	/* empty */
 | 
			
		||||
 | 
			
		||||
/* }================================================================== */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** {==================================================================
 | 
			
		||||
** Compatibility with previous versions
 | 
			
		||||
** ===================================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ LUA_COMPAT_5_2 controls other macros for compatibility with Lua 5.2.
 | 
			
		||||
@@ 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
 | 
			
		||||
** to fit your specific needs.
 | 
			
		||||
*/
 | 
			
		||||
#if defined(LUA_COMPAT_5_2)	/* { */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ LUA_COMPAT_MATHLIB controls the presence of several deprecated
 | 
			
		||||
** functions in the mathematical library.
 | 
			
		||||
*/
 | 
			
		||||
#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
 | 
			
		||||
** manipulating other integer types (lua_pushunsigned, lua_tounsigned,
 | 
			
		||||
** luaL_checkint, luaL_checklong, etc.)
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_COMPAT_APIINTCASTS
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ 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 */
 | 
			
		||||
 | 
			
		||||
#endif				/* } */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if defined(LUA_COMPAT_5_1)	/* { */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ LUA_COMPAT_UNPACK controls the presence of global 'unpack'.
 | 
			
		||||
** You can replace it with 'table.unpack'.
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_COMPAT_UNPACK
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ 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
 | 
			
		||||
** changes in the API. The macros themselves document how to
 | 
			
		||||
** change your code to avoid using them.
 | 
			
		||||
*/
 | 
			
		||||
#define lua_strlen(L,i)		lua_rawlen(L, (i))
 | 
			
		||||
 | 
			
		||||
#define lua_objlen(L,i)		lua_rawlen(L, (i))
 | 
			
		||||
 | 
			
		||||
#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)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ LUA_COMPAT_MODULE controls compatibility with previous
 | 
			
		||||
** module functions 'module' (Lua) and 'luaL_register' (C).
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_COMPAT_MODULE
 | 
			
		||||
 | 
			
		||||
#endif				/* } */
 | 
			
		||||
 | 
			
		||||
/* }================================================================== */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** {==================================================================
 | 
			
		||||
** Configuration for Numbers.
 | 
			
		||||
** Change these definitions if no predefined LUA_REAL_* / LUA_INT_*
 | 
			
		||||
** satisfy your needs.
 | 
			
		||||
** ===================================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ LUA_NUMBER is the floating-point type used by Lua.
 | 
			
		||||
**
 | 
			
		||||
@@ LUAI_UACNUMBER is the result of an 'usual argument conversion'
 | 
			
		||||
@@ over a floating number.
 | 
			
		||||
**
 | 
			
		||||
@@ LUA_NUMBER_FRMLEN is the length modifier for writing floats.
 | 
			
		||||
@@ LUA_NUMBER_FMT is the format for writing floats.
 | 
			
		||||
@@ lua_number2str converts a float to a string.
 | 
			
		||||
**
 | 
			
		||||
@@ l_mathop allows the addition of an 'l' or 'f' to all math operations.
 | 
			
		||||
**
 | 
			
		||||
@@ lua_str2number converts a decimal numeric string to a number.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#if defined(LUA_REAL_FLOAT)		/* { single float */
 | 
			
		||||
 | 
			
		||||
#define LUA_NUMBER	float
 | 
			
		||||
 | 
			
		||||
#define LUAI_UACNUMBER	double
 | 
			
		||||
 | 
			
		||||
#define LUA_NUMBER_FRMLEN	""
 | 
			
		||||
#define LUA_NUMBER_FMT		"%.7g"
 | 
			
		||||
 | 
			
		||||
#define l_mathop(op)		op##f
 | 
			
		||||
 | 
			
		||||
#define lua_str2number(s,p)	strtof((s), (p))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#elif defined(LUA_REAL_LONGDOUBLE)	/* }{ long double */
 | 
			
		||||
 | 
			
		||||
#define LUA_NUMBER	long double
 | 
			
		||||
 | 
			
		||||
#define LUAI_UACNUMBER	long double
 | 
			
		||||
 | 
			
		||||
#define LUA_NUMBER_FRMLEN	"L"
 | 
			
		||||
#define LUA_NUMBER_FMT		"%.19Lg"
 | 
			
		||||
 | 
			
		||||
#define l_mathop(op)		op##l
 | 
			
		||||
 | 
			
		||||
#define lua_str2number(s,p)	strtold((s), (p))
 | 
			
		||||
 | 
			
		||||
#elif defined(LUA_REAL_DOUBLE)		/* }{ double */
 | 
			
		||||
 | 
			
		||||
#define LUA_NUMBER	double
 | 
			
		||||
 | 
			
		||||
#define LUAI_UACNUMBER	double
 | 
			
		||||
 | 
			
		||||
#define LUA_NUMBER_FRMLEN	""
 | 
			
		||||
#define LUA_NUMBER_FMT		"%.14g"
 | 
			
		||||
 | 
			
		||||
#define l_mathop(op)		op
 | 
			
		||||
 | 
			
		||||
#define lua_str2number(s,p)	strtod((s), (p))
 | 
			
		||||
 | 
			
		||||
#else					/* }{ */
 | 
			
		||||
 | 
			
		||||
#error "numeric real type not defined"
 | 
			
		||||
 | 
			
		||||
#endif					/* } */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define l_floor(x)		(l_mathop(floor)(x))
 | 
			
		||||
 | 
			
		||||
#define lua_number2str(s,n)	sprintf((s), LUA_NUMBER_FMT, (n))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ lua_numbertointeger converts a float number to an integer, or
 | 
			
		||||
** returns 0 if float is not within the range of a lua_Integer.
 | 
			
		||||
** (The range comparisons are tricky because of rounding. The tests
 | 
			
		||||
** here assume a two-complement representation, where MININTEGER always
 | 
			
		||||
** has an exact representation as a float; MAXINTEGER may not have one,
 | 
			
		||||
** and therefore its conversion to float may have an ill-defined value.)
 | 
			
		||||
*/
 | 
			
		||||
#define lua_numbertointeger(n,p) \
 | 
			
		||||
  ((n) >= (LUA_NUMBER)(LUA_MININTEGER) && \
 | 
			
		||||
   (n) < -(LUA_NUMBER)(LUA_MININTEGER) && \
 | 
			
		||||
      (*(p) = (LUA_INTEGER)(n), 1))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ The luai_num* macros define the primitive operations over numbers.
 | 
			
		||||
** They should work for any size of floating numbers.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/* the following operations need the math library */
 | 
			
		||||
#if defined(lobject_c) || defined(lvm_c)
 | 
			
		||||
#include <math.h>
 | 
			
		||||
 | 
			
		||||
/* floor division (defined as 'floor(a/b)') */
 | 
			
		||||
#define luai_numidiv(L,a,b)	((void)L, l_mathop(floor)(luai_numdiv(L,a,b)))
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** module: defined as 'a - floor(a/b)*b'; the previous definition gives
 | 
			
		||||
** NaN when 'b' is huge, but the result should be 'a'. 'fmod' gives the
 | 
			
		||||
** result of 'a - trunc(a/b)*b', and therefore must be corrected when
 | 
			
		||||
** 'trunc(a/b) ~= floor(a/b)'. That happens when the division has a
 | 
			
		||||
** non-integer negative result, which is equivalent to the test below
 | 
			
		||||
*/
 | 
			
		||||
#define luai_nummod(L,a,b,m)  \
 | 
			
		||||
  { (m) = l_mathop(fmod)(a,b); if ((m)*(b) < 0) (m) += (b); }
 | 
			
		||||
 | 
			
		||||
/* exponentiation */
 | 
			
		||||
#define luai_numpow(L,a,b)	((void)L, l_mathop(pow)(a,b))
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* these are quite standard operations */
 | 
			
		||||
#if defined(LUA_CORE)
 | 
			
		||||
#define luai_numadd(L,a,b)	((a)+(b))
 | 
			
		||||
#define luai_numsub(L,a,b)	((a)-(b))
 | 
			
		||||
#define luai_nummul(L,a,b)	((a)*(b))
 | 
			
		||||
#define luai_numdiv(L,a,b)	((a)/(b))
 | 
			
		||||
#define luai_numunm(L,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_INTEGER is the integer type used by Lua.
 | 
			
		||||
**
 | 
			
		||||
@@ LUA_UNSIGNED is the unsigned version of LUA_INTEGER.
 | 
			
		||||
**
 | 
			
		||||
@@ LUAI_UACINT is the result of an 'usual argument conversion'
 | 
			
		||||
@@ over a lUA_INTEGER.
 | 
			
		||||
@@ LUA_INTEGER_FRMLEN is the length modifier for reading/writing integers.
 | 
			
		||||
@@ LUA_INTEGER_FMT is the format for writing integers.
 | 
			
		||||
@@ LUA_MAXINTEGER is the maximum value for a LUA_INTEGER.
 | 
			
		||||
@@ LUA_MININTEGER is the minimum value for a LUA_INTEGER.
 | 
			
		||||
@@ lua_integer2str converts an integer to a string.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* The following definitions are good for most cases here */
 | 
			
		||||
 | 
			
		||||
#define LUA_INTEGER_FMT		"%" LUA_INTEGER_FRMLEN "d"
 | 
			
		||||
#define lua_integer2str(s,n)	sprintf((s), LUA_INTEGER_FMT, (n))
 | 
			
		||||
 | 
			
		||||
#define LUAI_UACINT		LUA_INTEGER
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** use LUAI_UACINT here to avoid problems with promotions (which
 | 
			
		||||
** can turn a comparison between unsigneds into a signed comparison)
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_UNSIGNED		unsigned LUAI_UACINT
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* now the variable definitions */
 | 
			
		||||
 | 
			
		||||
#if defined(LUA_INT_INT)		/* { int */
 | 
			
		||||
 | 
			
		||||
#define LUA_INTEGER		int
 | 
			
		||||
#define LUA_INTEGER_FRMLEN	""
 | 
			
		||||
 | 
			
		||||
#define LUA_MAXINTEGER		INT_MAX
 | 
			
		||||
#define LUA_MININTEGER		INT_MIN
 | 
			
		||||
 | 
			
		||||
#elif defined(LUA_INT_LONG)	/* }{ long */
 | 
			
		||||
 | 
			
		||||
#define LUA_INTEGER		long
 | 
			
		||||
#define LUA_INTEGER_FRMLEN	"l"
 | 
			
		||||
 | 
			
		||||
#define LUA_MAXINTEGER		LONG_MAX
 | 
			
		||||
#define LUA_MININTEGER		LONG_MIN
 | 
			
		||||
 | 
			
		||||
#elif defined(LUA_INT_LONGLONG)	/* }{ long long */
 | 
			
		||||
 | 
			
		||||
#if defined(LLONG_MAX)		/* { */
 | 
			
		||||
/* use ISO C99 stuff */
 | 
			
		||||
 | 
			
		||||
#define LUA_INTEGER		long long
 | 
			
		||||
#define LUA_INTEGER_FRMLEN	"ll"
 | 
			
		||||
 | 
			
		||||
#define LUA_MAXINTEGER		LLONG_MAX
 | 
			
		||||
#define LUA_MININTEGER		LLONG_MIN
 | 
			
		||||
 | 
			
		||||
#elif defined(LUA_USE_WINDOWS) /* }{ */
 | 
			
		||||
/* in Windows, can use specific Windows types */
 | 
			
		||||
 | 
			
		||||
#define LUA_INTEGER		__int64
 | 
			
		||||
#define LUA_INTEGER_FRMLEN	"I64"
 | 
			
		||||
 | 
			
		||||
#define LUA_MAXINTEGER		_I64_MAX
 | 
			
		||||
#define LUA_MININTEGER		_I64_MIN
 | 
			
		||||
 | 
			
		||||
#else				/* }{ */
 | 
			
		||||
 | 
			
		||||
#error "Compiler does not support 'long long'. Use option '-DLUA_32BITS' \
 | 
			
		||||
  or '-DLUA_C89_NUMBERS' (see file 'luaconf.h' for details)"
 | 
			
		||||
 | 
			
		||||
#endif				/* } */
 | 
			
		||||
 | 
			
		||||
#else				/* }{ */
 | 
			
		||||
 | 
			
		||||
#error "numeric integer type not defined"
 | 
			
		||||
 | 
			
		||||
#endif				/* } */
 | 
			
		||||
 | 
			
		||||
/* }================================================================== */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** {==================================================================
 | 
			
		||||
** Dependencies with C99
 | 
			
		||||
** ===================================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ lua_strx2number converts an hexadecimal numeric string to a number.
 | 
			
		||||
** In C99, 'strtod' does both conversions. Otherwise, you can
 | 
			
		||||
** leave 'lua_strx2number' undefined and Lua will provide its own
 | 
			
		||||
** implementation.
 | 
			
		||||
*/
 | 
			
		||||
#if !defined(LUA_USE_C89)
 | 
			
		||||
#define lua_strx2number(s,p)	lua_str2number(s,p)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ LUA_USE_AFORMAT allows '%a'/'%A' specifiers in 'string.format'
 | 
			
		||||
** Enable it if the C function 'printf' supports these specifiers.
 | 
			
		||||
** (C99 demands it and Windows also supports it.)
 | 
			
		||||
*/
 | 
			
		||||
#if !defined(LUA_USE_C89) || defined(LUA_USE_WINDOWS)
 | 
			
		||||
#define LUA_USE_AFORMAT
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** 'strtof' and 'opf' variants for math functions are not valid in
 | 
			
		||||
** C89. Otherwise, the macro 'HUGE_VALF' is a good proxy for testing the
 | 
			
		||||
** availability of these variants. ('math.h' is already included in
 | 
			
		||||
** all files that use these macros.)
 | 
			
		||||
*/
 | 
			
		||||
#if defined(LUA_USE_C89) || (defined(HUGE_VAL) && !defined(HUGE_VALF))
 | 
			
		||||
#undef l_mathop  /* variants not available */
 | 
			
		||||
#undef lua_str2number
 | 
			
		||||
#define l_mathop(op)		(lua_Number)op  /* no variant */
 | 
			
		||||
#define lua_str2number(s,p)	((lua_Number)strtod((s), (p)))
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ LUA_KCONTEXT is the type of the context ('ctx') for continuation
 | 
			
		||||
** functions.  It must be a numerical type; Lua will use 'intptr_t' if
 | 
			
		||||
** available, otherwise it will use 'ptrdiff_t' (the nearest thing to
 | 
			
		||||
** 'intptr_t' in C89)
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_KCONTEXT	ptrdiff_t
 | 
			
		||||
 | 
			
		||||
#if !defined(LUA_USE_C89) && defined(__STDC_VERSION__) && \
 | 
			
		||||
    __STDC_VERSION__ >= 199901L
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#if defined (INTPTR_MAX)  /* even in C99 this type is optional */
 | 
			
		||||
#undef LUA_KCONTEXT
 | 
			
		||||
#define LUA_KCONTEXT	intptr_t
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* }================================================================== */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** {==================================================================
 | 
			
		||||
** 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
 | 
			
		||||
** Lua). You probably do not want/need to change them.
 | 
			
		||||
** =====================================================================
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ LUAI_MAXSTACK limits the size of the Lua stack.
 | 
			
		||||
** CHANGE it if you need a different limit. This limit is arbitrary;
 | 
			
		||||
** its only purpose is to stop Lua from consuming unlimited stack
 | 
			
		||||
** space (and to reserve some numbers for pseudo-indices).
 | 
			
		||||
*/
 | 
			
		||||
#if LUAI_BITSINT >= 32
 | 
			
		||||
#define LUAI_MAXSTACK		1000000
 | 
			
		||||
#else
 | 
			
		||||
#define LUAI_MAXSTACK		15000
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* reserve some space for error handling */
 | 
			
		||||
#define LUAI_FIRSTPSEUDOIDX	(-LUAI_MAXSTACK - 1000)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ LUA_EXTRASPACE defines the size of a raw memory area associated with
 | 
			
		||||
** a Lua state with very fast access.
 | 
			
		||||
** CHANGE it if you need a different size.
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_EXTRASPACE		(sizeof(void *))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ 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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ LUAI_MAXSHORTLEN is the maximum length for short strings, that is,
 | 
			
		||||
** strings that are internalized. (Cannot be smaller than reserved words
 | 
			
		||||
** or tags for metamethods, as these strings must be internalized;
 | 
			
		||||
** #("function") = 8, #("__newindex") = 10.)
 | 
			
		||||
*/
 | 
			
		||||
#define LUAI_MAXSHORTLEN        40
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system.
 | 
			
		||||
** CHANGE it if it uses too much C-stack space.
 | 
			
		||||
*/
 | 
			
		||||
#define LUAL_BUFFERSIZE	((int)(0x80 * sizeof(void*) * sizeof(lua_Integer)))
 | 
			
		||||
 | 
			
		||||
/* }================================================================== */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@@ LUA_QL describes how error messages quote program elements.
 | 
			
		||||
** Lua does not use these macros anymore; they are here for
 | 
			
		||||
** compatibility only.
 | 
			
		||||
*/
 | 
			
		||||
#define LUA_QL(x)	"'" x "'"
 | 
			
		||||
#define LUA_QS		LUA_QL("%s")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* =================================================================== */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
** Local configuration. You can use this space to add your redefinitions
 | 
			
		||||
** without modifying the main part of the file.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										58
									
								
								include/lua/lualib.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								include/lua/lualib.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
/*
 | 
			
		||||
** $Id: lualib.h,v 1.44 2014/02/06 17:32:33 roberto Exp $
 | 
			
		||||
** Lua standard libraries
 | 
			
		||||
** See Copyright Notice in lua.h
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef lualib_h
 | 
			
		||||
#define lualib_h
 | 
			
		||||
 | 
			
		||||
#include "lua.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LUAMOD_API int (luaopen_base) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
#define LUA_COLIBNAME	"coroutine"
 | 
			
		||||
LUAMOD_API int (luaopen_coroutine) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
#define LUA_TABLIBNAME	"table"
 | 
			
		||||
LUAMOD_API int (luaopen_table) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
#define LUA_IOLIBNAME	"io"
 | 
			
		||||
LUAMOD_API int (luaopen_io) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
#define LUA_OSLIBNAME	"os"
 | 
			
		||||
LUAMOD_API int (luaopen_os) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
#define LUA_STRLIBNAME	"string"
 | 
			
		||||
LUAMOD_API int (luaopen_string) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
#define LUA_UTF8LIBNAME	"utf8"
 | 
			
		||||
LUAMOD_API int (luaopen_utf8) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
#define LUA_BITLIBNAME	"bit32"
 | 
			
		||||
LUAMOD_API int (luaopen_bit32) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
#define LUA_MATHLIBNAME	"math"
 | 
			
		||||
LUAMOD_API int (luaopen_math) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
#define LUA_DBLIBNAME	"debug"
 | 
			
		||||
LUAMOD_API int (luaopen_debug) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
#define LUA_LOADLIBNAME	"package"
 | 
			
		||||
LUAMOD_API int (luaopen_package) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* open all previous libraries */
 | 
			
		||||
LUALIB_API void (luaL_openlibs) (lua_State *L);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if !defined(lua_assert)
 | 
			
		||||
#define lua_assert(x)	((void)0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
		Reference in New Issue
	
	Block a user