Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
lauxlib.h File Reference
#include <stddef.h>
#include <stdio.h>
#include "lua.h"

Go to the source code of this file.

Data Structures

struct  luaL_Reg
 
struct  luaL_Buffer
 
struct  luaL_Stream
 

Macros

#define LUA_ERRFILE   (LUA_ERRERR+1)
 
#define LUA_LOADED_TABLE   "_LOADED"
 
#define LUA_PRELOAD_TABLE   "_PRELOAD"
 
#define LUAL_NUMSIZES   (sizeof(lua_Integer)*16 + sizeof(lua_Number))
 
#define luaL_checkversion(L)    luaL_checkversion_(L, LUA_VERSION_NUM, LUAL_NUMSIZES)
 
#define LUA_NOREF   (-2)
 
#define LUA_REFNIL   (-1)
 
#define luaL_loadfile(L, f)   luaL_loadfilex(L,f,NULL)
 
#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)
 
#define luaL_addchar(B, c)
 
#define luaL_addsize(B, s)   ((B)->n += (s))
 
#define luaL_prepbuffer(B)   luaL_prepbuffsize(B, LUAL_BUFFERSIZE)
 
#define LUA_FILEHANDLE   "FILE*"
 
#define lua_writestring(s, l)   fwrite((s), sizeof(char), (l), stdout)
 
#define lua_writeline()   (lua_writestring("\n", 1), fflush(stdout))
 
#define lua_writestringerror(s, p)    (fprintf(stderr, (s), (p)), fflush(stderr))
 

Typedefs

typedef struct luaL_Reg luaL_Reg
 
typedef struct luaL_Buffer luaL_Buffer
 
typedef struct luaL_Stream luaL_Stream
 

Functions

LUALIB_API void luaL_checkversion_ (lua_State *L, lua_Number ver, size_t sz)
 
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)
 
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)
 
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_StateluaL_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)
 
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)
 

Macro Definition Documentation

◆ LUA_ERRFILE

#define LUA_ERRFILE   (LUA_ERRERR+1)

Definition at line 20 of file lua-5.3.6/src/lauxlib.h.

◆ LUA_FILEHANDLE

#define LUA_FILEHANDLE   "FILE*"

Definition at line 190 of file lua-5.3.6/src/lauxlib.h.

◆ LUA_LOADED_TABLE

#define LUA_LOADED_TABLE   "_LOADED"

◆ LUA_NOREF

#define LUA_NOREF   (-2)

Definition at line 77 of file lua-5.3.6/src/lauxlib.h.

◆ LUA_PRELOAD_TABLE

#define LUA_PRELOAD_TABLE   "_PRELOAD"

Definition at line 28 of file lua-5.3.6/src/lauxlib.h.

Referenced by luaopen_package(), searcher_preload(), and searcher_preload().

◆ LUA_REFNIL

#define LUA_REFNIL   (-1)

Definition at line 78 of file lua-5.3.6/src/lauxlib.h.

◆ lua_writeline

#define lua_writeline ( )    (lua_writestring("\n", 1), fflush(stdout))

◆ lua_writestring

#define lua_writestring ( s,
l )   fwrite((s), sizeof(char), (l), stdout)

Definition at line 223 of file lua-5.3.6/src/lauxlib.h.

Referenced by luaB_print(), luaB_print(), print_version(), and print_version().

◆ lua_writestringerror

#define lua_writestringerror ( s,
p )    (fprintf(stderr, (s), (p)), fflush(stderr))

Definition at line 233 of file lua-5.3.6/src/lauxlib.h.

233#define lua_writestringerror(s,p) \
234 (fprintf(stderr, (s), (p)), fflush(stderr))

Referenced by db_debug(), db_debug(), l_message(), l_message(), panic(), panic(), print_usage(), print_usage(), warnfcont(), and warnfon().

◆ luaL_addchar

#define luaL_addchar ( B,
c )
Value:
((void)((B)->n < (B)->size || luaL_prepbuffsize((B), 1)), \
((B)->b[(B)->n++] = (c)))
LUALIB_API char * luaL_prepbuffsize(luaL_Buffer *B, size_t sz)

Definition at line 157 of file lua-5.3.6/src/lauxlib.h.

157#define luaL_addchar(B,c) \
158 ((void)((B)->n < (B)->size || luaL_prepbuffsize((B), 1)), \
159 ((B)->b[(B)->n++] = (c)))

◆ luaL_addsize

#define luaL_addsize ( B,
s )   ((B)->n += (s))

Definition at line 161 of file lua-5.3.6/src/lauxlib.h.

◆ luaL_argcheck

#define luaL_argcheck ( L,
cond,
arg,
extramsg )    ((void)((cond) || luaL_argerror(L, (arg), (extramsg))))

Definition at line 122 of file lua-5.3.6/src/lauxlib.h.

122#define luaL_argcheck(L, cond,arg,extramsg) \
123 ((void)((cond) || luaL_argerror(L, (arg), (extramsg))))

◆ luaL_checkstring

#define luaL_checkstring ( L,
n )   (luaL_checklstring(L, (n), NULL))

