CHDK_DE Vorschauversion  Trunk Rev. 6014
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
lauxlib.c-Dateireferenz
#include <ctype.h>
#include <errno.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lua.h"
#include "lauxlib.h"
+ Include-Abhängigkeitsdiagramm für lauxlib.c:

gehe zum Quellcode dieser Datei

Datenstrukturen

struct  LoadF
 
struct  LoadS
 

Makrodefinitionen

#define lauxlib_c
 
#define LUA_LIB
 
#define FREELIST_REF   0 /* free list of references */
 
#define abs_index(L, i)
 
#define bufflen(B)   ((B)->p - (B)->buffer)
 
#define bufffree(B)   ((size_t)(LUAL_BUFFERSIZE - bufflen(B)))
 
#define LIMIT   (LUA_MINSTACK/2)
 

Typdefinitionen

typedef struct LoadF LoadF
 
typedef struct LoadS LoadS
 

Funktionen

LUALIB_API int luaL_argerror (lua_State *L, int narg, const char *extramsg)
 
LUALIB_API int luaL_typerror (lua_State *L, int narg, const char *tname)
 
static void tag_error (lua_State *L, int narg, int tag)
 
LUALIB_API void luaL_where (lua_State *L, int level)
 
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_newmetatable (lua_State *L, const char *tname)
 
LUALIB_API void * luaL_checkudata (lua_State *L, int ud, const char *tname)
 
LUALIB_API void luaL_checkstack (lua_State *L, int space, const char *mes)
 
LUALIB_API void luaL_checktype (lua_State *L, int narg, int t)
 
LUALIB_API void luaL_checkany (lua_State *L, int narg)
 
LUALIB_API const char * luaL_checklstring (lua_State *L, int narg, size_t *len)
 
LUALIB_API const char * luaL_optlstring (lua_State *L, int narg, const char *def, size_t *len)
 
LUALIB_API lua_Number luaL_checknumber (lua_State *L, int narg)
 
LUALIB_API lua_Number luaL_optnumber (lua_State *L, int narg, lua_Number def)
 
LUALIB_API lua_Integer luaL_checkinteger (lua_State *L, int narg)
 
LUALIB_API lua_Integer luaL_optinteger (lua_State *L, int narg, lua_Integer def)
 
LUALIB_API int luaL_getmetafield (lua_State *L, int obj, const char *event)
 
LUALIB_API int luaL_callmeta (lua_State *L, int obj, const char *event)
 
LUALIB_API void() luaL_register (lua_State *L, const char *libname, const luaL_Reg *l)
 
static int libsize (const luaL_Reg *l)
 
LUALIB_API void luaI_openlib (lua_State *L, const char *libname, const luaL_Reg *l, int nup)
 
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)
 
static int emptybuffer (luaL_Buffer *B)
 
static void adjuststack (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_pushresult (luaL_Buffer *B)
 
LUALIB_API void luaL_addvalue (luaL_Buffer *B)
 
LUALIB_API void luaL_buffinit (lua_State *L, luaL_Buffer *B)
 
LUALIB_API int luaL_ref (lua_State *L, int t)
 
LUALIB_API void luaL_unref (lua_State *L, int t, int ref)
 
static const char * getF (lua_State *L, void *ud, size_t *size)
 
static int errfile (lua_State *L, const char *what, int fnameindex)
 
LUALIB_API int luaL_loadfile (lua_State *L, const char *filename)
 
static const char * getS (lua_State *L, void *ud, size_t *size)
 
LUALIB_API int luaL_loadbuffer (lua_State *L, const char *buff, size_t size, const char *name)
 
LUALIB_API int() luaL_loadstring (lua_State *L, const char *s)
 
static void * l_alloc (void *ud, void *ptr, size_t osize, size_t nsize)
 
static int panic (lua_State *L)
 
LUALIB_API lua_StateluaL_newstate (void)
 

Makro-Dokumentation

#define abs_index (   L,
 
)
Wert:
((i) > 0 || (i) <= LUA_REGISTRYINDEX ? (i) : \
lua_gettop(L) + (i) + 1)

Definiert in Zeile 32 der Datei lauxlib.c.

#define bufffree (   B)    ((size_t)(LUAL_BUFFERSIZE - bufflen(B)))

Definiert in Zeile 391 der Datei lauxlib.c.

#define bufflen (   B)    ((B)->p - (B)->buffer)

Definiert in Zeile 390 der Datei lauxlib.c.

#define FREELIST_REF   0 /* free list of references */

Definiert in Zeile 28 der Datei lauxlib.c.

