CHDK_DE Vorschauversion  Trunk Rev. 5272
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
lauxlib.h-Dateireferenz
#include <stddef.h>
#include <stdio.h>
#include "lua.h"
+ Include-Abhängigkeitsdiagramm für lauxlib.h:
+ Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:

gehe zum Quellcode dieser Datei

Datenstrukturen

struct  luaL_Reg
 
struct  luaL_Buffer
 

Makrodefinitionen

#define luaL_getn(L, i)   ((int)lua_objlen(L, i))
 
#define luaL_setn(L, i, j)   ((void)0) /* no op! */
 
#define LUA_ERRFILE   (LUA_ERRERR+1)
 
#define luaL_argcheck(L, cond, numarg, extramsg)   ((void)((cond) || luaL_argerror(L, (numarg), (extramsg))))
 
#define luaL_checkstring(L, n)   (luaL_checklstring(L, (n), NULL))
 
#define luaL_optstring(L, n, d)   (luaL_optlstring(L, (n), (d), NULL))
 
#define luaL_checkint(L, n)   ((int)luaL_checkinteger(L, (n)))
 
#define luaL_optint(L, n, d)   ((int)luaL_optinteger(L, (n), (d)))
 
#define luaL_checklong(L, n)   ((long)luaL_checkinteger(L, (n)))
 
#define luaL_optlong(L, n, d)   ((long)luaL_optinteger(L, (n), (d)))
 
#define luaL_typename(L, i)   lua_typename(L, lua_type(L,(i)))
 
#define luaL_dofile(L, fn)   (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0))
 
#define luaL_dostring(L, s)   (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0))
 
#define luaL_getmetatable(L, n)   (lua_getfield(L, LUA_REGISTRYINDEX, (n)))
 
#define luaL_opt(L, f, n, d)   (lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))
 
#define luaL_addchar(B, c)
 
#define luaL_putchar(B, c)   luaL_addchar(B,c)
 
#define luaL_addsize(B, n)   ((B)->p += (n))
 
#define LUA_NOREF   (-2)
 
#define LUA_REFNIL   (-1)
 
#define lua_ref(L, lock)
 
#define lua_unref(L, ref)   luaL_unref(L, LUA_REGISTRYINDEX, (ref))
 
#define lua_getref(L, ref)   lua_rawgeti(L, LUA_REGISTRYINDEX, (ref))
 
#define luaL_reg   luaL_Reg
 

Typdefinitionen

typedef struct luaL_Reg luaL_Reg
 
typedef struct luaL_Buffer luaL_Buffer
 

Funktionen

LUALIB_API void() luaI_openlib (lua_State *L, const char *libname, const luaL_Reg *l, int nup)
 
LUALIB_API void() luaL_register (lua_State *L, const char *libname, const luaL_Reg *l)
 
LUALIB_API int() luaL_getmetafield (lua_State *L, int obj, const char *e)
 
LUALIB_API int() luaL_callmeta (lua_State *L, int obj, const char *e)
 
LUALIB_API int() luaL_typerror (lua_State *L, int narg, const char *tname)
 
LUALIB_API int() luaL_argerror (lua_State *L, int numarg, const char *extramsg)
 
LUALIB_API const char *() luaL_checklstring (lua_State *L, int numArg, size_t *l)
 
LUALIB_API const char *() luaL_optlstring (lua_State *L, int numArg, const char *def, size_t *l)
 
LUALIB_API lua_Number() luaL_checknumber (lua_State *L, int numArg)
 
LUALIB_API lua_Number() luaL_optnumber (lua_State *L, int nArg, lua_Number def)
 
LUALIB_API lua_Integer() luaL_checkinteger (lua_State *L, int numArg)
 
LUALIB_API lua_Integer() luaL_optinteger (lua_State *L, int nArg, lua_Integer def)
 
LUALIB_API void() luaL_checkstack (lua_State *L, int sz, const char *msg)
 
LUALIB_API void() luaL_checktype (lua_State *L, int narg, int t)
 