Definition at line 124 of file lua-5.3.6/src/lauxlib.h.

◆ luaL_checkversion

#define luaL_checkversion ( L)     luaL_checkversion_(L, LUA_VERSION_NUM, LUAL_NUMSIZES)

Definition at line 40 of file lua-5.3.6/src/lauxlib.h.

40#define luaL_checkversion(L) \
41 luaL_checkversion_(L, LUA_VERSION_NUM, LUAL_NUMSIZES)

◆ luaL_dofile

#define luaL_dofile ( L,
fn )    (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0))

Definition at line 129 of file lua-5.3.6/src/lauxlib.h.

129#define luaL_dofile(L, fn) \
130 (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0))

◆ luaL_dostring

#define luaL_dostring ( L,
s )    (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0))

Definition at line 132 of file lua-5.3.6/src/lauxlib.h.

132#define luaL_dostring(L, s) \
133 (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0))

◆ luaL_getmetatable

#define luaL_getmetatable ( L,
n )   (lua_getfield(L, LUA_REGISTRYINDEX, (n)))

Definition at line 135 of file lua-5.3.6/src/lauxlib.h.

◆ luaL_loadbuffer

#define luaL_loadbuffer ( L,
s,
sz,
n )   luaL_loadbufferx(L,s,sz,n,NULL)

Definition at line 139 of file lua-5.3.6/src/lauxlib.h.

◆ luaL_loadfile

#define luaL_loadfile ( L,
f )   luaL_loadfilex(L,f,NULL)

Definition at line 86 of file lua-5.3.6/src/lauxlib.h.

◆ luaL_newlib

#define luaL_newlib ( L,
l )    (luaL_checkversion(L), luaL_newlibtable(L,l), luaL_setfuncs(L,l,0))

Definition at line 119 of file lua-5.3.6/src/lauxlib.h.

119#define luaL_newlib(L,l) \
120 (luaL_checkversion(L), luaL_newlibtable(L,l), luaL_setfuncs(L,l,0))

◆ luaL_newlibtable

#define luaL_newlibtable ( L,
l )    lua_createtable(L, 0, sizeof(l)/sizeof((l)[0]) - 1)

Definition at line 116 of file lua-5.3.6/src/lauxlib.h.

116#define luaL_newlibtable(L,l) \
117 lua_createtable(L, 0, sizeof(l)/sizeof((l)[0]) - 1)

◆ LUAL_NUMSIZES

#define LUAL_NUMSIZES   (sizeof(lua_Integer)*16 + sizeof(lua_Number))

Definition at line 37 of file lua-5.3.6/src/lauxlib.h.

Referenced by luaL_checkversion_().

◆ luaL_opt

#define luaL_opt ( L,
f,
n,
d )   (lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))

Definition at line 137 of file lua-5.3.6/src/lauxlib.h.

◆ luaL_optstring

#define luaL_optstring ( L,
n,
d )   (luaL_optlstring(L, (n), (d), NULL))

Definition at line 125 of file lua-5.3.6/src/lauxlib.h.

◆ luaL_prepbuffer

#define luaL_prepbuffer ( B)    luaL_prepbuffsize(B, LUAL_BUFFERSIZE)

Definition at line 172 of file lua-5.3.6/src/lauxlib.h.

◆ luaL_typename

#define luaL_typename ( L,
i )   lua_typename(L, lua_type(L,(i)))

Definition at line 127 of file lua-5.3.6/src/lauxlib.h.

Typedef Documentation

◆ luaL_Buffer

typedef struct luaL_Buffer luaL_Buffer

◆ luaL_Reg

typedef struct luaL_Reg luaL_Reg

◆ luaL_Stream

typedef struct luaL_Stream luaL_Stream

Function Documentation

◆ luaL_addlstring()

LUALIB_API void luaL_addlstring ( luaL_Buffer * B,
const char * s,
size_t l )

Definition at line 436 of file lua-5.1.5/src/lauxlib.c.

436 {
437 while (l--)
438 luaL_addchar(B, *s++);
439}
#define luaL_addchar(B, c)
CURL_EXTERN CURLMcode curl_socket_t s
Definition multi.h:318

◆ luaL_addstring()

LUALIB_API void luaL_addstring ( luaL_Buffer * B,
const char * s )

Definition at line 442 of file lua-5.1.5/src/lauxlib.c.

442 {
443 luaL_addlstring(B, s, strlen(s));
444}
LUALIB_API void luaL_addlstring(luaL_Buffer *B, const char *s, size_t l)

◆ luaL_addvalue()

LUALIB_API void luaL_addvalue ( luaL_Buffer * B)

Definition at line 454 of file lua-5.1.5/src/lauxlib.c.

454 {
455 lua_State *L = B->L;
456 size_t vl;
457 const char *s = lua_tolstring(L, -1, &vl);
458 if (vl <= bufffree(B)) { /* fit into buffer? */
459 memcpy(B->p, s, vl); /* put it there */
460 B->p += vl;
461 lua_pop(L, 1); /* remove from stack */
462 }
463 else {
464 if (emptybuffer(B))
465 lua_insert(L, -2); /* put buffer before new value */
466 B->lvl++; /* add new value into B stack */
467 adjuststack(B);
468 }
469}
LUA_API const char * lua_tolstring(lua_State *L, int idx, size_t *len)
static int emptybuffer(luaL_Buffer *B)
static void adjuststack(luaL_Buffer *B)
#define bufffree(B)
#define lua_pop(L, n)
#define lua_insert(L, idx)

