new macro LUA_API

This commit is contained in:
Roberto Ierusalimschy 2000-10-20 14:39:03 -02:00
parent 8b88ab07f7
commit 64eecc0b82
19 changed files with 238 additions and 232 deletions

99
lapi.c
View File

@ -1,5 +1,5 @@
/*
** $Id: lapi.c,v 1.105 2000/10/05 12:14:08 roberto Exp roberto $
** $Id: lapi.c,v 1.106 2000/10/06 19:29:26 roberto Exp roberto $
** Lua API
** See Copyright Notice in lua.h
*/
@ -54,7 +54,7 @@ void luaA_pushobject (lua_State *L, const TObject *o) {
incr_top;
}
int lua_stackspace (lua_State *L) {
LUA_API int lua_stackspace (lua_State *L) {
return (L->stack_last - L->top);
}
@ -65,12 +65,12 @@ int lua_stackspace (lua_State *L) {
*/
int lua_gettop (lua_State *L) {
LUA_API int lua_gettop (lua_State *L) {
return (L->top - L->Cbase);
}
void lua_settop (lua_State *L, int index) {
LUA_API void lua_settop (lua_State *L, int index) {
if (index >= 0)
luaD_adjusttop(L, L->Cbase, index);
else
@ -78,14 +78,14 @@ void lua_settop (lua_State *L, int index) {
}
void lua_remove (lua_State *L, int index) {
LUA_API void lua_remove (lua_State *L, int index) {
StkId p = luaA_index(L, index);
while (++p < L->top) *(p-1) = *p;
L->top--;
}
void lua_insert (lua_State *L, int index) {
LUA_API void lua_insert (lua_State *L, int index) {
StkId p = luaA_index(L, index);
StkId q;
for (q = L->top; q>p; q--)
@ -94,7 +94,7 @@ void lua_insert (lua_State *L, int index) {
}
void lua_pushvalue (lua_State *L, int index) {
LUA_API void lua_pushvalue (lua_State *L, int index) {
*L->top = *luaA_index(L, index);
api_incr_top(L);
}
@ -106,50 +106,50 @@ void lua_pushvalue (lua_State *L, int index) {
*/
int lua_type (lua_State *L, int index) {
LUA_API int lua_type (lua_State *L, int index) {
StkId o = luaA_indexAcceptable(L, index);
if (o == NULL) return LUA_TNONE;
else return ttype(o);
}
const char *lua_typename (lua_State *L, int t) {
LUA_API const char *lua_typename (lua_State *L, int t) {
UNUSED(L);
return luaO_typenames[t];
}
int lua_iscfunction (lua_State *L, int index) {
LUA_API int lua_iscfunction (lua_State *L, int index) {
StkId o = luaA_indexAcceptable(L, index);
if (o == NULL) return 0;
else return iscfunction(o);
}
int lua_isnumber (lua_State *L, int index) {
LUA_API int lua_isnumber (lua_State *L, int index) {
TObject *o = luaA_indexAcceptable(L, index);
if (o == NULL) return 0;
else return (tonumber(o) == 0);
}
int lua_isstring (lua_State *L, int index) {
LUA_API int lua_isstring (lua_State *L, int index) {
int t = lua_type(L, index);
return (t == LUA_TSTRING || t == LUA_TNUMBER);
}
int lua_tag (lua_State *L, int index) {
LUA_API int lua_tag (lua_State *L, int index) {
StkId o = luaA_indexAcceptable(L, index);
if (o == NULL) return LUA_NOTAG;
else return luaT_tag(o);
}
int lua_equal (lua_State *L, int index1, int index2) {
LUA_API int lua_equal (lua_State *L, int index1, int index2) {
StkId o1 = luaA_indexAcceptable(L, index1);
StkId o2 = luaA_indexAcceptable(L, index2);
if (o1 == NULL || o2 == NULL) return 0; /* index out-of-range */
else return luaO_equalObj(o1, o2);
}
int lua_lessthan (lua_State *L, int index1, int index2) {
LUA_API int lua_lessthan (lua_State *L, int index1, int index2) {
StkId o1 = luaA_indexAcceptable(L, index1);
StkId o2 = luaA_indexAcceptable(L, index2);
if (o1 == NULL || o2 == NULL) return 0; /* index out-of-range */
@ -158,37 +158,37 @@ int lua_lessthan (lua_State *L, int index1, int index2) {
double lua_tonumber (lua_State *L, int index) {
LUA_API double lua_tonumber (lua_State *L, int index) {
StkId o = luaA_indexAcceptable(L, index);
if (o == NULL || tonumber(o)) return 0;
else return nvalue(o);
}
const char *lua_tostring (lua_State *L, int index) {
LUA_API const char *lua_tostring (lua_State *L, int index) {
StkId o = luaA_indexAcceptable(L, index);
if (o == NULL || tostring(L, o)) return NULL;
else return svalue(o);
}
size_t lua_strlen (lua_State *L, int index) {
LUA_API size_t lua_strlen (lua_State *L, int index) {
StkId o = luaA_indexAcceptable(L, index);
if (o == NULL || tostring(L, o)) return 0;
else return tsvalue(o)->u.s.len;
}
lua_CFunction lua_tocfunction (lua_State *L, int index) {
LUA_API lua_CFunction lua_tocfunction (lua_State *L, int index) {
StkId o = luaA_indexAcceptable(L, index);
if (o == NULL || !iscfunction(o)) return NULL;
else return clvalue(o)->f.c;
}
void *lua_touserdata (lua_State *L, int index) {
LUA_API void *lua_touserdata (lua_State *L, int index) {
StkId o = luaA_indexAcceptable(L, index);
if (o == NULL || ttype(o) != LUA_TUSERDATA) return NULL;
else return tsvalue(o)->u.d.value;
}
const void *lua_topointer (lua_State *L, int index) {
LUA_API const void *lua_topointer (lua_State *L, int index) {
StkId o = luaA_indexAcceptable(L, index);
if (o == NULL) return NULL;
switch (ttype(o)) {
@ -207,27 +207,27 @@ const void *lua_topointer (lua_State *L, int index) {
*/
void lua_pushnil (lua_State *L) {
LUA_API void lua_pushnil (lua_State *L) {
ttype(L->top) = LUA_TNIL;
api_incr_top(L);
}
void lua_pushnumber (lua_State *L, double n) {
LUA_API void lua_pushnumber (lua_State *L, double n) {
nvalue(L->top) = n;
ttype(L->top) = LUA_TNUMBER;
api_incr_top(L);
}
void lua_pushlstring (lua_State *L, const char *s, size_t len) {
LUA_API void lua_pushlstring (lua_State *L, const char *s, size_t len) {
tsvalue(L->top) = luaS_newlstr(L, s, len);
ttype(L->top) = LUA_TSTRING;
api_incr_top(L);
}
void lua_pushstring (lua_State *L, const char *s) {
LUA_API void lua_pushstring (lua_State *L, const char *s) {
if (s == NULL)
lua_pushnil(L);
else
@ -235,12 +235,13 @@ void lua_pushstring (lua_State *L, const char *s) {
}
void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n) {
LUA_API void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n) {
luaV_Cclosure(L, fn, n);
}
void lua_pushusertag (lua_State *L, void *u, int tag) { /* ORDER LUA_T */
LUA_API void lua_pushusertag (lua_State *L, void *u, int tag) {
/* ORDER LUA_T */
if (!(tag == LUA_ANYTAG || tag == LUA_TUSERDATA || validtag(tag)))
luaO_verror(L, "invalid tag for a userdata (%d)", tag);
tsvalue(L->top) = luaS_createudata(L, u, tag);
@ -255,7 +256,7 @@ void lua_pushusertag (lua_State *L, void *u, int tag) { /* ORDER LUA_T */
*/
void lua_getglobal (lua_State *L, const char *name) {
LUA_API void lua_getglobal (lua_State *L, const char *name) {
StkId top = L->top;
*top = *luaV_getglobal(L, luaS_new(L, name));
L->top = top;
@ -263,7 +264,7 @@ void lua_getglobal (lua_State *L, const char *name) {
}
void lua_gettable (lua_State *L, int index) {
LUA_API void lua_gettable (lua_State *L, int index) {
StkId t = Index(L, index);
StkId top = L->top;
*(top-1) = *luaV_gettable(L, t);
@ -271,14 +272,14 @@ void lua_gettable (lua_State *L, int index) {
}
void lua_rawget (lua_State *L, int index) {
LUA_API void lua_rawget (lua_State *L, int index) {
StkId t = Index(L, index);
LUA_ASSERT(ttype(t) == LUA_TTABLE, "table expected");
*(L->top - 1) = *luaH_get(L, hvalue(t), L->top - 1);
}
void lua_rawgeti (lua_State *L, int index, int n) {
LUA_API void lua_rawgeti (lua_State *L, int index, int n) {
StkId o = Index(L, index);
LUA_ASSERT(ttype(o) == LUA_TTABLE, "table expected");
*L->top = *luaH_getnum(hvalue(o), n);
@ -286,14 +287,14 @@ void lua_rawgeti (lua_State *L, int index, int n) {
}
void lua_getglobals (lua_State *L) {
LUA_API void lua_getglobals (lua_State *L) {
hvalue(L->top) = L->gt;
ttype(L->top) = LUA_TTABLE;
api_incr_top(L);
}
int lua_getref (lua_State *L, int ref) {
LUA_API int lua_getref (lua_State *L, int ref) {
if (ref == LUA_REFNIL)
ttype(L->top) = LUA_TNIL;
else if (0 <= ref && ref < L->refSize &&
@ -306,7 +307,7 @@ int lua_getref (lua_State *L, int ref) {
}
void lua_newtable (lua_State *L) {
LUA_API void lua_newtable (lua_State *L) {
hvalue(L->top) = luaH_new(L, 0);
ttype(L->top) = LUA_TTABLE;
api_incr_top(L);
@ -319,14 +320,14 @@ void lua_newtable (lua_State *L) {
*/
void lua_setglobal (lua_State *L, const char *name) {
LUA_API void lua_setglobal (lua_State *L, const char *name) {
StkId top = L->top;
luaV_setglobal(L, luaS_new(L, name));
L->top = top-1; /* remove element from the top */
}
void lua_settable (lua_State *L, int index) {
LUA_API void lua_settable (lua_State *L, int index) {
StkId t = Index(L, index);
StkId top = L->top;
luaV_settable(L, t, top-2);
@ -334,7 +335,7 @@ void lua_settable (lua_State *L, int index) {
}
void lua_rawset (lua_State *L, int index) {
LUA_API void lua_rawset (lua_State *L, int index) {
StkId t = Index(L, index);
LUA_ASSERT(ttype(t) == LUA_TTABLE, "table expected");
*luaH_set(L, hvalue(t), L->top-2) = *(L->top-1);
@ -342,7 +343,7 @@ void lua_rawset (lua_State *L, int index) {
}
void lua_rawseti (lua_State *L, int index, int n) {
LUA_API void lua_rawseti (lua_State *L, int index, int n) {
StkId o = Index(L, index);
LUA_ASSERT(ttype(o) == LUA_TTABLE, "table expected");
*luaH_setint(L, hvalue(o), n) = *(L->top-1);
@ -350,14 +351,14 @@ void lua_rawseti (lua_State *L, int index, int n) {
}
void lua_setglobals (lua_State *L) {
LUA_API void lua_setglobals (lua_State *L) {
StkId newtable = --L->top;
LUA_ASSERT(ttype(newtable) == LUA_TTABLE, "table expected");
L->gt = hvalue(newtable);
}
int lua_ref (lua_State *L, int lock) {
LUA_API int lua_ref (lua_State *L, int lock) {
int ref;
if (ttype(L->top-1) == LUA_TNIL)
ref = LUA_REFNIL;
@ -385,7 +386,7 @@ int lua_ref (lua_State *L, int lock) {
** (most of them are in ldo.c)
*/
void lua_rawcall (lua_State *L, int nargs, int nresults) {
LUA_API void lua_rawcall (lua_State *L, int nargs, int nresults) {
luaD_call(L, L->top-(nargs+1), nresults);
}
@ -398,15 +399,15 @@ void lua_rawcall (lua_State *L, int nargs, int nresults) {
#define GCscale(x) ((int)((x)>>10))
#define GCunscale(x) ((unsigned long)(x)<<10)
int lua_getgcthreshold (lua_State *L) {
LUA_API int lua_getgcthreshold (lua_State *L) {
return GCscale(L->GCthreshold);
}
int lua_getgccount (lua_State *L) {
LUA_API int lua_getgccount (lua_State *L) {
return GCscale(L->nblocks);
}
void lua_setgcthreshold (lua_State *L, int newthreshold) {
LUA_API void lua_setgcthreshold (lua_State *L, int newthreshold) {
if (newthreshold > GCscale(ULONG_MAX))
L->GCthreshold = ULONG_MAX;
else
@ -419,7 +420,7 @@ void lua_setgcthreshold (lua_State *L, int newthreshold) {
** miscellaneous functions
*/
void lua_settag (lua_State *L, int tag) {
LUA_API void lua_settag (lua_State *L, int tag) {
luaT_realtag(L, tag);
switch (ttype(L->top-1)) {
case LUA_TTABLE:
@ -436,7 +437,7 @@ void lua_settag (lua_State *L, int tag) {
}
void lua_unref (lua_State *L, int ref) {
LUA_API void lua_unref (lua_State *L, int ref) {
if (ref >= 0) {
LUA_ASSERT(ref < L->refSize && L->refArray[ref].st < 0, "invalid ref");
L->refArray[ref].st = L->refFree;
@ -445,7 +446,7 @@ void lua_unref (lua_State *L, int ref) {
}
int lua_next (lua_State *L, int index) {
LUA_API int lua_next (lua_State *L, int index) {
StkId t = luaA_index(L, index);
Node *n;
LUA_ASSERT(ttype(t) == LUA_TTABLE, "table expected");
@ -463,7 +464,7 @@ int lua_next (lua_State *L, int index) {
}
int lua_getn (lua_State *L, int index) {
LUA_API int lua_getn (lua_State *L, int index) {
Hash *h = hvalue(luaA_index(L, index));
const TObject *value = luaH_getstr(h, luaS_new(L, "n")); /* value = h.n */
if (ttype(value) == LUA_TNUMBER)
@ -484,7 +485,7 @@ int lua_getn (lua_State *L, int index) {
}
void lua_concat (lua_State *L, int n) {
LUA_API void lua_concat (lua_State *L, int n) {
StkId top = L->top;
luaV_strconc(L, n, top);
L->top = top-(n-1);

View File

@ -1,5 +1,5 @@
/*
** $Id: lauxlib.c,v 1.38 2000/10/02 20:10:55 roberto Exp roberto $
** $Id: lauxlib.c,v 1.39 2000/10/05 12:14:08 roberto Exp roberto $
** Auxiliary functions for building Lua libraries
** See Copyright Notice in lua.h
*/
@ -21,7 +21,7 @@
int luaL_findstring (const char *name, const char *const list[]) {
LUA_API int luaL_findstring (const char *name, const char *const list[]) {
int i;
for (i=0; list[i]; i++)
if (strcmp(list[i], name) == 0)
@ -29,7 +29,7 @@ int luaL_findstring (const char *name, const char *const list[]) {
return -1; /* name not found */
}
void luaL_argerror (lua_State *L, int narg, const char *extramsg) {
LUA_API void luaL_argerror (lua_State *L, int narg, const char *extramsg) {
lua_Debug ar;
lua_getstack(L, 0, &ar);
lua_getinfo(L, "n", &ar);
@ -42,32 +42,32 @@ void luaL_argerror (lua_State *L, int narg, const char *extramsg) {
static void type_error (lua_State *L, int narg, int t) {
char buff[100];
const char *rt = lua_typename(L, lua_type(L, narg));
if (*rt == 'N') rt = "no value";
int tt = lua_type(L, narg);
const char *rt = (tt == LUA_TNONE) ? "no value" : lua_typename(L, tt);
sprintf(buff, "%.10s expected, got %.10s", lua_typename(L, t), rt);
luaL_argerror(L, narg, buff);
}
void luaL_checkstack (lua_State *L, int space, const char *mes) {
LUA_API void luaL_checkstack (lua_State *L, int space, const char *mes) {
if (space > lua_stackspace(L))
luaL_verror(L, "stack overflow (%.30s)", mes);
}
void luaL_checktype(lua_State *L, int narg, int t) {
LUA_API void luaL_checktype(lua_State *L, int narg, int t) {
if (lua_type(L, narg) != t)
type_error(L, narg, t);
}
void luaL_checkany (lua_State *L, int narg) {
LUA_API void luaL_checkany (lua_State *L, int narg) {
if (lua_type(L, narg) == LUA_TNONE)
luaL_argerror(L, narg, "value expected");
}
const char *luaL_check_lstr (lua_State *L, int narg, size_t *len) {
LUA_API const char *luaL_check_lstr (lua_State *L, int narg, size_t *len) {
const char *s = lua_tostring(L, narg);
if (!s) type_error(L, narg, LUA_TSTRING);
if (len) *len = lua_strlen(L, narg);
@ -75,7 +75,7 @@ const char *luaL_check_lstr (lua_State *L, int narg, size_t *len) {
}
const char *luaL_opt_lstr (lua_State *L, int narg, const char *def,
LUA_API const char *luaL_opt_lstr (lua_State *L, int narg, const char *def,
size_t *len) {
if (lua_isnull(L, narg)) {
if (len)
@ -86,7 +86,7 @@ const char *luaL_opt_lstr (lua_State *L, int narg, const char *def,
}
double luaL_check_number (lua_State *L, int narg) {
LUA_API double luaL_check_number (lua_State *L, int narg) {
double d = lua_tonumber(L, narg);
if (d == 0 && !lua_isnumber(L, narg)) /* avoid extra test when d is not 0 */
type_error(L, narg, LUA_TNUMBER);
@ -94,20 +94,20 @@ double luaL_check_number (lua_State *L, int narg) {
}
double luaL_opt_number (lua_State *L, int narg, double def) {
LUA_API double luaL_opt_number (lua_State *L, int narg, double def) {
if (lua_isnull(L, narg)) return def;
else return luaL_check_number(L, narg);
}
void luaL_openlib (lua_State *L, const struct luaL_reg *l, int n) {
LUA_API void luaL_openlib (lua_State *L, const struct luaL_reg *l, int n) {
int i;
for (i=0; i<n; i++)
lua_register(L, l[i].name, l[i].func);
}
void luaL_verror (lua_State *L, const char *fmt, ...) {
LUA_API void luaL_verror (lua_State *L, const char *fmt, ...) {
char buff[500];
va_list argp;
va_start(argp, fmt);
@ -164,25 +164,25 @@ static void adjuststack (luaL_Buffer *B) {
}
char *luaL_prepbuffer (luaL_Buffer *B) {
LUA_API char *luaL_prepbuffer (luaL_Buffer *B) {
if (emptybuffer(B))
adjuststack(B);
return B->buffer;
}
void luaL_addlstring (luaL_Buffer *B, const char *s, size_t l) {
LUA_API void luaL_addlstring (luaL_Buffer *B, const char *s, size_t l) {
while (l--)
luaL_putchar(B, *s++);
}
void luaL_addstring (luaL_Buffer *B, const char *s) {
LUA_API void luaL_addstring (luaL_Buffer *B, const char *s) {
luaL_addlstring(B, s, strlen(s));
}
void luaL_pushresult (luaL_Buffer *B) {
LUA_API void luaL_pushresult (luaL_Buffer *B) {
emptybuffer(B);
if (B->level == 0)
lua_pushlstring(B->L, NULL, 0);
@ -192,7 +192,7 @@ void luaL_pushresult (luaL_Buffer *B) {
}
void luaL_addvalue (luaL_Buffer *B) {
LUA_API void luaL_addvalue (luaL_Buffer *B) {
lua_State *L = B->L;
size_t vl = lua_strlen(L, -1);
if (vl <= bufffree(B)) { /* fit into buffer? */
@ -209,7 +209,7 @@ void luaL_addvalue (luaL_Buffer *B) {
}
void luaL_buffinit (lua_State *L, luaL_Buffer *B) {
LUA_API void luaL_buffinit (lua_State *L, luaL_Buffer *B) {
B->L = L;
B->p = B->buffer;
B->level = 0;

View File

@ -1,5 +1,5 @@
/*
** $Id: lauxlib.h,v 1.26 2000/10/02 20:10:55 roberto Exp roberto $
** $Id: lauxlib.h,v 1.27 2000/10/05 12:14:08 roberto Exp roberto $
** Auxiliary functions for building Lua libraries
** See Copyright Notice in lua.h
*/
@ -21,20 +21,20 @@ struct luaL_reg {
};
void luaL_openlib (lua_State *L, const struct luaL_reg *l, int n);
void luaL_argerror (lua_State *L, int numarg, const char *extramsg);
const char *luaL_check_lstr (lua_State *L, int numArg, size_t *len);
const char *luaL_opt_lstr (lua_State *L, int numArg, const char *def,
size_t *len);
double luaL_check_number (lua_State *L, int numArg);
double luaL_opt_number (lua_State *L, int numArg, double def);
LUA_API void luaL_openlib (lua_State *L, const struct luaL_reg *l, int n);
LUA_API void luaL_argerror (lua_State *L, int numarg, const char *extramsg);
LUA_API const char *luaL_check_lstr (lua_State *L, int numArg, size_t *len);
LUA_API const char *luaL_opt_lstr (lua_State *L, int numArg, const char *def,
size_t *len);
LUA_API double luaL_check_number (lua_State *L, int numArg);
LUA_API double luaL_opt_number (lua_State *L, int numArg, double def);
void luaL_checkstack (lua_State *L, int space, const char *msg);
void luaL_checktype (lua_State *L, int narg, int t);
void luaL_checkany (lua_State *L, int narg);
LUA_API void luaL_checkstack (lua_State *L, int space, const char *msg);
LUA_API void luaL_checktype (lua_State *L, int narg, int t);
LUA_API void luaL_checkany (lua_State *L, int narg);
void luaL_verror (lua_State *L, const char *fmt, ...);
int luaL_findstring (const char *name, const char *const list[]);
LUA_API void luaL_verror (lua_State *L, const char *fmt, ...);
LUA_API int luaL_findstring (const char *name, const char *const list[]);
@ -62,7 +62,9 @@ int luaL_findstring (const char *name, const char *const list[]);
*/
#ifndef LUAL_BUFFERSIZE
#define LUAL_BUFFERSIZE BUFSIZ
#endif
typedef struct luaL_Buffer {
@ -78,12 +80,12 @@ typedef struct luaL_Buffer {
#define luaL_addsize(B,n) ((B)->p += (n))
void luaL_buffinit (lua_State *L, luaL_Buffer *B);
char *luaL_prepbuffer (luaL_Buffer *B);
void luaL_addlstring (luaL_Buffer *B, const char *s, size_t l);
void luaL_addstring (luaL_Buffer *B, const char *s);
void luaL_addvalue (luaL_Buffer *B);
void luaL_pushresult (luaL_Buffer *B);
LUA_API void luaL_buffinit (lua_State *L, luaL_Buffer *B);
LUA_API char *luaL_prepbuffer (luaL_Buffer *B);
LUA_API void luaL_addlstring (luaL_Buffer *B, const char *s, size_t l);
LUA_API void luaL_addstring (luaL_Buffer *B, const char *s);
LUA_API void luaL_addvalue (luaL_Buffer *B);
LUA_API void luaL_pushresult (luaL_Buffer *B);
/* }====================================================== */

View File

@ -1,5 +1,5 @@
/*
** $Id: lbaselib.c,v 1.10 2000/10/06 19:13:29 roberto Exp roberto $
** $Id: lbaselib.c,v 1.11 2000/10/09 15:46:43 roberto Exp roberto $
** Basic library
** See Copyright Notice in lua.h
*/
@ -636,7 +636,7 @@ static const struct luaL_reg base_funcs[] = {
void lua_baselibopen (lua_State *L) {
LUA_API void lua_baselibopen (lua_State *L) {
luaL_openl(L, base_funcs);
lua_pushstring(L, LUA_VERSION);
lua_setglobal(L, "_VERSION");

View File

@ -1,5 +1,5 @@
/*
** $Id: ldblib.c,v 1.21 2000/09/12 18:38:25 roberto Exp roberto $
** $Id: ldblib.c,v 1.22 2000/10/02 20:10:55 roberto Exp roberto $
** Interface from Lua to its debug API
** See Copyright Notice in lua.h
*/
@ -174,7 +174,7 @@ static const struct luaL_reg dblib[] = {
};
void lua_dblibopen (lua_State *L) {
LUA_API void lua_dblibopen (lua_State *L) {
luaL_openl(L, dblib);
}

View File

@ -1,5 +1,5 @@
/*
** $Id: ldebug.c,v 1.46 2000/10/06 12:45:25 roberto Exp roberto $
** $Id: ldebug.c,v 1.47 2000/10/09 13:47:32 roberto Exp roberto $
** Debug Interface
** See Copyright Notice in lua.h
*/
@ -41,14 +41,14 @@ static int isLmark (StkId o) {
}
lua_Hook lua_setcallhook (lua_State *L, lua_Hook func) {
LUA_API lua_Hook lua_setcallhook (lua_State *L, lua_Hook func) {
lua_Hook oldhook = L->callhook;
L->callhook = func;
return oldhook;
}
lua_Hook lua_setlinehook (lua_State *L, lua_Hook func) {
LUA_API lua_Hook lua_setlinehook (lua_State *L, lua_Hook func) {
lua_Hook oldhook = L->linehook;
L->linehook = func;
return oldhook;
@ -68,7 +68,7 @@ static StkId aux_stackedfunction (lua_State *L, int level, StkId top) {
}
int lua_getstack (lua_State *L, int level, lua_Debug *ar) {
LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar) {
StkId f = aux_stackedfunction(L, level, L->top);
if (f == NULL) return 0; /* there is no such level */
else {
@ -78,7 +78,7 @@ int lua_getstack (lua_State *L, int level, lua_Debug *ar) {
}
static int lua_nups (StkId f) {
static int nups (StkId f) {
switch (ttype(f)) {
case LUA_TFUNCTION:
return clvalue(f)->nupvalues;
@ -121,7 +121,7 @@ int luaG_getline (int *lineinfo, int pc, int refline, int *prefi) {
}
static int lua_currentpc (StkId f) {
static int currentpc (StkId f) {
CallInfo *ci = infovalue(f);
LUA_ASSERT(isLmark(f), "function has no pc");
if (ci->pc)
@ -131,13 +131,13 @@ static int lua_currentpc (StkId f) {
}
static int lua_currentline (StkId f) {
static int currentline (StkId f) {
if (!isLmark(f))
return -1; /* only active lua functions have current-line information */
else {
CallInfo *ci = infovalue(f);
int *lineinfo = ci->func->f.l->lineinfo;
return luaG_getline(lineinfo, lua_currentpc(f), 1, NULL);
return luaG_getline(lineinfo, currentpc(f), 1, NULL);
}
}
@ -148,25 +148,27 @@ static Proto *getluaproto (StkId f) {
}
const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int localnum) {
LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar,
int localnum) {
const char *name;
StkId f = ar->_func;
Proto *fp = getluaproto(f);
if (!fp) return NULL; /* `f' is not a Lua function? */
name = luaF_getlocalname(fp, localnum, lua_currentpc(f));
name = luaF_getlocalname(fp, localnum, currentpc(f));
if (!name) return NULL;
luaA_pushobject(L, (f+1)+(localnum-1)); /* push value */
return name;
}
const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int localnum) {
LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar,
int localnum) {
const char *name;
StkId f = ar->_func;
Proto *fp = getluaproto(f);
L->top--; /* pop new value */
if (!fp) return NULL; /* `f' is not a Lua function? */
name = luaF_getlocalname(fp, localnum, lua_currentpc(f));
name = luaF_getlocalname(fp, localnum, currentpc(f));
if (!name || name[0] == '*') return NULL; /* `*' starts private locals */
*((f+1)+(localnum-1)) = *L->top;
return name;
@ -180,7 +182,7 @@ static void infoLproto (lua_Debug *ar, Proto *f) {
}
static void lua_funcinfo (lua_State *L, lua_Debug *ar, StkId func) {
static void funcinfo (lua_State *L, lua_Debug *ar, StkId func) {
Closure *cl = NULL;
switch (ttype(func)) {
case LUA_TFUNCTION:
@ -231,7 +233,7 @@ static const char *travglobals (lua_State *L, const TObject *o) {
}
static void lua_getname (lua_State *L, StkId f, lua_Debug *ar) {
static void getname (lua_State *L, StkId f, lua_Debug *ar) {
TObject o;
setnormalized(&o, f);
/* try to find a name for given function */
@ -244,7 +246,7 @@ static void lua_getname (lua_State *L, StkId f, lua_Debug *ar) {
}
int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar) {
LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar) {
StkId func;
int isactive = (*what != '>');
if (isactive)
@ -256,21 +258,21 @@ int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar) {
for (; *what; what++) {
switch (*what) {
case 'S': {
lua_funcinfo(L, ar, func);
funcinfo(L, ar, func);
break;
}
case 'l': {
ar->currentline = lua_currentline(func);
ar->currentline = currentline(func);
break;
}
case 'u': {
ar->nups = lua_nups(func);
ar->nups = nups(func);
break;
}
case 'n': {
ar->namewhat = (isactive) ? getfuncname(L, func, &ar->name) : NULL;
if (ar->namewhat == NULL)
lua_getname(L, func, ar);
getname(L, func, ar);
break;
}
case 'f': {
@ -387,7 +389,7 @@ static const char *getobjname (lua_State *L, StkId obj, const char **name) {
return NULL; /* not an active Lua function */
else {
Proto *p = infovalue(func)->func->f.l;
int pc = lua_currentpc(func);
int pc = currentpc(func);
int stackpos = obj - (func+1); /* func+1 == function base */
Instruction i = luaG_symbexec(p, pc, stackpos);
LUA_ASSERT(pc != -1, "function must be active");
@ -419,7 +421,7 @@ static const char *getfuncname (lua_State *L, StkId f, const char **name) {
return NULL; /* not an active Lua function */
else {
Proto *p = infovalue(func)->func->f.l;
int pc = lua_currentpc(func);
int pc = currentpc(func);
Instruction i;
if (pc == -1) return NULL; /* function is not activated */
i = p->code[pc];

12
ldo.c
View File

@ -1,5 +1,5 @@
/*
** $Id: ldo.c,v 1.106 2000/10/09 15:46:43 roberto Exp roberto $
** $Id: ldo.c,v 1.107 2000/10/10 19:51:39 roberto Exp roberto $
** Stack and Call structure of Lua
** See Copyright Notice in lua.h
*/
@ -212,7 +212,7 @@ static void f_call (lua_State *L, void *ud) {
}
int lua_call (lua_State *L, int nargs, int nresults) {
LUA_API int lua_call (lua_State *L, int nargs, int nresults) {
StkId func = L->top - (nargs+1); /* function to be called */
struct CallS c;
int status;
@ -284,7 +284,7 @@ static int parse_file (lua_State *L, const char *filename) {
}
int lua_dofile (lua_State *L, const char *filename) {
LUA_API int lua_dofile (lua_State *L, const char *filename) {
int status = parse_file(L, filename);
if (status == 0) /* parse OK? */
status = lua_call(L, 0, LUA_MULTRET); /* call main */
@ -301,7 +301,7 @@ static int parse_buffer (lua_State *L, const char *buff, size_t size,
}
int lua_dobuffer (lua_State *L, const char *buff, size_t size,
LUA_API int lua_dobuffer (lua_State *L, const char *buff, size_t size,
const char *name) {
int status = parse_buffer(L, buff, size, name);
if (status == 0) /* parse OK? */
@ -310,7 +310,7 @@ int lua_dobuffer (lua_State *L, const char *buff, size_t size,
}
int lua_dostring (lua_State *L, const char *str) {
LUA_API int lua_dostring (lua_State *L, const char *str) {
return lua_dobuffer(L, str, strlen(str), str);
}
@ -343,7 +343,7 @@ static void message (lua_State *L, const char *s) {
/*
** Reports an error, and jumps up to the available recovery label
*/
void lua_error (lua_State *L, const char *s) {
LUA_API void lua_error (lua_State *L, const char *s) {
if (s) message(L, s);
luaD_breakrun(L, LUA_ERRRUN);
}

View File

@ -1,5 +1,5 @@
/*
** $Id: liolib.c,v 1.85 2000/09/22 18:14:06 roberto Exp roberto $
** $Id: liolib.c,v 1.86 2000/10/02 20:10:55 roberto Exp roberto $
** Standard I/O (and system) library
** See Copyright Notice in lua.h
*/
@ -721,7 +721,7 @@ static void openwithcontrol (lua_State *L) {
}
void lua_iolibopen (lua_State *L) {
LUA_API void lua_iolibopen (lua_State *L) {
luaL_openl(L, iolib);
openwithcontrol(L);
}

4
llex.c
View File

@ -1,5 +1,5 @@
/*
** $Id: llex.c,v 1.70 2000/09/11 20:29:27 roberto Exp roberto $
** $Id: llex.c,v 1.71 2000/09/27 17:41:58 roberto Exp roberto $
** Lexical Analyzer
** See Copyright Notice in lua.h
*/
@ -58,7 +58,7 @@ void luaX_checklimit (LexState *ls, int val, int limit, const char *msg) {
void luaX_syntaxerror (LexState *ls, const char *s, const char *token) {
char buff[MAXSRC];
luaO_chunkid(buff, ls->source->str, sizeof(buff));
luaO_verror(ls->L, "%.99s;\n last token read: `%.50s' at line %d in %.80s",
luaO_verror(ls->L, "%.99s;\n last token read: `%.30s' at line %d in %.80s",
s, token, ls->linenumber, buff);
}

View File

@ -1,5 +1,5 @@
/*
** $Id: lmathlib.c,v 1.27 2000/08/28 17:57:04 roberto Exp roberto $
** $Id: lmathlib.c,v 1.28 2000/08/31 20:23:40 roberto Exp roberto $
** Standard mathematical library
** See Copyright Notice in lua.h
*/
@ -228,7 +228,7 @@ static const struct luaL_reg mathlib[] = {
/*
** Open math library
*/
void lua_mathlibopen (lua_State *L) {
LUA_API void lua_mathlibopen (lua_State *L) {
luaL_openl(L, mathlib);
lua_pushnumber(L, 0); /* to get its tag */
lua_pushcfunction(L, math_pow);

View File

@ -1,5 +1,5 @@
/*
** $Id: lstate.c,v 1.43 2000/10/05 13:00:17 roberto Exp roberto $
** $Id: lstate.c,v 1.44 2000/10/06 19:28:47 roberto Exp roberto $
** Global State
** See Copyright Notice in lua.h
*/
@ -60,7 +60,7 @@ static void f_luaopen (lua_State *L, void *ud) {
}
lua_State *lua_open (int stacksize) {
LUA_API lua_State *lua_open (int stacksize) {
lua_State *L = luaM_new(NULL, lua_State);
if (L == NULL) return NULL; /* memory allocation error */
L->stack = NULL;
@ -94,7 +94,7 @@ lua_State *lua_open (int stacksize) {
}
void lua_close (lua_State *L) {
LUA_API void lua_close (lua_State *L) {
luaC_collect(L, 1); /* collect all elements */
LUA_ASSERT(L->rootproto == NULL, "list should be empty");
LUA_ASSERT(L->rootcl == NULL, "list should be empty");

View File

@ -1,5 +1,5 @@
/*
** $Id: lstrlib.c,v 1.53 2000/09/14 14:09:31 roberto Exp roberto $
** $Id: lstrlib.c,v 1.54 2000/10/05 12:14:08 roberto Exp roberto $
** Standard library for string operations and pattern-matching
** See Copyright Notice in lua.h
*/
@ -616,6 +616,6 @@ static const struct luaL_reg strlib[] = {
/*
** Open string library
*/
void lua_strlibopen (lua_State *L) {
LUA_API void lua_strlibopen (lua_State *L) {
luaL_openl(L, strlib);
}

View File

@ -1,5 +1,5 @@
/*
** $Id: ltests.c,v 1.49 2000/10/05 13:00:17 roberto Exp roberto $
** $Id: ltests.c,v 1.50 2000/10/06 19:29:26 roberto Exp roberto $
** Internal Module for Debugging of the Lua Implementation
** See Copyright Notice in lua.h
*/
@ -72,7 +72,7 @@ static int pushop (lua_State *L, Proto *p, int pc) {
sprintf(buff, "%5d - ", luaG_getline(p->lineinfo, pc, 1, NULL));
switch ((enum Mode)luaK_opproperties[o].mode) {
case iO:
sprintf(buff+8, "%s", name);
sprintf(buff+8, "%-12s", name);
break;
case iU:
sprintf(buff+8, "%-12s%4u", name, GETARG_U(i));

10
ltm.c
View File

@ -1,5 +1,5 @@
/*
** $Id: ltm.c,v 1.53 2000/10/05 12:14:08 roberto Exp roberto $
** $Id: ltm.c,v 1.54 2000/10/05 13:00:17 roberto Exp roberto $
** Tag methods
** See Copyright Notice in lua.h
*/
@ -83,7 +83,7 @@ void luaT_init (lua_State *L) {
}
int lua_newtag (lua_State *L) {
LUA_API int lua_newtag (lua_State *L) {
luaM_growvector(L, L->TMtable, L->last_tag, 1, struct TM,
"tag table overflow", MAX_INT);
L->nblocks += sizeof(struct TM);
@ -104,7 +104,7 @@ void luaT_realtag (lua_State *L, int tag) {
}
int lua_copytagmethods (lua_State *L, int tagto, int tagfrom) {
LUA_API int lua_copytagmethods (lua_State *L, int tagto, int tagfrom) {
int e;
checktag(L, tagto);
checktag(L, tagfrom);
@ -126,7 +126,7 @@ int luaT_tag (const TObject *o) {
}
void lua_gettagmethod (lua_State *L, int t, const char *event) {
LUA_API void lua_gettagmethod (lua_State *L, int t, const char *event) {
int e;
e = luaI_checkevent(L, event, t);
checktag(L, t);
@ -140,7 +140,7 @@ void lua_gettagmethod (lua_State *L, int t, const char *event) {
}
void lua_settagmethod (lua_State *L, int t, const char *event) {
LUA_API void lua_settagmethod (lua_State *L, int t, const char *event) {
Closure *oldtm;
int e = luaI_checkevent(L, event, t);
checktag(L, t);

127
lua.h
View File

@ -1,5 +1,5 @@
/*
** $Id: lua.h,v 1.73 2000/10/05 12:14:08 roberto Exp roberto $
** $Id: lua.h,v 1.74 2000/10/09 15:46:43 roberto Exp roberto $
** Lua - An Extensible Extension Language
** TeCGraf: Grupo de Tecnologia em Computacao Grafica, PUC-Rio, Brazil
** e-mail: lua@tecgraf.puc-rio.br
@ -16,6 +16,11 @@
#include <stddef.h>
#ifndef LUA_API
#define LUA_API extern
#endif
#define LUA_VERSION "Lua 4.0 (beta)"
#define LUA_COPYRIGHT "Copyright (C) 1994-2000 TeCGraf, PUC-Rio"
#define LUA_AUTHORS "W. Celes, R. Ierusalimschy & L. H. de Figueiredo"
@ -65,113 +70,113 @@ typedef int (*lua_CFunction) (lua_State *L);
/*
** state manipulation
*/
lua_State *lua_open (int stacksize);
void lua_close (lua_State *L);
LUA_API lua_State *lua_open (int stacksize);
LUA_API void lua_close (lua_State *L);
/*
** basic stack manipulation
*/
int lua_gettop (lua_State *L);
void lua_settop (lua_State *L, int index);
void lua_pushvalue (lua_State *L, int index);
void lua_remove (lua_State *L, int index);
void lua_insert (lua_State *L, int index);
int lua_stackspace (lua_State *L);
LUA_API int lua_gettop (lua_State *L);
LUA_API void lua_settop (lua_State *L, int index);
LUA_API void lua_pushvalue (lua_State *L, int index);
LUA_API void lua_remove (lua_State *L, int index);
LUA_API void lua_insert (lua_State *L, int index);
LUA_API int lua_stackspace (lua_State *L);
/*
** access functions (stack -> C)
*/
int lua_type (lua_State *L, int index);
const char *lua_typename (lua_State *L, int t);
int lua_isnumber (lua_State *L, int index);
int lua_isstring (lua_State *L, int index);
int lua_iscfunction (lua_State *L, int index);
int lua_tag (lua_State *L, int index);
LUA_API int lua_type (lua_State *L, int index);
LUA_API const char *lua_typename (lua_State *L, int t);
LUA_API int lua_isnumber (lua_State *L, int index);
LUA_API int lua_isstring (lua_State *L, int index);
LUA_API int lua_iscfunction (lua_State *L, int index);
LUA_API int lua_tag (lua_State *L, int index);
int lua_equal (lua_State *L, int index1, int index2);
int lua_lessthan (lua_State *L, int index1, int index2);
LUA_API int lua_equal (lua_State *L, int index1, int index2);
LUA_API int lua_lessthan (lua_State *L, int index1, int index2);
double lua_tonumber (lua_State *L, int index);
const char *lua_tostring (lua_State *L, int index);
size_t lua_strlen (lua_State *L, int index);
lua_CFunction lua_tocfunction (lua_State *L, int index);
void *lua_touserdata (lua_State *L, int index);
const void *lua_topointer (lua_State *L, int index);
LUA_API double lua_tonumber (lua_State *L, int index);
LUA_API const char *lua_tostring (lua_State *L, int index);
LUA_API size_t lua_strlen (lua_State *L, int index);
LUA_API lua_CFunction lua_tocfunction (lua_State *L, int index);
LUA_API void *lua_touserdata (lua_State *L, int index);
LUA_API const void *lua_topointer (lua_State *L, int index);
/*
** push functions (C -> stack)
*/
void lua_pushnil (lua_State *L);
void lua_pushnumber (lua_State *L, double n);
void lua_pushlstring (lua_State *L, const char *s, size_t len);
void lua_pushstring (lua_State *L, const char *s);
void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n);
void lua_pushusertag (lua_State *L, void *u, int tag);
LUA_API void lua_pushnil (lua_State *L);
LUA_API void lua_pushnumber (lua_State *L, double n);
LUA_API void lua_pushlstring (lua_State *L, const char *s, size_t len);
LUA_API void lua_pushstring (lua_State *L, const char *s);
LUA_API void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n);
LUA_API void lua_pushusertag (lua_State *L, void *u, int tag);
/*
** get functions (Lua -> stack)
*/
void lua_getglobal (lua_State *L, const char *name);
void lua_gettable (lua_State *L, int index);
void lua_rawget (lua_State *L, int index);
void lua_rawgeti (lua_State *L, int index, int n);
void lua_getglobals (lua_State *L);
void lua_gettagmethod (lua_State *L, int tag, const char *event);
LUA_API void lua_getglobal (lua_State *L, const char *name);
LUA_API void lua_gettable (lua_State *L, int index);
LUA_API void lua_rawget (lua_State *L, int index);
LUA_API void lua_rawgeti (lua_State *L, int index, int n);
LUA_API void lua_getglobals (lua_State *L);
LUA_API void lua_gettagmethod (lua_State *L, int tag, const char *event);
int lua_getref (lua_State *L, int ref);
LUA_API int lua_getref (lua_State *L, int ref);
void lua_newtable (lua_State *L);
LUA_API void lua_newtable (lua_State *L);
/*
** set functions (stack -> Lua)
*/
void lua_setglobal (lua_State *L, const char *name);
void lua_settable (lua_State *L, int index);
void lua_rawset (lua_State *L, int index);
void lua_rawseti (lua_State *L, int index, int n);
void lua_setglobals (lua_State *L);
void lua_settagmethod (lua_State *L, int tag, const char *event);
int lua_ref (lua_State *L, int lock);
LUA_API void lua_setglobal (lua_State *L, const char *name);
LUA_API void lua_settable (lua_State *L, int index);
LUA_API void lua_rawset (lua_State *L, int index);
LUA_API void lua_rawseti (lua_State *L, int index, int n);
LUA_API void lua_setglobals (lua_State *L);
LUA_API void lua_settagmethod (lua_State *L, int tag, const char *event);
LUA_API int lua_ref (lua_State *L, int lock);
/*
** "do" functions (run Lua code)
*/
int lua_call (lua_State *L, int nargs, int nresults);
void lua_rawcall (lua_State *L, int nargs, int nresults);
int lua_dofile (lua_State *L, const char *filename);
int lua_dostring (lua_State *L, const char *str);
int lua_dobuffer (lua_State *L, const char *buff, size_t size,
const char *name);
LUA_API int lua_call (lua_State *L, int nargs, int nresults);
LUA_API void lua_rawcall (lua_State *L, int nargs, int nresults);
LUA_API int lua_dofile (lua_State *L, const char *filename);
LUA_API int lua_dostring (lua_State *L, const char *str);
LUA_API int lua_dobuffer (lua_State *L, const char *buff, size_t size,
const char *name);
/*
** Garbage-collection functions
*/
int lua_getgcthreshold (lua_State *L);
int lua_getgccount (lua_State *L);
void lua_setgcthreshold (lua_State *L, int newthreshold);
LUA_API int lua_getgcthreshold (lua_State *L);
LUA_API int lua_getgccount (lua_State *L);
LUA_API void lua_setgcthreshold (lua_State *L, int newthreshold);
/*
** miscellaneous functions
*/
int lua_newtag (lua_State *L);
int lua_copytagmethods (lua_State *L, int tagto, int tagfrom);
void lua_settag (lua_State *L, int tag);
LUA_API int lua_newtag (lua_State *L);
LUA_API int lua_copytagmethods (lua_State *L, int tagto, int tagfrom);
LUA_API void lua_settag (lua_State *L, int tag);
void lua_error (lua_State *L, const char *s);
LUA_API void lua_error (lua_State *L, const char *s);
void lua_unref (lua_State *L, int ref);
LUA_API void lua_unref (lua_State *L, int ref);
int lua_next (lua_State *L, int index);
int lua_getn (lua_State *L, int index);
LUA_API int lua_next (lua_State *L, int index);
LUA_API int lua_getn (lua_State *L, int index);
void lua_concat (lua_State *L, int n);
LUA_API void lua_concat (lua_State *L, int n);
/*

View File

@ -1,5 +1,5 @@
/*
** $Id: luadebug.h,v 1.14 2000/09/11 20:29:27 roberto Exp roberto $
** $Id: luadebug.h,v 1.15 2000/09/12 18:38:02 roberto Exp roberto $
** Debugging API
** See Copyright Notice in lua.h
*/
@ -17,13 +17,15 @@ typedef struct lua_Localvar lua_Localvar;
typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
int lua_getstack (lua_State *L, int level, lua_Debug *ar);
int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar);
const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int localnum);
const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int localnum);
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 localnum);
LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar,
int localnum);
lua_Hook lua_setcallhook (lua_State *L, lua_Hook func);
lua_Hook lua_setlinehook (lua_State *L, lua_Hook func);
LUA_API lua_Hook lua_setcallhook (lua_State *L, lua_Hook func);
LUA_API lua_Hook lua_setlinehook (lua_State *L, lua_Hook func);
#define LUA_IDSIZE 60

View File

@ -1,5 +1,5 @@
/*
** $Id: lualib.h,v 1.11 2000/09/05 19:33:32 roberto Exp roberto $
** $Id: lualib.h,v 1.12 2000/09/12 13:46:59 roberto Exp roberto $
** Lua standard libraries
** See Copyright Notice in lua.h
*/
@ -13,11 +13,11 @@
#define LUA_ALERT "_ALERT"
void lua_baselibopen (lua_State *L);
void lua_iolibopen (lua_State *L);
void lua_strlibopen (lua_State *L);
void lua_mathlibopen (lua_State *L);
void lua_dblibopen (lua_State *L);
LUA_API void lua_baselibopen (lua_State *L);
LUA_API void lua_iolibopen (lua_State *L);
LUA_API void lua_strlibopen (lua_State *L);
LUA_API void lua_mathlibopen (lua_State *L);
LUA_API void lua_dblibopen (lua_State *L);

View File

@ -1,5 +1,5 @@
/*
** $Id: lundump.c,v 1.32 2000/09/21 03:15:36 lhf Exp $
** $Id: lundump.c,v 1.32 2000/09/21 03:15:36 lhf Exp lhf $
** load bytecodes from files
** See Copyright Notice in lua.h
*/
@ -23,7 +23,7 @@ static const char* ZNAME (ZIO* Z)
static void unexpectedEOZ (lua_State* L, ZIO* Z)
{
luaO_verror(L,"unexpected end of file in `%.255s'",ZNAME(Z));
luaO_verror(L,"unexpected end of file in `%.99s'",ZNAME(Z));
}
static int ezgetc (lua_State* L, ZIO* Z)
@ -107,7 +107,8 @@ static void LoadCode (lua_State* L, Proto* tf, ZIO* Z, int swap)
int size=LoadInt(L,Z,swap);
tf->code=luaM_newvector(L,size,Instruction);
LoadVector(L,tf->code,size,sizeof(*tf->code),Z,swap);
if (tf->code[size-1]!=OP_END) luaO_verror(L,"bad code in `%.255s'",ZNAME(Z));
if (tf->code[size-1]!=OP_END) luaO_verror(L,"bad code in `%.99s'",ZNAME(Z));
luaF_protook(L,tf,size);
}
static void LoadLocals (lua_State* L, Proto* tf, ZIO* Z, int swap)
@ -125,8 +126,8 @@ static void LoadLocals (lua_State* L, Proto* tf, ZIO* Z, int swap)
static void LoadLines (lua_State* L, Proto* tf, ZIO* Z, int swap)
{
int n=LoadInt(L,Z,swap);
if (n==0) return;
int n;
tf->nlineinfo=n=LoadInt(L,Z,swap);
tf->lineinfo=luaM_newvector(L,n,int);
LoadVector(L,tf->lineinfo,n,sizeof(*tf->lineinfo),Z,swap);
}
@ -157,10 +158,10 @@ static Proto* LoadFunction (lua_State* L, ZIO* Z, int swap)
tf->numparams=LoadInt(L,Z,swap);
tf->is_vararg=LoadByte(L,Z);
tf->maxstacksize=LoadInt(L,Z,swap);
LoadCode(L,tf,Z,swap);
LoadLocals(L,tf,Z,swap);
LoadLines(L,tf,Z,swap);
LoadConstants(L,tf,Z,swap);
LoadCode(L,tf,Z,swap);
return tf;
}
@ -169,14 +170,14 @@ static void LoadSignature (lua_State* L, ZIO* Z)
const char* s=SIGNATURE;
while (*s!=0 && ezgetc(L,Z)==*s)
++s;
if (*s!=0) luaO_verror(L,"bad signature in `%.255s'",ZNAME(Z));
if (*s!=0) luaO_verror(L,"bad signature in `%.99s'",ZNAME(Z));
}
static void TestSize (lua_State* L, int s, const char* what, ZIO* Z)
{
int r=ezgetc(L,Z);
if (r!=s)
luaO_verror(L,"virtual machine mismatch in `%.255s':\n"
luaO_verror(L,"virtual machine mismatch in `%.99s':\n"
" %s is %d but read %d",ZNAME(Z),what,s,r);
}
@ -190,11 +191,11 @@ static int LoadHeader (lua_State* L, ZIO* Z)
LoadSignature(L,Z);
version=ezgetc(L,Z);
if (version>VERSION)
luaO_verror(L,"`%.255s' too new:\n"
luaO_verror(L,"`%.99s' too new:\n"
" read version %d.%d; expected at most %d.%d",
ZNAME(Z),V(version),V(VERSION));
if (version<VERSION0) /* check last major change */
luaO_verror(L,"`%.255s' too old:\n"
luaO_verror(L,"`%.99s' too old:\n"
" read version %d.%d; expected at least %d.%d",
ZNAME(Z),V(version),V(VERSION));
swap=(luaU_endianess()!=ezgetc(L,Z)); /* need to swap bytes? */
@ -207,9 +208,8 @@ static int LoadHeader (lua_State* L, ZIO* Z)
TESTSIZE(sizeof(Number));
f=LoadNumber(L,Z,swap);
if ((long)f!=(long)tf) /* disregard errors in last bit of fraction */
luaO_verror(L,"unknown number format in `%.255s':\n"
" read " NUMBER_FMT "; expected " NUMBER_FMT,
ZNAME(Z),f,tf);
luaO_verror(L,"unknown number format in `%.99s':\n"
" read " NUMBER_FMT "; expected " NUMBER_FMT, ZNAME(Z),f,tf);
return swap;
}
@ -230,7 +230,7 @@ Proto* luaU_undump (lua_State* L, ZIO* Z)
tf=LoadChunk(L,Z);
c=zgetc(Z);
if (c!=EOZ)
luaO_verror(L,"`%.255s' apparently contains more than one chunk",ZNAME(Z));
luaO_verror(L,"`%.99s' apparently contains more than one chunk",ZNAME(Z));
return tf;
}

View File

@ -1,5 +1,5 @@
/*
** $Id: lundump.h,v 1.19 2000/04/24 17:32:29 lhf Exp lhf $
** $Id: lundump.h,v 1.20 2000/09/18 20:03:46 lhf Exp lhf $
** load pre-compiled Lua chunks
** See Copyright Notice in lua.h
*/
@ -12,7 +12,6 @@
/* load one chunk */
Proto* luaU_undump (lua_State* L, ZIO* Z);
#define luaU_undump1 luaU_undump
/* find byte order */
int luaU_endianess (void);
@ -29,11 +28,6 @@ int luaU_endianess (void);
#define IN " in %p " SOURCE
#define INLOC tf,tf->source->str,tf->lineDefined
/* format for numbers in listings and error messages */
#ifndef NUMBER_FMT
#define NUMBER_FMT "%.16g" /* LUA_NUMBER */
#endif
/* a multiple of PI for testing native format */
/* multiplying by 1E8 gives non-trivial integer values */
#define TEST_NUMBER 3.14159265358979323846E8