LUALIB_API void() luaL_checkany (lua_State *L, int narg)
 
LUALIB_API int() luaL_newmetatable (lua_State *L, const char *tname)
 
LUALIB_API void *() luaL_checkudata (lua_State *L, int ud, const char *tname)
 
LUALIB_API void() luaL_where (lua_State *L, int lvl)
 
LUALIB_API int() luaL_error (lua_State *L, const char *fmt,...)
 
LUALIB_API int() luaL_checkoption (lua_State *L, int narg, const char *def, const char *const lst[])
 
LUALIB_API int() luaL_ref (lua_State *L, int t)
 
LUALIB_API void() luaL_unref (lua_State *L, int t, int ref)
 
LUALIB_API int() luaL_loadfile (lua_State *L, const char *filename)
 
LUALIB_API int() luaL_loadbuffer (lua_State *L, const char *buff, size_t sz, const char *name)
 
LUALIB_API int() luaL_loadstring (lua_State *L, const char *s)
 
LUALIB_API lua_State *() luaL_newstate (void)
 
LUALIB_API const char *() luaL_gsub (lua_State *L, const char *s, const char *p, const char *r)
 
LUALIB_API const char *() luaL_findtable (lua_State *L, int idx, const char *fname, int szhint)
 
LUALIB_API void() luaL_buffinit (lua_State *L, luaL_Buffer *B)
 
LUALIB_API char *() luaL_prepbuffer (luaL_Buffer *B)
 
LUALIB_API void() luaL_addlstring (luaL_Buffer *B, const char *s, size_t l)
 
LUALIB_API void() luaL_addstring (luaL_Buffer *B, const char *s)
 
LUALIB_API void() luaL_addvalue (luaL_Buffer *B)
 
LUALIB_API void() luaL_pushresult (luaL_Buffer *B)
 

Makro-Dokumentation

#define LUA_ERRFILE   (LUA_ERRERR+1)

Definiert in Zeile 32 der Datei lauxlib.h.

#define lua_getref (   L,
  ref 
)    lua_rawgeti(L, LUA_REGISTRYINDEX, (ref))

Definiert in Zeile 167 der Datei lauxlib.h.

#define LUA_NOREF   (-2)

Definiert in Zeile 159 der Datei lauxlib.h.

#define lua_ref (   L,
  lock 
)
Wert:
(lua_pushstring(L, "unlocked references are obsolete"), lua_error(L), 0))

Definiert in Zeile 162 der Datei lauxlib.h.

#define LUA_REFNIL   (-1)

Definiert in Zeile 160 der Datei lauxlib.h.

#define lua_unref (   L,
  ref 
)    luaL_unref(L, LUA_REGISTRYINDEX, (ref))

Definiert in Zeile 165 der Datei lauxlib.h.

#define luaL_addchar (   B,
 
)
Wert:
((void)((B)->p < ((B)->buffer+LUAL_BUFFERSIZE) || luaL_prepbuffer(B)), \
(*(B)->p++ = (char)(c)))

Definiert in Zeile 136 der Datei lauxlib.h.

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

Definiert in Zeile 143 der Datei lauxlib.h.

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

Definiert in Zeile 100 der Datei lauxlib.h.

#define luaL_checkint (   L,
  n 
)    ((int)luaL_checkinteger(L, (n)))

Definiert in Zeile 104 der Datei lauxlib.h.

#define luaL_checklong (   L,
  n 
)    ((long)luaL_checkinteger(L, (n)))

Definiert in Zeile 106 der Datei lauxlib.h.

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

Definiert in Zeile 102 der Datei lauxlib.h.

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

Definiert in Zeile 111 der Datei lauxlib.h.

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

Definiert in Zeile 114 der Datei lauxlib.h.

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

Definiert in Zeile 117 der Datei lauxlib.h.

#define luaL_getn (   L,
 
)    ((int)lua_objlen(L, i))

Definiert in Zeile 22 der Datei lauxlib.h.

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

Definiert in Zeile 119 der Datei lauxlib.h.