◆ luaL_argerror()

LUALIB_API int luaL_argerror ( lua_State * L,
int arg,
const char * extramsg )

Definition at line 43 of file lua-5.1.5/src/lauxlib.c.

43 {
44 lua_Debug ar;
45 if (!lua_getstack(L, 0, &ar)) /* no stack frame? */
46 return luaL_error(L, "bad argument #%d (%s)", narg, extramsg);
47 lua_getinfo(L, "n", &ar);
48 if (strcmp(ar.namewhat, "method") == 0) {
49 narg--; /* do not count `self' */
50 if (narg == 0) /* error is in the self argument itself? */
51 return luaL_error(L, "calling " LUA_QS " on bad self (%s)",
52 ar.name, extramsg);
53 }
54 if (ar.name == NULL)
55 ar.name = "?";
56 return luaL_error(L, "bad argument #%d to " LUA_QS " (%s)",
57 narg, ar.name, extramsg);
58}
#define NULL
Definition gmacros.h:924
LUALIB_API int luaL_error(lua_State *L, const char *fmt,...)
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)
#define LUA_QS
const char * name
const char * namewhat

◆ luaL_buffinit()

LUALIB_API void luaL_buffinit ( lua_State * L,
luaL_Buffer * B )

Definition at line 472 of file lua-5.1.5/src/lauxlib.c.

472 {
473 B->L = L;
474 B->p = B->buffer;
475 B->lvl = 0;
476}
char buffer[LUAL_BUFFERSIZE]

◆ luaL_buffinitsize()

LUALIB_API char * luaL_buffinitsize ( lua_State * L,
luaL_Buffer * B,
size_t sz )

Definition at line 504 of file lua-5.2.4/src/lauxlib.c.

504 {
505 luaL_buffinit(L, B);
506 return luaL_prepbuffsize(B, sz);
507}
LUALIB_API char * luaL_prepbuffsize(luaL_Buffer *B, size_t sz)
LUALIB_API void luaL_buffinit(lua_State *L, luaL_Buffer *B)

◆ luaL_callmeta()

LUALIB_API int luaL_callmeta ( lua_State * L,
int obj,
const char * e )

Definition at line 219 of file lua-5.1.5/src/lauxlib.c.

219 {
220 obj = abs_index(L, obj);
221 if (!luaL_getmetafield(L, obj, event)) /* no metafield? */
222 return 0;
223 lua_pushvalue(L, obj);
224 lua_call(L, 1, 1);
225 return 1;
226}
LUA_API void lua_pushvalue(lua_State *L, int idx)
#define abs_index(L, i)
LUALIB_API int luaL_getmetafield(lua_State *L, int obj, const char *event)
#define lua_call(L, n, r)

◆ luaL_checkany()

LUALIB_API void luaL_checkany ( lua_State * L,
int arg )

Definition at line 152 of file lua-5.1.5/src/lauxlib.c.

152 {
153 if (lua_type(L, narg) == LUA_TNONE)
154 luaL_argerror(L, narg, "value expected");
155}
LUA_API int lua_type(lua_State *L, int idx)
LUALIB_API int luaL_argerror(lua_State *L, int narg, const char *extramsg)
#define LUA_TNONE

◆ luaL_checkinteger()

LUALIB_API lua_Integer luaL_checkinteger ( lua_State * L,
int arg )

Definition at line 189 of file lua-5.1.5/src/lauxlib.c.

189 {
190 lua_Integer d = lua_tointeger(L, narg);
191 if (d == 0 && !lua_isnumber(L, narg)) /* avoid extra test when d is not 0 */
192 tag_error(L, narg, LUA_TNUMBER);
193 return d;
194}
LUA_API int lua_isnumber(lua_State *L, int idx)
static void tag_error(lua_State *L, int narg, int tag)
LUA_INTEGER lua_Integer
#define LUA_TNUMBER
#define lua_tointeger(L, i)

◆ luaL_checklstring()

LUALIB_API const char * luaL_checklstring ( lua_State * L,
int arg,
size_t * l )

Definition at line 158 of file lua-5.1.5/src/lauxlib.c.

158 {
159 const char *s = lua_tolstring(L, narg, len);
160 if (!s) tag_error(L, narg, LUA_TSTRING);
161 return s;
162}
#define LUA_TSTRING

◆ luaL_checknumber()

LUALIB_API lua_Number luaL_checknumber ( lua_State * L,
int arg )

Definition at line 176 of file lua-5.1.5/src/lauxlib.c.

176 {
177 lua_Number d = lua_tonumber(L, narg);
178 if (d == 0 && !lua_isnumber(L, narg)) /* avoid extra test when d is not 0 */
179 tag_error(L, narg, LUA_TNUMBER);
180 return d;
181}
LUA_NUMBER lua_Number
#define lua_tonumber(L, i)

