From 64eecc0b8219cc3bcaa2b717826a4376c60d9305 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Fri, 20 Oct 2000 14:39:03 -0200 Subject: [PATCH] new macro LUA_API --- lapi.c | 99 ++++++++++++++++++++--------------------- lauxlib.c | 40 ++++++++--------- lauxlib.h | 40 +++++++++-------- lbaselib.c | 4 +- ldblib.c | 4 +- ldebug.c | 44 ++++++++++--------- ldo.c | 12 ++--- liolib.c | 4 +- llex.c | 4 +- lmathlib.c | 4 +- lstate.c | 6 +-- lstrlib.c | 4 +- ltests.c | 4 +- ltm.c | 10 ++--- lua.h | 127 ++++++++++++++++++++++++++++------------------------- luadebug.h | 16 ++++--- lualib.h | 12 ++--- lundump.c | 28 ++++++------ lundump.h | 8 +--- 19 files changed, 238 insertions(+), 232 deletions(-) diff --git a/lapi.c b/lapi.c index 5d56ac2e3..c2a227749 100644 --- a/lapi.c +++ b/lapi.c @@ -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); diff --git a/lauxlib.c b/lauxlib.c index 433c24df8..08ad3fba3 100644 --- a/lauxlib.c +++ b/lauxlib.c @@ -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; ibuffer; } -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; diff --git a/lauxlib.h b/lauxlib.h index d94b9bae1..2f159e23f 100644 --- a/lauxlib.h +++ b/lauxlib.h @@ -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); /* }====================================================== */ diff --git a/lbaselib.c b/lbaselib.c index 7a002902f..b32d07af1 100644 --- a/lbaselib.c +++ b/lbaselib.c @@ -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"); diff --git a/ldblib.c b/ldblib.c index 13f2b0788..f016fcde6 100644 --- a/ldblib.c +++ b/ldblib.c @@ -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); } diff --git a/ldebug.c b/ldebug.c index 04e81ac48..fa38f1323 100644 --- a/ldebug.c +++ b/ldebug.c @@ -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]; diff --git a/ldo.c b/ldo.c index ab61e40db..8b5b1d633 100644 --- a/ldo.c +++ b/ldo.c @@ -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); } diff --git a/liolib.c b/liolib.c index c1453a197..0e58a9421 100644 --- a/liolib.c +++ b/liolib.c @@ -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); } diff --git a/llex.c b/llex.c index dddf34c1f..9ddb117e0 100644 --- a/llex.c +++ b/llex.c @@ -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); } diff --git a/lmathlib.c b/lmathlib.c index ca14ee8c9..67ef899a9 100644 --- a/lmathlib.c +++ b/lmathlib.c @@ -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); diff --git a/lstate.c b/lstate.c index 9a3df644f..bd07488ae 100644 --- a/lstate.c +++ b/lstate.c @@ -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"); diff --git a/lstrlib.c b/lstrlib.c index c79a40110..a82f1b8f3 100644 --- a/lstrlib.c +++ b/lstrlib.c @@ -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); } diff --git a/ltests.c b/ltests.c index 76c445885..8470ab191 100644 --- a/ltests.c +++ b/ltests.c @@ -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)); diff --git a/ltm.c b/ltm.c index 1f0ac8300..ce4fd89af 100644 --- a/ltm.c +++ b/ltm.c @@ -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); diff --git a/lua.h b/lua.h index a4279ecb4..f2cc880ab 100644 --- a/lua.h +++ b/lua.h @@ -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 +#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); /* diff --git a/luadebug.h b/luadebug.h index c90e93b9f..cb46ec327 100644 --- a/luadebug.h +++ b/luadebug.h @@ -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 diff --git a/lualib.h b/lualib.h index 30dcda34c..68fa86b39 100644 --- a/lualib.h +++ b/lualib.h @@ -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); diff --git a/lundump.c b/lundump.c index bb34fdd11..022b25bad 100644 --- a/lundump.c +++ b/lundump.c @@ -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 (versionsource->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