#define luaL_optint (   L,
  n,
  d 
)    ((int)luaL_optinteger(L, (n), (d)))

Definiert in Zeile 105 der Datei lauxlib.h.

#define luaL_optlong (   L,
  n,
  d 
)    ((long)luaL_optinteger(L, (n), (d)))

Definiert in Zeile 107 der Datei lauxlib.h.

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

Definiert in Zeile 103 der Datei lauxlib.h.

#define luaL_putchar (   B,
 
)    luaL_addchar(B,c)

Definiert in Zeile 141 der Datei lauxlib.h.

#define luaL_reg   luaL_Reg

Definiert in Zeile 170 der Datei lauxlib.h.

#define luaL_setn (   L,
  i,
 
)    ((void)0) /* no op! */

Definiert in Zeile 23 der Datei lauxlib.h.

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

Definiert in Zeile 109 der Datei lauxlib.h.

Dokumentation der benutzerdefinierten Typen

typedef struct luaL_Buffer luaL_Buffer
typedef struct luaL_Reg luaL_Reg

Dokumentation der Funktionen

LUALIB_API void() luaI_openlib ( lua_State L,
const char *  libname,
const luaL_Reg l,
int  nup 
)

Definiert in Zeile 242 der Datei lauxlib.c.

243  {
244  if (libname) {
245  int size = libsize(l);
246  /* check whether lib already exists */
247  luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 1);
248  lua_getfield(L, -1, libname); /* get _LOADED[libname] */
249  if (!lua_istable(L, -1)) { /* not found? */
250  lua_pop(L, 1); /* remove previous result */
251  /* try global variable (and create one if it does not exist) */
252  if (luaL_findtable(L, LUA_GLOBALSINDEX, libname, size) != NULL)
253  luaL_error(L, "name conflict for module " LUA_QS, libname);
254  lua_pushvalue(L, -1);
255  lua_setfield(L, -3, libname); /* _LOADED[libname] = new table */
256  }
257  lua_remove(L, -2); /* remove _LOADED table */
258  lua_insert(L, -(nup+1)); /* move library table to below upvalues */
259  }
260  for (; l->name; l++) {
261  int i;
262  for (i=0; i<nup; i++) /* copy upvalues to the top */
263  lua_pushvalue(L, -nup);
264  lua_pushcclosure(L, l->func, nup);
265  lua_setfield(L, -(nup+2), l->name);
266  }
267  lua_pop(L, nup); /* remove upvalues */
268 }
LUALIB_API void() luaL_addlstring ( luaL_Buffer B,
const char *  s,
size_t  l 
)

Definiert in Zeile 434 der Datei lauxlib.c.

434  {
435  while (l--)
436  luaL_addchar(B, *s++);
437 }
LUALIB_API void() luaL_addstring ( luaL_Buffer B,
const char *  s 
)

Definiert in Zeile 440 der Datei lauxlib.c.

440  {
441  luaL_addlstring(B, s, strlen(s));
442 }
LUALIB_API void() luaL_addvalue ( luaL_Buffer B)

Definiert in Zeile 452 der Datei lauxlib.c.

452  {
453  lua_State *L = B->L;
454  size_t vl;
455  const char *s = lua_tolstring(L, -1, &vl);
456  if (vl <= bufffree(B)) { /* fit into buffer? */
457  memcpy(B->p, s, vl); /* put it there */
458  B->p += vl;
459  lua_pop(L, 1); /* remove from stack */
460  }
461  else {
462  if (emptybuffer(B))
463  lua_insert(L, -2); /* put buffer before new value */
464  B->lvl++; /* add new value into B stack */
465  adjuststack(B);
466  }
467 }
LUALIB_API int() luaL_argerror ( lua_State L,
int  numarg,
const char *  extramsg 
)

Definiert in Zeile 43 der Datei 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 }
LUALIB_API void() luaL_buffinit ( lua_State L,
luaL_Buffer B 
)

Definiert in Zeile 470 der Datei lauxlib.c.