◆ luaL_checkoption()

LUALIB_API int luaL_checkoption ( lua_State * L,
int arg,
const char * def,
const char *const lst[] )

Definition at line 99 of file lua-5.1.5/src/lauxlib.c.

100 {
101 const char *name = (def) ? luaL_optstring(L, narg, def) :
102 luaL_checkstring(L, narg);
103 int i;
104 for (i=0; lst[i]; i++)
105 if (strcmp(lst[i], name) == 0)
106 return i;
107 return luaL_argerror(L, narg,
108 lua_pushfstring(L, "invalid option " LUA_QS, name));
109}
const char * name
Definition lsqlite3.c:2154
LUA_API const char * lua_pushfstring(lua_State *L, const char *fmt,...)
#define luaL_optstring(L, n, d)
#define luaL_checkstring(L, n)

◆ luaL_checkstack()

LUALIB_API void luaL_checkstack ( lua_State * L,
int sz,
const char * msg )

Definition at line 140 of file lua-5.1.5/src/lauxlib.c.

140 {
141 if (!lua_checkstack(L, space))
142 luaL_error(L, "stack overflow (%s)", mes);
143}
LUA_API int lua_checkstack(lua_State *L, int size)

◆ luaL_checktype()

LUALIB_API void luaL_checktype ( lua_State * L,
int arg,
int t )

Definition at line 146 of file lua-5.1.5/src/lauxlib.c.

146 {
147 if (lua_type(L, narg) != t)
148 tag_error(L, narg, t);
149}

◆ luaL_checkudata()

LUALIB_API void * luaL_checkudata ( lua_State * L,
int ud,
const char * tname )

Definition at line 124 of file lua-5.1.5/src/lauxlib.c.

124 {
125 void *p = lua_touserdata(L, ud);
126 if (p != NULL) { /* value is a userdata? */
127 if (lua_getmetatable(L, ud)) { /* does it have a metatable? */
128 lua_getfield(L, LUA_REGISTRYINDEX, tname); /* get correct metatable */
129 if (lua_rawequal(L, -1, -2)) { /* does it have the correct mt? */
130 lua_pop(L, 2); /* remove both metatables */
131 return p;
132 }
133 }
134 }
135 luaL_typerror(L, ud, tname); /* else error */
136 return NULL; /* to avoid warnings */
137}
LUA_API int lua_getmetatable(lua_State *L, int objindex)
LUA_API void * lua_touserdata(lua_State *L, int idx)
LUA_API int lua_rawequal(lua_State *L, int index1, int index2)
LUA_API void lua_getfield(lua_State *L, int idx, const char *k)
LUALIB_API int luaL_typerror(lua_State *L, int narg, const char *tname)
#define LUA_REGISTRYINDEX

◆ luaL_checkversion_()

LUALIB_API void luaL_checkversion_ ( lua_State * L,
lua_Number ver,
size_t sz )

Definition at line 1038 of file lua-5.3.6/src/lauxlib.c.

1038 {
1039 const lua_Number *v = lua_version(L);
1040 if (sz != LUAL_NUMSIZES) /* check numeric types */
1041 luaL_error(L, "core and library have incompatible numeric types");
1042 if (v != lua_version(NULL))
1043 luaL_error(L, "multiple Lua VMs detected");
1044 else if (*v != ver)
1045 luaL_error(L, "version mismatch: app. needs %f, Lua core provides %f",
1046 (LUAI_UACNUMBER)ver, (LUAI_UACNUMBER)*v);
1047}
#define LUAI_UACNUMBER
LUA_API const lua_Number * lua_version(lua_State *L)
LUALIB_API int luaL_error(lua_State *L, const char *fmt,...)
#define LUAL_NUMSIZES

◆ luaL_error()

LUALIB_API int luaL_error ( lua_State * L,
const char * fmt,
... )

Definition at line 86 of file lua-5.1.5/src/lauxlib.c.

86 {
87 va_list argp;
88 va_start(argp, fmt);
89 luaL_where(L, 1);
90 lua_pushvfstring(L, fmt, argp);
91 va_end(argp);
92 lua_concat(L, 2);
93 return lua_error(L);
94}
LUA_API void lua_concat(lua_State *L, int n)
LUA_API int lua_error(lua_State *L)
LUA_API const char * lua_pushvfstring(lua_State *L, const char *fmt, va_list argp)
LUALIB_API void luaL_where(lua_State *L, int level)

◆ luaL_execresult()

LUALIB_API int luaL_execresult ( lua_State * L,
int stat )

Definition at line 247 of file lua-5.2.4/src/lauxlib.c.

247 {
248 const char *what = "exit"; /* type of termination */
249 if (stat == -1) /* error? */
250 return luaL_fileresult(L, 0, NULL);
251 else {
252 inspectstat(stat, what); /* interpret result */
253 if (*what == 'e' && stat == 0) /* successful termination? */
254 lua_pushboolean(L, 1);
255 else
256 lua_pushnil(L);
257 lua_pushstring(L, what);
258 lua_pushinteger(L, stat);
259 return 3; /* return true/nil,what,code */
260 }
261}
LUA_API void lua_pushstring(lua_State *L, const char *s)
LUA_API void lua_pushnil(lua_State *L)
LUA_API void lua_pushboolean(lua_State *L, int b)
LUA_API void lua_pushinteger(lua_State *L, lua_Integer n)
LUALIB_API int luaL_fileresult(lua_State *L, int stat, const char *fname)
#define inspectstat(stat, what)