#define lauxlib_c

Definiert in Zeile 20 der Datei lauxlib.c.

#define LIMIT   (LUA_MINSTACK/2)

Definiert in Zeile 393 der Datei lauxlib.c.

#define LUA_LIB

Definiert in Zeile 21 der Datei lauxlib.c.

Dokumentation der benutzerdefinierten Typen

typedef struct LoadF LoadF
typedef struct LoadS LoadS

Dokumentation der Funktionen

static void adjuststack ( luaL_Buffer B)
static

Definiert in Zeile 408 der Datei lauxlib.c.

408  {
409  if (B->lvl > 1) {
410  lua_State *L = B->L;
411  int toget = 1; /* number of levels to concat */
412  size_t toplen = lua_strlen(L, -1);
413  do {
414  size_t l = lua_strlen(L, -(toget+1));
415  if (B->lvl - toget + 1 >= LIMIT || toplen > l) {
416  toplen += l;
417  toget++;
418  }
419  else break;
420  } while (toget < B->lvl);
421  lua_concat(L, toget);
422  B->lvl = B->lvl - toget + 1;
423  }
424 }
static int emptybuffer ( luaL_Buffer B)
static

Definiert in Zeile 396 der Datei lauxlib.c.

396  {
397  size_t l = bufflen(B);
398  if (l == 0) return 0; /* put nothing on stack */
399  else {
400  lua_pushlstring(B->L, B->buffer, l);
401  B->p = B->buffer;
402  B->lvl++;
403  return 1;
404  }
405 }
static int errfile ( lua_State L,
const char *  what,
int  fnameindex 
)
static

Definiert in Zeile 554 der Datei lauxlib.c.

554  {
555 #if 0
556  const char *serr = strerror(errno);
557  const char *filename = lua_tostring(L, fnameindex) + 1;
558  lua_pushfstring(L, "cannot %s %s: %s", what, filename, serr);
559 #else
560  const char *filename = lua_tostring(L, fnameindex) + 1;
561  lua_pushfstring(L, "cannot %s %s", what, filename);
562 #endif
563  lua_remove(L, fnameindex);
564  return LUA_ERRFILE;
565 }
static const char* getF ( lua_State L,
void *  ud,
size_t size 
)
static

Definiert in Zeile 545 der Datei lauxlib.c.

545  {
546  LoadF *lf = (LoadF *)ud;
547  (void)L;
548  if (feof(lf->f)) return NULL;
549  *size = fread(lf->buff, 1, sizeof(lf->buff), lf->f);
550  return (*size > 0) ? lf->buff : NULL;
551 }
static const char* getS ( lua_State L,
void *  ud,
size_t size 
)
static

Definiert in Zeile 636 der Datei lauxlib.c.

636  {
637  LoadS *ls = (LoadS *)ud;
638  (void)L;
639  if (ls->size == 0) return NULL;
640  *size = ls->size;
641  ls->size = 0;
642  return ls->s;
643 }
static void* l_alloc ( void *  ud,
void *  ptr,
size_t  osize,
size_t  nsize 
)
static

Definiert in Zeile 664 der Datei lauxlib.c.

664  {
665  (void)ud;
666  (void)osize;
667  if (nsize == 0) {
668  free(ptr);
669  return NULL;
670  }
671  else {
672  if( nsize <= osize ) {
673  return ptr;
674  }
675  void* res = malloc( nsize );
676  if( !res )
677  return NULL;
678  memcpy( res, ptr, osize );
679  free( ptr );
680  return res;
681  }
682 }
static int libsize ( const luaL_Reg l)
static

Definiert in Zeile 235 der Datei lauxlib.c.

235  {
236  int size = 0;
237  for (; l->name; l++) size++;
238  return size;
239 }
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  narg,
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 *  event 
)

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  narg 
)

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  narg,
size_t len 
)

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  narg 
)

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  space,
const char *  mes 
)

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 *  event 
)

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  size,
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  narg,
const char *  def,
size_t len 
)

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  level 
)

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 }
static int panic ( lua_State L)
static

Definiert in Zeile 685 der Datei lauxlib.c.

685  {
686  (void)L; /* to avoid warnings */
687 #if 0
688  printf( "PANIC: unprotected error in call to Lua API (%s)\n",
689  lua_tostring(L, -1));
690 #endif
691  return 0;
692 }
static void tag_error ( lua_State L,
int  narg,
int  tag 
)
static

Definiert in Zeile 68 der Datei lauxlib.c.

68  {
69  luaL_typerror(L, narg, lua_typename(L, tag));
70 }