470  {
471  B->L = L;
472  B->p = B->buffer;
473  B->lvl = 0;
474 }
LUALIB_API int() luaL_callmeta ( lua_State L,
int  obj,
const char *  e 
)

Definiert in Zeile 219 der Datei 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 }
LUALIB_API void() luaL_checkany ( lua_State L,
int  narg 
)

Definiert in Zeile 152 der Datei lauxlib.c.

152  {
153  if (lua_type(L, narg) == LUA_TNONE)
154  luaL_argerror(L, narg, "value expected");
155 }
LUALIB_API lua_Integer() luaL_checkinteger ( lua_State L,
int  numArg 
)

Definiert in Zeile 189 der Datei 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 }
LUALIB_API const char*() luaL_checklstring ( lua_State L,
int  numArg,
size_t l 
)

Definiert in Zeile 158 der Datei 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 }
LUALIB_API lua_Number() luaL_checknumber ( lua_State L,
int  numArg 
)

Definiert in Zeile 176 der Datei 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 }
LUALIB_API int() luaL_checkoption ( lua_State L,
int  narg,
const char *  def,
const char *const  lst[] 
)

Definiert in Zeile 99 der Datei 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 }
LUALIB_API void() luaL_checkstack ( lua_State L,
int  sz,
const char *  msg 
)

Definiert in Zeile 140 der Datei lauxlib.c.

140  {
141  if (!lua_checkstack(L, space))
142  luaL_error(L, "stack overflow (%s)", mes);
143 }
LUALIB_API void() luaL_checktype ( lua_State L,
int  narg,
int  t 
)

Definiert in Zeile 146 der Datei lauxlib.c.

146  {
147  if (lua_type(L, narg) != t)
148  tag_error(L, narg, t);
149 }
LUALIB_API void*() luaL_checkudata ( lua_State L,
int  ud,
const char *  tname 
)

Definiert in Zeile 124 der Datei 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 }
LUALIB_API int() luaL_error ( lua_State L,
const char *  fmt,
  ... 
)

Definiert in Zeile 86 der Datei 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 }
LUALIB_API const char*() luaL_findtable ( lua_State L,
int  idx,
const char *  fname,
int  szhint 
)

Definiert in Zeile 355 der Datei lauxlib.c.

356  {
357  const char *e;
358  lua_pushvalue(L, idx);
359  do {
360  e = strchr(fname, '.');
361  if (e == NULL) e = fname + strlen(fname);
362  lua_pushlstring(L, fname, e - fname);
363  lua_rawget(L, -2);
364  if (lua_isnil(L, -1)) { /* no such field? */
365  lua_pop(L, 1); /* remove this nil */
366  lua_createtable(L, 0, (*e == '.' ? 1 : szhint)); /* new table for field */
367  lua_pushlstring(L, fname, e - fname);
368  lua_pushvalue(L, -2);
369  lua_settable(L, -4); /* set new table into field */
370  }
371  else if (!lua_istable(L, -1)) { /* field has a non-table value? */
372  lua_pop(L, 2); /* remove table and value */
373  return fname; /* return problematic part of the name */
374  }
375  lua_remove(L, -2); /* remove previous table */
376  fname = e + 1;
377  } while (*e == '.');
378  return NULL;
379 }
LUALIB_API int() luaL_getmetafield ( lua_State L,
int  obj,
const char *  e 
)

Definiert in Zeile 203 der Datei 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 }
LUALIB_API const char*() luaL_gsub ( lua_State L,
const char *  s,
const char *  p,
const char *  r 
)

Definiert in Zeile 339 der Datei lauxlib.c.

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

Definiert in Zeile 646 der Datei lauxlib.c.

647  {
648  LoadS ls;
649  ls.s = buff;
650  ls.size = size;
651  return lua_load(L, getS, &ls, name);
652 }
LUALIB_API int() luaL_loadfile ( lua_State L,
const char *  filename 
)

Definiert in Zeile 608 der Datei lauxlib.c.