◆ luaL_fileresult()

LUALIB_API int luaL_fileresult ( lua_State * L,
int stat,
const char * fname )

Definition at line 207 of file lua-5.2.4/src/lauxlib.c.

207 {
208 int en = errno; /* calls to Lua API may change this value */
209 if (stat) {
210 lua_pushboolean(L, 1);
211 return 1;
212 }
213 else {
214 lua_pushnil(L);
215 if (fname)
216 lua_pushfstring(L, "%s: %s", fname, strerror(en));
217 else
218 lua_pushstring(L, strerror(en));
219 lua_pushinteger(L, en);
220 return 3;
221 }
222}

◆ luaL_getmetafield()

LUALIB_API int luaL_getmetafield ( lua_State * L,
int obj,
const char * e )

Definition at line 203 of file lua-5.1.5/src/lauxlib.c.

203 {
204 if (!lua_getmetatable(L, obj)) /* no metatable? */
205 return 0;
206 lua_pushstring(L, event);
207 lua_rawget(L, -2);
208 if (lua_isnil(L, -1)) {
209 lua_pop(L, 2); /* remove metatable and metafield */
210 return 0;
211 }
212 else {
213 lua_remove(L, -2); /* remove only metatable */
214 return 1;
215 }
216}
LUA_API void lua_rawget(lua_State *L, int idx)
#define lua_isnil(L, n)
#define lua_remove(L, idx)

◆ luaL_getsubtable()

LUALIB_API int luaL_getsubtable ( lua_State * L,
int idx,
const char * fname )

Definition at line 866 of file lua-5.2.4/src/lauxlib.c.

866 {
867 lua_getfield(L, idx, fname);
868 if (lua_istable(L, -1)) return 1; /* table already there */
869 else {
870 lua_pop(L, 1); /* remove previous result */
871 idx = lua_absindex(L, idx);
872 lua_newtable(L);
873 lua_pushvalue(L, -1); /* copy to be left at top */
874 lua_setfield(L, idx, fname); /* assign new table to field */
875 return 0; /* false, because did not find table there */
876 }
877}
LUA_API void lua_setfield(lua_State *L, int idx, const char *k)
#define lua_istable(L, n)
#define lua_newtable(L)
LUA_API int lua_absindex(lua_State *L, int idx)

◆ luaL_gsub()

LUALIB_API const char * luaL_gsub ( lua_State * L,
const char * s,
const char * p,
const char * r )

Definition at line 340 of file lua-5.1.5/src/lauxlib.c.

341 {
342 const char *wild;
343 size_t l = strlen(p);
344 luaL_Buffer b;
345 luaL_buffinit(L, &b);
346 while ((wild = strstr(s, p)) != NULL) {
347 luaL_addlstring(&b, s, wild - s); /* push prefix */
348 luaL_addstring(&b, r); /* push replacement in place of pattern */
349 s = wild + l; /* continue after `p' */
350 }
351 luaL_addstring(&b, s); /* push last suffix */
352 luaL_pushresult(&b);
353 return lua_tostring(L, -1);
354}
LUALIB_API void luaL_buffinit(lua_State *L, luaL_Buffer *B)
LUALIB_API void luaL_pushresult(luaL_Buffer *B)
LUALIB_API void luaL_addstring(luaL_Buffer *B, const char *s)
#define lua_tostring(L, i)

◆ luaL_len()

LUALIB_API lua_Integer luaL_len ( lua_State * L,
int idx )

Definition at line 725 of file lua-5.2.4/src/lauxlib.c.

725 {
726 int l;
727 int isnum;
728 lua_len(L, idx);
729 l = (int)lua_tointegerx(L, -1, &isnum);
730 if (!isnum)
731 luaL_error(L, "object length is not a number");
732 lua_pop(L, 1); /* remove object */
733 return l;
734}
LUA_API lua_Integer lua_tointegerx(lua_State *L, int idx, int *isnum)
LUA_API void lua_len(lua_State *L, int idx)
LUALIB_API int luaL_error(lua_State *L, const char *fmt,...)

◆ luaL_loadbufferx()

LUALIB_API int luaL_loadbufferx ( lua_State * L,
const char * buff,
size_t sz,
const char * name,
const char * mode )

Definition at line 682 of file lua-5.2.4/src/lauxlib.c.

683 {
684 LoadS ls;
685 ls.s = buff;
686 ls.size = size;
687 return lua_load(L, getS, &ls, name, mode);
688}
LUA_API int lua_load(lua_State *L, lua_Reader reader, void *data, const char *chunkname)
static const char * getS(lua_State *L, void *ud, size_t *size)
const char * s

◆ luaL_loadfilex()

LUALIB_API int luaL_loadfilex ( lua_State * L,
const char * filename,
const char * mode )

Definition at line 630 of file lua-5.2.4/src/lauxlib.c.

631 {
632 LoadF lf;
633 int status, readstatus;
634 int c;
635 int fnameindex = lua_gettop(L) + 1; /* index of filename on the stack */
636 if (filename == NULL) {
637 lua_pushliteral(L, "=stdin");
638 lf.f = stdin;
639 }
640 else {
641 lua_pushfstring(L, "@%s", filename);
642 lf.f = fopen(filename, "r");
643 if (lf.f == NULL) return errfile(L, "open", fnameindex);
644 }
645 if (skipcomment(&lf, &c)) /* read initial portion */
646 lf.buff[lf.n++] = '\n'; /* add line to correct line numbers */
647 if (c == LUA_SIGNATURE[0] && filename) { /* binary file? */
648 lf.f = freopen(filename, "rb", lf.f); /* reopen in binary mode */
649 if (lf.f == NULL) return errfile(L, "reopen", fnameindex);
650 skipcomment(&lf, &c); /* re-read initial portion */
651 }
652 if (c != EOF)
653 lf.buff[lf.n++] = c; /* 'c' is the first character of the stream */
654 status = lua_load(L, getF, &lf, lua_tostring(L, -1), mode);
655 readstatus = ferror(lf.f);
656 if (filename) fclose(lf.f); /* close file (even in case of errors) */
657 if (readstatus) {
658 lua_settop(L, fnameindex); /* ignore results from `lua_load' */
659 return errfile(L, "read", fnameindex);
660 }
661 lua_remove(L, fnameindex);
662 return status;
663}
LUA_API void lua_settop(lua_State *L, int idx)
LUA_API int lua_gettop(lua_State *L)
#define lua_pushliteral(L, s)
#define LUA_SIGNATURE
static int errfile(lua_State *L, const char *what, int fnameindex)
static int skipcomment(LoadF *lf, int *cp)
static const char * getF(lua_State *L, void *ud, size_t *size)
char buff[LUAL_BUFFERSIZE]

◆ luaL_loadstring()

LUALIB_API int luaL_loadstring ( lua_State * L,
const char * s )

Definition at line 618 of file lua-5.1.5/src/lauxlib.c.

618 {
619 return luaL_loadbuffer(L, s, strlen(s), s);
620}
#define luaL_loadbuffer(L, s, sz, n)

◆ luaL_newmetatable()

LUALIB_API int luaL_newmetatable ( lua_State * L,
const char * tname )

Definition at line 112 of file lua-5.1.5/src/lauxlib.c.

112 {
113 lua_getfield(L, LUA_REGISTRYINDEX, tname); /* get registry.name */
114 if (!lua_isnil(L, -1)) /* name already in use? */
115 return 0; /* leave previous value on top, but return 0 */
116 lua_pop(L, 1);
117 lua_newtable(L); /* create metatable */
118 lua_pushvalue(L, -1);
119 lua_setfield(L, LUA_REGISTRYINDEX, tname); /* registry.name = metatable */
120 return 1;
121}

◆ luaL_newstate()

LUALIB_API lua_State * luaL_newstate ( void )

Definition at line 647 of file lua-5.1.5/src/lauxlib.c.

647 {
649 if (L) lua_atpanic(L, &panic);
650 return L;
651}
LUA_API lua_CFunction lua_atpanic(lua_State *L, lua_CFunction panicf)
static int panic(lua_State *L)
static void * l_alloc(void *ud, void *ptr, size_t osize, size_t nsize)
LUA_API lua_State * lua_newstate(lua_Alloc f, void *ud)

◆ luaL_optinteger()

LUALIB_API lua_Integer luaL_optinteger ( lua_State * L,
int arg,
lua_Integer def )

Definition at line 197 of file lua-5.1.5/src/lauxlib.c.

198 {
199 return luaL_opt(L, luaL_checkinteger, narg, def);
200}
LUALIB_API lua_Integer luaL_checkinteger(lua_State *L, int narg)
#define luaL_opt(L, f, n, d)

◆ luaL_optlstring()

LUALIB_API const char * luaL_optlstring ( lua_State * L,
int arg,
const char * def,
size_t * l )

Definition at line 165 of file lua-5.1.5/src/lauxlib.c.

166 {
167 if (lua_isnoneornil(L, narg)) {
168 if (len)
169 *len = (def ? strlen(def) : 0);
170 return def;
171 }
172 else return luaL_checklstring(L, narg, len);
173}
LUALIB_API const char * luaL_checklstring(lua_State *L, int narg, size_t *len)
#define lua_isnoneornil(L, n)

◆ luaL_optnumber()

LUALIB_API lua_Number luaL_optnumber ( lua_State * L,
int arg,
lua_Number def )

Definition at line 184 of file lua-5.1.5/src/lauxlib.c.

184 {
185 return luaL_opt(L, luaL_checknumber, narg, def);
186}
LUALIB_API lua_Number luaL_checknumber(lua_State *L, int narg)

◆ luaL_prepbuffsize()

LUALIB_API char * luaL_prepbuffsize ( luaL_Buffer * B,
size_t sz )