608  {
609  LoadF lf;
610  int status, readerror;
611  char c;
612  int fnameindex = lua_gettop(L) + 1; /* index of filename on the stack */
613  lua_pushfstring(L, "@%s", filename);
614  lf.f = fopen(filename, "rb"); // cams don't translate crlf anyway
615  if (lf.f == NULL) return errfile(L, "fopen", fnameindex);
616  status = lua_load(L, getF, &lf, lua_tostring(L, -1));
617 
618  readerror = ((fread(&c, 1, 1, lf.f) < 1) && !feof(lf.f));
619 
620  fclose(lf.f); /* close file (even in case of errors) */
621  if (readerror) {
622  lua_settop(L, fnameindex); /* ignore results from `lua_load' */
623  return errfile(L, "read", fnameindex);
624  }
625  lua_remove(L, fnameindex);
626  return status;
627 }
LUALIB_API int() luaL_loadstring ( lua_State L,
const char *  s 
)

Definiert in Zeile 655 der Datei lauxlib.c.

655  {
656  return luaL_loadbuffer(L, s, strlen(s), s);
657 }
LUALIB_API int() luaL_newmetatable ( lua_State L,
const char *  tname 
)

Definiert in Zeile 112 der Datei 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 }
LUALIB_API lua_State*() luaL_newstate ( void  )

Definiert in Zeile 695 der Datei lauxlib.c.

695  {
697  if (L) lua_atpanic(L, &panic);
698  return L;
699 }
LUALIB_API lua_Integer() luaL_optinteger ( lua_State L,
int  nArg,
lua_Integer  def 
)

Definiert in Zeile 197 der Datei lauxlib.c.

198  {
199  return luaL_opt(L, luaL_checkinteger, narg, def);
200 }
LUALIB_API const char*() luaL_optlstring ( lua_State L,
int  numArg,
const char *  def,
size_t l 
)

Definiert in Zeile 165 der Datei 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 lua_Number() luaL_optnumber ( lua_State L,
int  nArg,
lua_Number  def 
)

Definiert in Zeile 184 der Datei lauxlib.c.

184  {
185  return luaL_opt(L, luaL_checknumber, narg, def);
186 }
LUALIB_API char*() luaL_prepbuffer ( luaL_Buffer B)

Definiert in Zeile 427 der Datei lauxlib.c.

427  {
428  if (emptybuffer(B))
429  adjuststack(B);
430  return B->buffer;
431 }
LUALIB_API void() luaL_pushresult ( luaL_Buffer B)

Definiert in Zeile 445 der Datei lauxlib.c.

445  {
446  emptybuffer(B);
447  lua_concat(B->L, B->lvl);
448  B->lvl = 1;
449 }
LUALIB_API int() luaL_ref ( lua_State L,
int  t 
)

Definiert in Zeile 479 der Datei lauxlib.c.

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

Definiert in Zeile 229 der Datei lauxlib.c.

230  {
231  luaI_openlib(L, libname, l, 0);
232 }
LUALIB_API int() luaL_typerror ( lua_State L,
int  narg,
const char *  tname 
)

Definiert in Zeile 61 der Datei lauxlib.c.

61  {
62  const char *msg = lua_pushfstring(L, "%s expected, got %s",
63  tname, luaL_typename(L, narg));
64  return luaL_argerror(L, narg, msg);
65 }
LUALIB_API void() luaL_unref ( lua_State L,
int  t,
int  ref 
)

Definiert in Zeile 502 der Datei lauxlib.c.

502  {
503  if (ref >= 0) {
504  t = abs_index(L, t);
505  lua_rawgeti(L, t, FREELIST_REF);
506  lua_rawseti(L, t, ref); /* t[ref] = t[FREELIST_REF] */
507  lua_pushinteger(L, ref);
508  lua_rawseti(L, t, FREELIST_REF); /* t[FREELIST_REF] = ref */
509  }
510 }
LUALIB_API void() luaL_where ( lua_State L,
int  lvl 
)

Definiert in Zeile 73 der Datei 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 }