Definition at line 437 of file lua-5.2.4/src/lauxlib.c.

437 {
438 lua_State *L = B->L;
439 if (B->size - B->n < sz) { /* not enough space? */
440 char *newbuff;
441 size_t newsize = B->size * 2; /* double buffer size */
442 if (newsize - B->n < sz) /* not big enough? */
443 newsize = B->n + sz;
444 if (newsize < B->n || newsize - B->n < sz)
445 luaL_error(L, "buffer too large");
446 /* create larger buffer */
447 newbuff = (char *)lua_newuserdata(L, newsize * sizeof(char));
448 /* move content to new buffer */
449 memcpy(newbuff, B->b, B->n * sizeof(char));
450 if (buffonstack(B))
451 lua_remove(L, -2); /* remove old buffer */
452 B->b = newbuff;
453 B->size = newsize;
454 }
455 return &B->b[B->n];
456}
#define buffonstack(B)
#define lua_newuserdata(L, s)

◆ luaL_pushresult()

LUALIB_API void luaL_pushresult ( luaL_Buffer * B)

Definition at line 447 of file lua-5.1.5/src/lauxlib.c.

447 {
448 emptybuffer(B);
449 lua_concat(B->L, B->lvl);
450 B->lvl = 1;
451}

◆ luaL_pushresultsize()

LUALIB_API void luaL_pushresultsize ( luaL_Buffer * B,
size_t sz )

Definition at line 479 of file lua-5.2.4/src/lauxlib.c.

479 {
480 luaL_addsize(B, sz);
482}
#define luaL_addsize(B, n)
LUALIB_API void luaL_pushresult(luaL_Buffer *B)

◆ luaL_ref()

LUALIB_API int luaL_ref ( lua_State * L,
int t )

Definition at line 481 of file lua-5.1.5/src/lauxlib.c.

481 {
482 int ref;
483 t = abs_index(L, t);
484 if (lua_isnil(L, -1)) {
485 lua_pop(L, 1); /* remove from stack */
486 return LUA_REFNIL; /* `nil' has a unique fixed reference */
487 }
488 lua_rawgeti(L, t, FREELIST_REF); /* get first free element */
489 ref = (int)lua_tointeger(L, -1); /* ref = t[FREELIST_REF] */
490 lua_pop(L, 1); /* remove it from stack */
491 if (ref != 0) { /* any free element? */
492 lua_rawgeti(L, t, ref); /* remove it from list */
493 lua_rawseti(L, t, FREELIST_REF); /* (t[FREELIST_REF] = t[ref]) */
494 }
495 else { /* no free elements */
496 ref = (int)lua_objlen(L, t);
497 ref++; /* create new reference */
498 }
499 lua_rawseti(L, t, ref);
500 return ref;
501}
LUA_API void lua_rawseti(lua_State *L, int idx, int n)
LUA_API size_t lua_objlen(lua_State *L, int idx)
LUA_API void lua_rawgeti(lua_State *L, int idx, int n)
#define FREELIST_REF
#define LUA_REFNIL

◆ luaL_requiref()

LUALIB_API void luaL_requiref ( lua_State * L,
const char * modname,
lua_CFunction openf,
int glb )

Definition at line 886 of file lua-5.2.4/src/lauxlib.c.

887 {
888 lua_pushcfunction(L, openf);
889 lua_pushstring(L, modname); /* argument to open function */
890 lua_call(L, 1, 1); /* open module */
891 luaL_getsubtable(L, LUA_REGISTRYINDEX, "_LOADED");
892 lua_pushvalue(L, -2); /* make copy of module (call result) */
893 lua_setfield(L, -2, modname); /* _LOADED[modname] = module */
894 lua_pop(L, 1); /* remove _LOADED table */
895 if (glb) {
896 lua_pushvalue(L, -1); /* copy of 'mod' */
897 lua_setglobal(L, modname); /* _G[modname] = module */
898 }
899}
#define lua_pushcfunction(L, f)
#define lua_setglobal(L, s)
LUALIB_API int luaL_getsubtable(lua_State *L, int idx, const char *fname)

◆ luaL_setfuncs()

LUALIB_API void luaL_setfuncs ( lua_State * L,
const luaL_Reg * l,
int nup )

Definition at line 848 of file lua-5.2.4/src/lauxlib.c.

848 {
850 luaL_checkstack(L, nup, "too many upvalues");
851 for (; l->name != NULL; l++) { /* fill the table with given functions */
852 int i;
853 for (i = 0; i < nup; i++) /* copy upvalues to the top */
854 lua_pushvalue(L, -nup);
855 lua_pushcclosure(L, l->func, nup); /* closure with those upvalues */
856 lua_setfield(L, -(nup + 2), l->name);
857 }
858 lua_pop(L, nup); /* remove upvalues */
859}
LUA_API void lua_pushcclosure(lua_State *L, lua_CFunction fn, int n)
LUALIB_API void luaL_checkstack(lua_State *L, int space, const char *msg)
#define luaL_checkversion(L)
lua_CFunction func
const char * name

◆ luaL_setmetatable()

LUALIB_API void luaL_setmetatable ( lua_State * L,
const char * tname )

Definition at line 284 of file lua-5.2.4/src/lauxlib.c.

284 {
285 luaL_getmetatable(L, tname);
286 lua_setmetatable(L, -2);
287}
LUA_API int lua_setmetatable(lua_State *L, int objindex)
#define luaL_getmetatable(L, n)

◆ luaL_testudata()

LUALIB_API void * luaL_testudata ( lua_State * L,
int ud,
const char * tname )

Definition at line 290 of file lua-5.2.4/src/lauxlib.c.

290 {
291 void *p = lua_touserdata(L, ud);
292 if (p != NULL) { /* value is a userdata? */
293 if (lua_getmetatable(L, ud)) { /* does it have a metatable? */
294 luaL_getmetatable(L, tname); /* get correct metatable */
295 if (!lua_rawequal(L, -1, -2)) /* not the same? */
296 p = NULL; /* value is a userdata with wrong metatable */
297 lua_pop(L, 2); /* remove both metatables */
298 return p;
299 }
300 }
301 return NULL; /* value is not a userdata with a metatable */
302}

◆ luaL_tolstring()

LUALIB_API const char * luaL_tolstring ( lua_State * L,
int idx,
size_t * len )

Definition at line 737 of file lua-5.2.4/src/lauxlib.c.

737 {
738 if (!luaL_callmeta(L, idx, "__tostring")) { /* no metafield? */
739 switch (lua_type(L, idx)) {
740 case LUA_TNUMBER:
741 case LUA_TSTRING:
742 lua_pushvalue(L, idx);
743 break;
744 case LUA_TBOOLEAN:
745 lua_pushstring(L, (lua_toboolean(L, idx) ? "true" : "false"));
746 break;
747 case LUA_TNIL:
748 lua_pushliteral(L, "nil");
749 break;
750 default:
751 lua_pushfstring(L, "%s: %p", luaL_typename(L, idx),
752 lua_topointer(L, idx));
753 break;
754 }
755 }
756 return lua_tolstring(L, -1, len);
757}
LUA_API int lua_toboolean(lua_State *L, int idx)
LUA_API const void * lua_topointer(lua_State *L, int idx)
#define luaL_typename(L, i)
#define LUA_TBOOLEAN
#define LUA_TNIL
LUALIB_API int luaL_callmeta(lua_State *L, int obj, const char *event)

◆ luaL_traceback()

LUALIB_API void luaL_traceback ( lua_State * L,
lua_State * L1,
const char * msg,
int level )

Definition at line 116 of file lua-5.2.4/src/lauxlib.c.

117 {
118 lua_Debug ar;
119 int top = lua_gettop(L);
120 int numlevels = countlevels(L1);
121 int mark = (numlevels > LEVELS1 + LEVELS2) ? LEVELS1 : 0;
122 if (msg) lua_pushfstring(L, "%s\n", msg);
123 lua_pushliteral(L, "stack traceback:");
124 while (lua_getstack(L1, level++, &ar)) {
125 if (level == mark) { /* too many levels? */
126 lua_pushliteral(L, "\n\t..."); /* add a '...' */
127 level = numlevels - LEVELS2; /* and skip to last ones */
128 }
129 else {
130 lua_getinfo(L1, "Slnt", &ar);
131 lua_pushfstring(L, "\n\t%s:", ar.short_src);
132 if (ar.currentline > 0)
133 lua_pushfstring(L, "%d:", ar.currentline);
134 lua_pushliteral(L, " in ");
135 pushfuncname(L, &ar);
136 if (ar.istailcall)
137 lua_pushliteral(L, "\n\t(...tail calls...)");
138 lua_concat(L, lua_gettop(L) - top);
139 }
140 }
141 lua_concat(L, lua_gettop(L) - top);
142}
static void pushfuncname(lua_State *L, lua_Debug *ar)
static int countlevels(lua_State *L)
#define LEVELS2
#define LEVELS1
char short_src[LUA_IDSIZE]

◆ luaL_unref()

LUALIB_API void luaL_unref ( lua_State * L,
int t,
int ref )

Definition at line 504 of file lua-5.1.5/src/lauxlib.c.

504 {
505 if (ref >= 0) {
506 t = abs_index(L, t);
508 lua_rawseti(L, t, ref); /* t[ref] = t[FREELIST_REF] */
509 lua_pushinteger(L, ref);
510 lua_rawseti(L, t, FREELIST_REF); /* t[FREELIST_REF] = ref */
511 }
512}

◆ luaL_where()

LUALIB_API void luaL_where ( lua_State * L,
int lvl )

Definition at line 73 of file lua-5.1.5/src/lauxlib.c.

73 {
74 lua_Debug ar;
75 if (lua_getstack(L, level, &ar)) { /* check function at level */
76 lua_getinfo(L, "Sl", &ar); /* get info about it */
77 if (ar.currentline > 0) { /* is there info? */
78 lua_pushfstring(L, "%s:%d: ", ar.short_src, ar.currentline);
79 return;
80 }
81 }
82 lua_pushliteral(L, ""); /* else, no information available... */
83}