"const" !!!

This commit is contained in:
Roberto Ierusalimschy 1999-08-16 17:52:00 -03:00
parent b44e35b773
commit c787dccd9b
40 changed files with 442 additions and 516 deletions

155
lapi.c
View File

@ -1,5 +1,5 @@
/*
** $Id: lapi.c,v 1.46 1999/06/17 17:04:03 roberto Exp roberto $
** $Id: lapi.c,v 1.47 1999/06/22 20:37:23 roberto Exp roberto $
** Lua API
** See Copyright Notice in lua.h
*/
@ -24,8 +24,8 @@
#include "lvm.h"
char lua_ident[] = "$Lua: " LUA_VERSION " " LUA_COPYRIGHT " $\n"
"$Authors: " LUA_AUTHORS " $";
const char lua_ident[] = "$Lua: " LUA_VERSION " " LUA_COPYRIGHT " $\n"
"$Authors: " LUA_AUTHORS " $";
@ -34,8 +34,7 @@ TObject *luaA_Address (lua_Object o) {
}
static lua_Type normalized_type (TObject *o)
{
static lua_Type normalized_type (const TObject *o) {
int t = ttype(o);
switch (t) {
case LUA_T_PMARK:
@ -50,21 +49,18 @@ static lua_Type normalized_type (TObject *o)
}
static void set_normalized (TObject *d, TObject *s)
{
static void set_normalized (TObject *d, const TObject *s) {
d->value = s->value;
d->ttype = normalized_type(s);
}
static TObject *luaA_protovalue (TObject *o)
{
static const TObject *luaA_protovalue (const TObject *o) {
return (normalized_type(o) == LUA_T_CLOSURE) ? protovalue(o) : o;
}
void luaA_packresults (void)
{
void luaA_packresults (void) {
luaV_pack(L->Cstack.lua2C, L->Cstack.num, L->stack.top);
incr_top;
}
@ -76,14 +72,13 @@ int luaA_passresults (void) {
}
static void checkCparams (int nParams)
{
static void checkCparams (int nParams) {
if (L->stack.top-L->stack.stack < L->Cstack.base+nParams)
lua_error("API error - wrong number of arguments in C2lua stack");
}
static lua_Object put_luaObject (TObject *o) {
static lua_Object put_luaObject (const TObject *o) {
luaD_openstack((L->stack.top-L->stack.stack)-L->Cstack.base);
L->stack.stack[L->Cstack.base++] = *o;
return L->Cstack.base; /* this is +1 real position (see Ref) */
@ -115,8 +110,7 @@ lua_Object lua_pop (void) {
** Get a parameter, returning the object handle or LUA_NOOBJECT on error.
** 'number' must be 1 to get the first parameter.
*/
lua_Object lua_lua2C (int number)
{
lua_Object lua_lua2C (int number) {
if (number <= 0 || number > L->Cstack.num) return LUA_NOOBJECT;
/* Ref(L->stack.stack+(L->Cstack.lua2C+number-1)) ==
L->stack.stack+(L->Cstack.lua2C+number-1)-L->stack.stack+1 == */
@ -124,8 +118,7 @@ lua_Object lua_lua2C (int number)
}
int lua_callfunction (lua_Object function)
{
int lua_callfunction (lua_Object function) {
if (function == LUA_NOOBJECT)
return 1;
else {
@ -136,14 +129,12 @@ int lua_callfunction (lua_Object function)
}
lua_Object lua_gettagmethod (int tag, char *event)
{
lua_Object lua_gettagmethod (int tag, const char *event) {
return put_luaObject(luaT_gettagmethod(tag, event));
}
lua_Object lua_settagmethod (int tag, char *event)
{
lua_Object lua_settagmethod (int tag, const char *event) {
checkCparams(1);
luaT_settagmethod(tag, event, L->stack.top-1);
return put_luaObjectonTop();
@ -159,8 +150,7 @@ lua_Object lua_seterrormethod (void) {
}
lua_Object lua_gettable (void)
{
lua_Object lua_gettable (void) {
checkCparams(2);
luaV_gettable();
return put_luaObjectonTop();
@ -190,8 +180,7 @@ void lua_rawsettable (void) {
}
lua_Object lua_createtable (void)
{
lua_Object lua_createtable (void) {
TObject o;
luaC_checkGC();
avalue(&o) = luaH_new(0);
@ -200,31 +189,27 @@ lua_Object lua_createtable (void)
}
lua_Object lua_getglobal (char *name)
{
lua_Object lua_getglobal (const char *name) {
luaD_checkstack(2); /* may need that to call T.M. */
luaV_getglobal(luaS_new(name));
return put_luaObjectonTop();
}
lua_Object lua_rawgetglobal (char *name)
{
lua_Object lua_rawgetglobal (const char *name) {
TaggedString *ts = luaS_new(name);
return put_luaObject(&ts->u.s.globalval);
}
void lua_setglobal (char *name)
{
void lua_setglobal (const char *name) {
checkCparams(1);
luaD_checkstack(2); /* may need that to call T.M. */
luaV_setglobal(luaS_new(name));
}
void lua_rawsetglobal (char *name)
{
void lua_rawsetglobal (const char *name) {
TaggedString *ts = luaS_new(name);
checkCparams(1);
luaS_rawsetglobal(ts, --L->stack.top);
@ -232,113 +217,96 @@ void lua_rawsetglobal (char *name)
int lua_isnil (lua_Object o)
{
int lua_isnil (lua_Object o) {
return (o!= LUA_NOOBJECT) && (ttype(Address(o)) == LUA_T_NIL);
}
int lua_istable (lua_Object o)
{
int lua_istable (lua_Object o) {
return (o!= LUA_NOOBJECT) && (ttype(Address(o)) == LUA_T_ARRAY);
}
int lua_isuserdata (lua_Object o)
{
int lua_isuserdata (lua_Object o) {
return (o!= LUA_NOOBJECT) && (ttype(Address(o)) == LUA_T_USERDATA);
}
int lua_iscfunction (lua_Object o)
{
int lua_iscfunction (lua_Object o) {
return (lua_tag(o) == LUA_T_CPROTO);
}
int lua_isnumber (lua_Object o)
{
int lua_isnumber (lua_Object o) {
return (o!= LUA_NOOBJECT) && (tonumber(Address(o)) == 0);
}
int lua_isstring (lua_Object o)
{
int lua_isstring (lua_Object o) {
int t = lua_tag(o);
return (t == LUA_T_STRING) || (t == LUA_T_NUMBER);
}
int lua_isfunction (lua_Object o)
{
int lua_isfunction (lua_Object o) {
int t = lua_tag(o);
return (t == LUA_T_PROTO) || (t == LUA_T_CPROTO);
}
double lua_getnumber (lua_Object object)
{
double lua_getnumber (lua_Object object) {
if (object == LUA_NOOBJECT) return 0.0;
if (tonumber(Address(object))) return 0.0;
else return (nvalue(Address(object)));
}
char *lua_getstring (lua_Object object)
{
const char *lua_getstring (lua_Object object) {
luaC_checkGC(); /* "tostring" may create a new string */
if (object == LUA_NOOBJECT || tostring(Address(object)))
return NULL;
else return (svalue(Address(object)));
}
long lua_strlen (lua_Object object)
{
long lua_strlen (lua_Object object) {
luaC_checkGC(); /* "tostring" may create a new string */
if (object == LUA_NOOBJECT || tostring(Address(object)))
return 0L;
else return (tsvalue(Address(object))->u.s.len);
}
void *lua_getuserdata (lua_Object object)
{
void *lua_getuserdata (lua_Object object) {
if (object == LUA_NOOBJECT || ttype(Address(object)) != LUA_T_USERDATA)
return NULL;
else return tsvalue(Address(object))->u.d.v;
}
lua_CFunction lua_getcfunction (lua_Object object)
{
lua_CFunction lua_getcfunction (lua_Object object) {
if (!lua_iscfunction(object))
return NULL;
else return fvalue(luaA_protovalue(Address(object)));
}
void lua_pushnil (void)
{
void lua_pushnil (void) {
ttype(L->stack.top) = LUA_T_NIL;
incr_top;
}
void lua_pushnumber (double n)
{
void lua_pushnumber (double n) {
ttype(L->stack.top) = LUA_T_NUMBER;
nvalue(L->stack.top) = n;
incr_top;
}
void lua_pushlstring (char *s, long len)
{
void lua_pushlstring (const char *s, long len) {
tsvalue(L->stack.top) = luaS_newlstr(s, len);
ttype(L->stack.top) = LUA_T_STRING;
incr_top;
luaC_checkGC();
}
void lua_pushstring (char *s)
{
void lua_pushstring (const char *s) {
if (s == NULL)
lua_pushnil();
else
lua_pushlstring(s, strlen(s));
}
void lua_pushcclosure (lua_CFunction fn, int n)
{
void lua_pushcclosure (lua_CFunction fn, int n) {
if (fn == NULL)
lua_error("API error - attempt to push a NULL Cfunction");
checkCparams(n);
@ -349,8 +317,7 @@ void lua_pushcclosure (lua_CFunction fn, int n)
luaC_checkGC();
}
void lua_pushusertag (void *u, int tag)
{
void lua_pushusertag (void *u, int tag) {
if (tag < 0 && tag != LUA_ANYTAG)
luaT_realtag(tag); /* error if tag is not valid */
tsvalue(L->stack.top) = luaS_createudata(u, tag);
@ -359,8 +326,7 @@ void lua_pushusertag (void *u, int tag)
luaC_checkGC();
}
void luaA_pushobject (TObject *o)
{
void luaA_pushobject (const TObject *o) {
*L->stack.top = *o;
incr_top;
}
@ -373,12 +339,11 @@ void lua_pushobject (lua_Object o) {
}
int lua_tag (lua_Object lo)
{
int lua_tag (lua_Object lo) {
if (lo == LUA_NOOBJECT)
return LUA_T_NIL;
else {
TObject *o = Address(lo);
const TObject *o = Address(lo);
int t;
switch (t = ttype(o)) {
case LUA_T_USERDATA:
@ -402,8 +367,7 @@ int lua_tag (lua_Object lo)
}
void lua_settag (int tag)
{
void lua_settag (int tag) {
checkCparams(1);
luaT_realtag(tag);
switch (ttype(L->stack.top-1)) {
@ -440,7 +404,7 @@ TaggedString *luaA_nextvar (TaggedString *g) {
}
char *lua_nextvar (char *varname) {
const char *lua_nextvar (const char *varname) {
TaggedString *g = (varname == NULL) ? NULL : luaS_new(varname);
g = luaA_nextvar(g);
if (g) {
@ -454,7 +418,7 @@ char *lua_nextvar (char *varname) {
}
int luaA_next (Hash *t, int i) {
int luaA_next (const Hash *t, int i) {
int tsize = nhash(t);
for (; i<tsize; i++) {
Node *n = node(t, i);
@ -469,7 +433,7 @@ int luaA_next (Hash *t, int i) {
int lua_next (lua_Object o, int i) {
TObject *t = Address(o);
const TObject *t = Address(o);
if (ttype(t) != LUA_T_ARRAY)
lua_error("API error - object is not a table in `lua_next'");
i = luaA_next(avalue(t), i);
@ -519,8 +483,7 @@ int lua_setdebug (int debug) {
*/
lua_Function lua_stackedfunction (int level)
{
lua_Function lua_stackedfunction (int level) {
StkId i;
for (i = (L->stack.top-1)-L->stack.stack; i>=0; i--) {
int t = L->stack.stack[i].ttype;
@ -533,20 +496,20 @@ lua_Function lua_stackedfunction (int level)
int lua_nups (lua_Function func) {
TObject *o = luaA_Address(func);
const TObject *o = luaA_Address(func);
return (!o || normalized_type(o) != LUA_T_CLOSURE) ? 0 : o->value.cl->nelems;
}
int lua_currentline (lua_Function func)
{
TObject *f = Address(func);
int lua_currentline (lua_Function func) {
const TObject *f = Address(func);
return (f+1 < L->stack.top && (f+1)->ttype == LUA_T_LINE) ?
(f+1)->value.i : -1;
}
lua_Object lua_getlocal (lua_Function func, int local_number, char **name) {
lua_Object lua_getlocal (lua_Function func, int local_number,
const char **name) {
/* check whether func is a Lua function */
if (lua_tag(func) != LUA_T_PROTO)
return LUA_NOOBJECT;
@ -565,15 +528,14 @@ lua_Object lua_getlocal (lua_Function func, int local_number, char **name) {
}
int lua_setlocal (lua_Function func, int local_number)
{
int lua_setlocal (lua_Function func, int local_number) {
/* check whether func is a Lua function */
if (lua_tag(func) != LUA_T_PROTO)
return 0;
else {
TObject *f = Address(func);
TProtoFunc *fp = luaA_protovalue(f)->value.tf;
char *name = luaF_getlocalname(fp, local_number, lua_currentline(func));
const char *name = luaF_getlocalname(fp, local_number, lua_currentline(func));
checkCparams(1);
--L->stack.top;
if (name) {
@ -588,11 +550,11 @@ int lua_setlocal (lua_Function func, int local_number)
}
void lua_funcinfo (lua_Object func, char **source, int *linedefined) {
void lua_funcinfo (lua_Object func, const char **source, int *linedefined) {
if (!lua_isfunction(func))
lua_error("API error - `funcinfo' called with a non-function value");
else {
TObject *f = luaA_protovalue(Address(func));
const TObject *f = luaA_protovalue(Address(func));
if (normalized_type(f) == LUA_T_PROTO) {
*source = tfvalue(f)->source->str;
*linedefined = tfvalue(f)->lineDefined;
@ -605,14 +567,13 @@ void lua_funcinfo (lua_Object func, char **source, int *linedefined) {
}
static int checkfunc (TObject *o)
{
static int checkfunc (TObject *o) {
return luaO_equalObj(o, L->stack.top);
}
char *lua_getobjname (lua_Object o, char **name)
{ /* try to find a name for given function */
const char *lua_getobjname (lua_Object o, const char **name) {
/* try to find a name for given function */
set_normalized(L->stack.top, Address(o)); /* to be accessed by "checkfunc" */
if ((*name = luaS_travsymbol(checkfunc)) != NULL)
return "global";
@ -662,7 +623,7 @@ int lua_ref (int lock) {
lua_Object lua_getref (int ref) {
TObject *o = luaC_getref(ref);
const TObject *o = luaC_getref(ref);
return (o ? put_luaObject(o) : LUA_NOOBJECT);
}

6
lapi.h
View File

@ -1,5 +1,5 @@
/*
** $Id: lapi.h,v 1.3 1999/02/22 19:13:12 roberto Exp roberto $
** $Id: lapi.h,v 1.4 1999/02/23 14:57:28 roberto Exp roberto $
** Auxiliary functions from Lua API
** See Copyright Notice in lua.h
*/
@ -13,10 +13,10 @@
TObject *luaA_Address (lua_Object o);
void luaA_pushobject (TObject *o);
void luaA_pushobject (const TObject *o);
void luaA_packresults (void);
int luaA_passresults (void);
TaggedString *luaA_nextvar (TaggedString *g);
int luaA_next (Hash *t, int i);
int luaA_next (const Hash *t, int i);
#endif

View File

@ -1,5 +1,5 @@
/*
** $Id: lauxlib.c,v 1.16 1999/03/10 14:19:41 roberto Exp roberto $
** $Id: lauxlib.c,v 1.17 1999/03/11 18:59:19 roberto Exp roberto $
** Auxiliary functions for building Lua libraries
** See Copyright Notice in lua.h
*/
@ -20,7 +20,7 @@
int luaL_findstring (char *name, char *list[]) {
int luaL_findstring (const char *name, const char *const list[]) {
int i;
for (i=0; list[i]; i++)
if (strcmp(list[i], name) == 0)
@ -28,9 +28,9 @@ int luaL_findstring (char *name, char *list[]) {
return -1; /* name not found */
}
void luaL_argerror (int numarg, char *extramsg) {
void luaL_argerror (int numarg, const char *extramsg) {
lua_Function f = lua_stackedfunction(0);
char *funcname;
const char *funcname;
lua_getobjname(f, &funcname);
numarg -= lua_nups(f);
if (funcname == NULL)
@ -42,58 +42,50 @@ void luaL_argerror (int numarg, char *extramsg) {
numarg, funcname, extramsg);
}
char *luaL_check_lstr (int numArg, long *len)
{
const char *luaL_check_lstr (int numArg, long *len) {
lua_Object o = lua_getparam(numArg);
luaL_arg_check(lua_isstring(o), numArg, "string expected");
if (len) *len = lua_strlen(o);
return lua_getstring(o);
}
char *luaL_opt_lstr (int numArg, char *def, long *len)
{
const char *luaL_opt_lstr (int numArg, const char *def, long *len) {
return (lua_getparam(numArg) == LUA_NOOBJECT) ? def :
luaL_check_lstr(numArg, len);
}
double luaL_check_number (int numArg)
{
double luaL_check_number (int numArg) {
lua_Object o = lua_getparam(numArg);
luaL_arg_check(lua_isnumber(o), numArg, "number expected");
return lua_getnumber(o);
}
double luaL_opt_number (int numArg, double def)
{
double luaL_opt_number (int numArg, double def) {
return (lua_getparam(numArg) == LUA_NOOBJECT) ? def :
luaL_check_number(numArg);
}
lua_Object luaL_tablearg (int arg)
{
lua_Object luaL_tablearg (int arg) {
lua_Object o = lua_getparam(arg);
luaL_arg_check(lua_istable(o), arg, "table expected");
return o;
}
lua_Object luaL_functionarg (int arg)
{
lua_Object luaL_functionarg (int arg) {
lua_Object o = lua_getparam(arg);
luaL_arg_check(lua_isfunction(o), arg, "function expected");
return o;
}
lua_Object luaL_nonnullarg (int numArg)
{
lua_Object luaL_nonnullarg (int numArg) {
lua_Object o = lua_getparam(numArg);
luaL_arg_check(o != LUA_NOOBJECT, numArg, "value expected");
return o;
}
void luaL_openlib (struct luaL_reg *l, int n)
{
void luaL_openlib (const struct luaL_reg *l, int n) {
int i;
lua_open(); /* make sure lua is already open */
for (i=0; i<n; i++)
@ -101,8 +93,7 @@ void luaL_openlib (struct luaL_reg *l, int n)
}
void luaL_verror (char *fmt, ...)
{
void luaL_verror (const char *fmt, ...) {
char buff[500];
va_list argp;
va_start(argp, fmt);
@ -112,14 +103,14 @@ void luaL_verror (char *fmt, ...)
}
void luaL_chunkid (char *out, char *source, int len) {
void luaL_chunkid (char *out, const char *source, int len) {
len -= 13; /* 13 = strlen("string ''...\0") */
if (*source == '@')
sprintf(out, "file `%.*s'", len, source+1);
else if (*source == '(')
strcpy(out, "(C code)");
else {
char *b = strchr(source , '\n'); /* stop string at first new line */
const char *b = strchr(source , '\n'); /* stop string at first new line */
int lim = (b && (b-source)<len) ? b-source : len;
sprintf(out, "string `%.*s'", lim, source);
strcpy(out+lim+(13-5), "...'"); /* 5 = strlen("...'\0") */
@ -127,7 +118,7 @@ void luaL_chunkid (char *out, char *source, int len) {
}
void luaL_filesource (char *out, char *filename, int len) {
void luaL_filesource (char *out, const char *filename, int len) {
if (filename == NULL) filename = "(stdin)";
sprintf(out, "@%.*s", len-2, filename); /* -2 for '@' and '\0' */
}

View File

@ -1,5 +1,5 @@
/*
** $Id: lauxlib.h,v 1.11 1999/03/04 21:17:26 roberto Exp roberto $
** $Id: lauxlib.h,v 1.12 1999/03/10 14:19:41 roberto Exp roberto $
** Auxiliary functions for building Lua libraries
** See Copyright Notice in lua.h
*/
@ -13,7 +13,7 @@
struct luaL_reg {
char *name;
const char *name;
lua_CFunction func;
};
@ -21,12 +21,12 @@ struct luaL_reg {
#define luaL_arg_check(cond,numarg,extramsg) if (!(cond)) \
luaL_argerror(numarg,extramsg)
void luaL_openlib (struct luaL_reg *l, int n);
void luaL_argerror (int numarg, char *extramsg);
void luaL_openlib (const struct luaL_reg *l, int n);
void luaL_argerror (int numarg, const char *extramsg);
#define luaL_check_string(n) (luaL_check_lstr((n), NULL))
char *luaL_check_lstr (int numArg, long *len);
const char *luaL_check_lstr (int numArg, long *len);
#define luaL_opt_string(n, d) (luaL_opt_lstr((n), (d), NULL))
char *luaL_opt_lstr (int numArg, char *def, long *len);
const char *luaL_opt_lstr (int numArg, const char *def, long *len);
double luaL_check_number (int numArg);
#define luaL_check_int(n) ((int)luaL_check_number(n))
#define luaL_check_long(n) ((long)luaL_check_number(n))
@ -36,7 +36,7 @@ double luaL_opt_number (int numArg, double def);
lua_Object luaL_functionarg (int arg);
lua_Object luaL_tablearg (int arg);
lua_Object luaL_nonnullarg (int numArg);
void luaL_verror (char *fmt, ...);
void luaL_verror (const char *fmt, ...);
char *luaL_openspace (int size);
void luaL_resetbuffer (void);
void luaL_addchar (int c);
@ -45,9 +45,9 @@ void luaL_addsize (int n);
int luaL_newbuffer (int size);
void luaL_oldbuffer (int old);
char *luaL_buffer (void);
int luaL_findstring (char *name, char *list[]);
void luaL_chunkid (char *out, char *source, int len);
void luaL_filesource (char *out, char *filename, int len);
int luaL_findstring (const char *name, const char *const list[]);
void luaL_chunkid (char *out, const char *source, int len);
void luaL_filesource (char *out, const char *filename, int len);
#endif

View File

@ -1,5 +1,5 @@
/*
** $Id: lbuiltin.c,v 1.59 1999/06/17 17:04:03 roberto Exp roberto $
** $Id: lbuiltin.c,v 1.60 1999/07/22 19:35:41 roberto Exp roberto $
** Built-in functions
** See Copyright Notice in lua.h
*/
@ -42,7 +42,7 @@ static void pushtagstring (TaggedString *s) {
}
static real getsize (Hash *h) {
static real getsize (const Hash *h) {
real max = 0;
int i;
for (i = 0; i<nhash(h); i++) {
@ -56,7 +56,7 @@ static real getsize (Hash *h) {
}
static real getnarg (Hash *a) {
static real getnarg (const Hash *a) {
TObject index;
TObject *value;
/* value = table.n */
@ -146,10 +146,10 @@ static void luaB_tonumber (void) {
else lua_pushnil(); /* not a number */
}
else {
char *s = luaL_check_string(1);
char *s;
long n;
luaL_arg_check(0 <= base && base <= 36, 2, "base out of range");
n = strtol(s, &s, base);
n = strtol(luaL_check_string(1), &s, base);
while (isspace((unsigned char)*s)) s++; /* skip trailing spaces */
if (*s) lua_pushnil(); /* invalid format: return nil */
else lua_pushnumber(n);
@ -162,7 +162,7 @@ static void luaB_error (void) {
}
static void luaB_setglobal (void) {
char *n = luaL_check_string(1);
const char *n = luaL_check_string(1);
lua_Object value = luaL_nonnullarg(2);
lua_pushobject(value);
lua_setglobal(n);
@ -170,7 +170,7 @@ static void luaB_setglobal (void) {
}
static void luaB_rawsetglobal (void) {
char *n = luaL_check_string(1);
const char *n = luaL_check_string(1);
lua_Object value = luaL_nonnullarg(2);
lua_pushobject(value);
lua_rawsetglobal(n);
@ -250,7 +250,7 @@ static void luaB_collectgarbage (void) {
static void luaB_dostring (void) {
long l;
char *s = luaL_check_lstr(1, &l);
const char *s = luaL_check_lstr(1, &l);
if (*s == ID_CHUNK)
lua_error("`dostring' cannot run pre-compiled code");
if (lua_dobuffer(s, l, luaL_opt_string(2, s)) == 0)
@ -260,7 +260,7 @@ static void luaB_dostring (void) {
static void luaB_dofile (void) {
char *fname = luaL_opt_string(1, NULL);
const char *fname = luaL_opt_string(1, NULL);
if (lua_dofile(fname) == 0)
if (luaA_passresults() == 0)
lua_pushuserdata(NULL); /* at least one result to signal no errors */
@ -269,8 +269,8 @@ static void luaB_dofile (void) {
static void luaB_call (void) {
lua_Object f = luaL_nonnullarg(1);
Hash *arg = gethash(2);
char *options = luaL_opt_string(3, "");
const Hash *arg = gethash(2);
const char *options = luaL_opt_string(3, "");
lua_Object err = lua_getparam(4);
int narg = (int)getnarg(arg);
int i, status;
@ -305,7 +305,7 @@ static void luaB_call (void) {
static void luaB_nextvar (void) {
TObject *o = luaA_Address(luaL_nonnullarg(1));
const TObject *o = luaA_Address(luaL_nonnullarg(1));
TaggedString *g;
if (ttype(o) == LUA_T_NIL)
g = NULL;
@ -319,8 +319,8 @@ static void luaB_nextvar (void) {
static void luaB_next (void) {
Hash *a = gethash(1);
TObject *k = luaA_Address(luaL_nonnullarg(2));
const Hash *a = gethash(1);
const TObject *k = luaA_Address(luaL_nonnullarg(2));
int i = (ttype(k) == LUA_T_NIL) ? 0 : luaH_pos(a, k)+1;
if (luaA_next(a, i) == 0)
lua_pushnil();
@ -329,7 +329,7 @@ static void luaB_next (void) {
static void luaB_tostring (void) {
lua_Object obj = lua_getparam(1);
TObject *o = luaA_Address(obj);
const TObject *o = luaA_Address(obj);
char buff[64];
switch (ttype(o)) {
case LUA_T_NUMBER:
@ -391,7 +391,7 @@ static void luaB_assert (void) {
static void luaB_foreachi (void) {
Hash *t = gethash(1);
const Hash *t = gethash(1);
int i;
int n = (int)getnarg(t);
TObject f;
@ -413,13 +413,13 @@ static void luaB_foreachi (void) {
static void luaB_foreach (void) {
Hash *a = gethash(1);
const Hash *a = gethash(1);
int i;
TObject f; /* see comment in 'foreachi' */
f = *luaA_Address(luaL_functionarg(2));
luaD_checkstack(3); /* for f, ref, and val */
for (i=0; i<a->nhash; i++) {
Node *nd = &(a->node[i]);
const Node *nd = &(a->node[i]);
if (ttype(val(nd)) != LUA_T_NIL) {
*(L->stack.top++) = f;
*(L->stack.top++) = *ref(nd);
@ -504,7 +504,7 @@ static void swap (Hash *a, int i, int j) {
luaH_setint(a, j, &temp);
}
static int sort_comp (lua_Object f, TObject *a, TObject *b) {
static int sort_comp (lua_Object f, const TObject *a, const TObject *b) {
/* notice: the caller (auxsort) must check stack space */
if (f != LUA_NOOBJECT) {
*(L->stack.top) = *luaA_Address(f);
@ -604,7 +604,7 @@ static void query_strings (void) {
static void countlist (void) {
char *s = luaL_check_string(1);
const char *s = luaL_check_string(1);
GCnode *l = (s[0]=='t') ? L->roottable.next : (s[0]=='c') ? L->rootcl.next :
(s[0]=='p') ? L->rootproto.next : L->rootglobal.next;
int i=0;
@ -623,7 +623,7 @@ static void testC (void) {
static int locks[10];
lua_Object reg[10];
char nome[2];
char *s = luaL_check_string(1);
const char *s = luaL_check_string(1);
nome[1] = 0;
for (;;) {
switch (*s++) {
@ -674,7 +674,7 @@ static void testC (void) {
static struct luaL_reg builtin_funcs[] = {
static const struct luaL_reg builtin_funcs[] = {
#ifdef LUA_COMPAT2_5
{"setfallback", luaT_setfallback},
#endif

View File

@ -1,5 +1,5 @@
/*
** $Id: ldblib.c,v 1.4 1999/02/04 17:47:59 roberto Exp roberto $
** $Id: ldblib.c,v 1.5 1999/03/04 21:17:26 roberto Exp roberto $
** Interface from Lua to its debug API
** See Copyright Notice in lua.h
*/
@ -15,7 +15,7 @@
static void settabss (lua_Object t, char *i, char *v) {
static void settabss (lua_Object t, const char *i, const char *v) {
lua_pushobject(t);
lua_pushstring(i);
lua_pushstring(v);
@ -23,7 +23,7 @@ static void settabss (lua_Object t, char *i, char *v) {
}
static void settabsi (lua_Object t, char *i, int v) {
static void settabsi (lua_Object t, const char *i, int v) {
lua_pushobject(t);
lua_pushstring(i);
lua_pushnumber(v);
@ -33,7 +33,7 @@ static void settabsi (lua_Object t, char *i, int v) {
static lua_Object getfuncinfo (lua_Object func) {
lua_Object result = lua_createtable();
char *str;
const char *str;
int line;
lua_funcinfo(func, &str, &line);
if (line == -1) /* C function? */
@ -48,7 +48,7 @@ static lua_Object getfuncinfo (lua_Object func) {
settabss(result, "source", str);
}
if (line != 0) { /* is it not a "main"? */
char *kind = lua_getobjname(func, &str);
const char *kind = lua_getobjname(func, &str);
if (*kind) {
settabss(result, "name", str);
settabss(result, "where", kind);
@ -86,10 +86,10 @@ static int findlocal (lua_Object func, int arg) {
if (lua_isnumber(v))
return (int)lua_getnumber(v);
else {
char *name = luaL_check_string(arg);
const char *name = luaL_check_string(arg);
int i = 0;
int result = -1;
char *vname;
const char *vname;
while (lua_getlocal(func, ++i, &vname) != LUA_NOOBJECT) {
if (strcmp(name, vname) == 0)
result = i; /* keep looping to get the last var with this name */
@ -104,7 +104,7 @@ static int findlocal (lua_Object func, int arg) {
static void getlocal (void) {
lua_Object func = lua_stackedfunction(luaL_check_int(1));
lua_Object val;
char *name;
const char *name;
if (func == LUA_NOOBJECT) /* level out of range? */
return; /* return nil */
else if (lua_getparam(2) != LUA_NOOBJECT) { /* 2nd argument? */
@ -161,7 +161,7 @@ static void linef (int line) {
}
static void callf (lua_Function func, char *file, int line) {
static void callf (lua_Function func, const char *file, int line) {
if (func != LUA_NOOBJECT) {
lua_pushobject(func);
lua_pushstring(file);
@ -201,7 +201,7 @@ static void setlinehook (void) {
}
static struct luaL_reg dblib[] = {
static const struct luaL_reg dblib[] = {
{"funcinfo", funcinfo},
{"getlocal", getlocal},
{"getstack", getstack},

26
ldo.c
View File

@ -1,5 +1,5 @@
/*
** $Id: ldo.c,v 1.44 1999/06/17 17:04:03 roberto Exp roberto $
** $Id: ldo.c,v 1.45 1999/06/22 20:37:23 roberto Exp roberto $
** Stack and Call structure of Lua
** See Copyright Notice in lua.h
*/
@ -159,7 +159,7 @@ static StkId callCclosure (struct Closure *cl, lua_CFunction f, StkId base) {
}
void luaD_callTM (TObject *f, int nParams, int nResults) {
void luaD_callTM (const TObject *f, int nParams, int nResults) {
luaD_openstack(nParams);
*(L->stack.top-nParams-1) = *f;
luaD_calln(nParams, nResults);
@ -199,7 +199,7 @@ void luaD_calln (int nArgs, int nResults) {
}
default: { /* func is not a function */
/* Check the tag method for invalid functions */
TObject *im = luaT_getimbyObj(func, IM_FUNCTION);
const TObject *im = luaT_getimbyObj(func, IM_FUNCTION);
if (ttype(im) == LUA_T_NIL)
lua_error("call expression not a function");
luaD_callTM(im, (S->top-S->stack)-(base-1), nResults);
@ -222,8 +222,7 @@ void luaD_calln (int nArgs, int nResults) {
/*
** Traverse all objects on L->stack.stack
*/
void luaD_travstack (int (*fn)(TObject *))
{
void luaD_travstack (int (*fn)(TObject *)) {
StkId i;
for (i = (L->stack.top-1)-L->stack.stack; i>=0; i--)
fn(L->stack.stack+i);
@ -231,8 +230,8 @@ void luaD_travstack (int (*fn)(TObject *))
static void message (char *s) {
TObject *em = &(luaS_new("_ERRORMESSAGE")->u.s.globalval);
static void message (const char *s) {
const TObject *em = &(luaS_new("_ERRORMESSAGE")->u.s.globalval);
if (ttype(em) == LUA_T_PROTO || ttype(em) == LUA_T_CPROTO ||
ttype(em) == LUA_T_CLOSURE) {
*L->stack.top = *em;
@ -245,7 +244,7 @@ static void message (char *s) {
/*
** Reports an error, and jumps up to the available recover label
*/
void lua_error (char *s) {
void lua_error (const char *s) {
if (s) message(s);
if (L->errorJmp)
longjmp(L->errorJmp->b, 1);
@ -335,9 +334,8 @@ static int do_main (ZIO *z, int bin) {
}
void luaD_gcIM (TObject *o)
{
TObject *im = luaT_getimbyObj(o, IM_GC);
void luaD_gcIM (const TObject *o) {
const TObject *im = luaT_getimbyObj(o, IM_GC);
if (ttype(im) != LUA_T_NIL) {
*L->stack.top = *o;
incr_top;
@ -348,7 +346,7 @@ void luaD_gcIM (TObject *o)
#define MAXFILENAME 260 /* maximum part of a file name kept */
int lua_dofile (char *filename) {
int lua_dofile (const char *filename) {
ZIO z;
int status;
int c;
@ -371,12 +369,12 @@ int lua_dofile (char *filename) {
}
int lua_dostring (char *str) {
int lua_dostring (const char *str) {
return lua_dobuffer(str, strlen(str), str);
}
int lua_dobuffer (char *buff, int size, char *name) {
int lua_dobuffer (const char *buff, int size, const char *name) {
ZIO z;
if (!name) name = "?";
luaZ_mopen(&z, buff, size, name);

6
ldo.h
View File

@ -1,5 +1,5 @@
/*
** $Id: ldo.h,v 1.5 1998/07/12 16:14:34 roberto Exp roberto $
** $Id: ldo.h,v 1.6 1999/06/22 20:37:23 roberto Exp roberto $
** Stack and Call structure of Lua
** See Copyright Notice in lua.h
*/
@ -36,9 +36,9 @@ void luaD_openstack (int nelems);
void luaD_lineHook (int line);
void luaD_callHook (StkId base, TProtoFunc *tf, int isreturn);
void luaD_calln (int nArgs, int nResults);
void luaD_callTM (TObject *f, int nParams, int nResults);
void luaD_callTM (const TObject *f, int nParams, int nResults);
int luaD_protectedrun (void);
void luaD_gcIM (TObject *o);
void luaD_gcIM (const TObject *o);
void luaD_travstack (int (*fn)(TObject *));
void luaD_checkstack (int n);

22
lfunc.c
View File

@ -1,5 +1,5 @@
/*
** $Id: lfunc.c,v 1.9 1998/06/19 16:14:09 roberto Exp roberto $
** $Id: lfunc.c,v 1.10 1999/03/04 21:17:26 roberto Exp roberto $
** Auxiliary functions to manipulate prototypes and closures
** See Copyright Notice in lua.h
*/
@ -16,8 +16,7 @@
Closure *luaF_newclosure (int nelems)
{
Closure *luaF_newclosure (int nelems) {
Closure *c = (Closure *)luaM_malloc(sizeof(Closure)+nelems*sizeof(TObject));
luaO_insertlist(&(L->rootcl), (GCnode *)c);
L->nblocks += gcsizeclosure(c);
@ -26,8 +25,7 @@ Closure *luaF_newclosure (int nelems)
}
TProtoFunc *luaF_newproto (void)
{
TProtoFunc *luaF_newproto (void) {
TProtoFunc *f = luaM_new(TProtoFunc);
f->code = NULL;
f->lineDefined = 0;
@ -42,8 +40,7 @@ TProtoFunc *luaF_newproto (void)
static void freefunc (TProtoFunc *f)
{
static void freefunc (TProtoFunc *f) {
luaM_free(f->code);
luaM_free(f->locvars);
luaM_free(f->consts);
@ -51,8 +48,7 @@ static void freefunc (TProtoFunc *f)
}
void luaF_freeproto (TProtoFunc *l)
{
void luaF_freeproto (TProtoFunc *l) {
while (l) {
TProtoFunc *next = (TProtoFunc *)l->head.next;
L->nblocks -= gcsizeproto(l);
@ -62,8 +58,7 @@ void luaF_freeproto (TProtoFunc *l)
}
void luaF_freeclosure (Closure *l)
{
void luaF_freeclosure (Closure *l) {
while (l) {
Closure *next = (Closure *)l->head.next;
L->nblocks -= gcsizeclosure(l);
@ -77,10 +72,9 @@ void luaF_freeclosure (Closure *l)
** Look for n-th local variable at line "line" in function "func".
** Returns NULL if not found.
*/
char *luaF_getlocalname (TProtoFunc *func, int local_number, int line)
{
const char *luaF_getlocalname (TProtoFunc *func, int local_number, int line) {
int count = 0;
char *varname = NULL;
const char *varname = NULL;
LocVar *lv = func->locvars;
if (lv == NULL)
return NULL;

View File

@ -1,5 +1,5 @@
/*
** $Id: lfunc.h,v 1.4 1997/11/19 17:29:23 roberto Exp roberto $
** $Id: lfunc.h,v 1.5 1997/12/15 16:17:20 roberto Exp roberto $
** Lua Function structures
** See Copyright Notice in lua.h
*/
@ -17,7 +17,7 @@ Closure *luaF_newclosure (int nelems);
void luaF_freeproto (TProtoFunc *l);
void luaF_freeclosure (Closure *l);
char *luaF_getlocalname (TProtoFunc *func, int local_number, int line);
const char *luaF_getlocalname (TProtoFunc *func, int local_number, int line);
#endif

52
lgc.c
View File

@ -1,5 +1,5 @@
/*
** $Id: lgc.c,v 1.23 1999/03/04 21:17:26 roberto Exp roberto $
** $Id: lgc.c,v 1.24 1999/08/11 17:00:59 roberto Exp roberto $
** Garbage Collector
** See Copyright Notice in lua.h
*/
@ -29,7 +29,7 @@ static int markobject (TObject *o);
*/
int luaC_ref (TObject *o, int lock) {
int luaC_ref (const TObject *o, int lock) {
int ref;
if (ttype(o) == LUA_T_NIL)
ref = LUA_REFNIL;
@ -48,15 +48,13 @@ int luaC_ref (TObject *o, int lock) {
}
void lua_unref (int ref)
{
void lua_unref (int ref) {
if (ref >= 0 && ref < L->refSize)
L->refArray[ref].status = FREE;
}
TObject* luaC_getref (int ref)
{
const TObject *luaC_getref (int ref) {
if (ref == LUA_REFNIL)
return &luaO_nilobject;
if (ref >= 0 && ref < L->refSize &&
@ -67,8 +65,7 @@ TObject* luaC_getref (int ref)
}
static void travlock (void)
{
static void travlock (void) {
int i;
for (i=0; i<L->refSize; i++)
if (L->refArray[i].status == LOCK)
@ -76,8 +73,7 @@ static void travlock (void)
}
static int ismarked (TObject *o)
{
static int ismarked (const TObject *o) {
/* valid only for locked objects */
switch (o->ttype) {
case LUA_T_STRING: case LUA_T_USERDATA:
@ -99,8 +95,7 @@ static int ismarked (TObject *o)
}
static void invalidaterefs (void)
{
static void invalidaterefs (void) {
int i;
for (i=0; i<L->refSize; i++)
if (L->refArray[i].status == HOLD && !ismarked(&L->refArray[i].o))
@ -109,8 +104,7 @@ static void invalidaterefs (void)
void luaC_hashcallIM (Hash *l)
{
void luaC_hashcallIM (Hash *l) {
TObject t;
ttype(&t) = LUA_T_ARRAY;
for (; l; l=(Hash *)l->head.next) {
@ -120,8 +114,7 @@ void luaC_hashcallIM (Hash *l)
}
void luaC_strcallIM (TaggedString *l)
{
void luaC_strcallIM (TaggedString *l) {
TObject o;
ttype(&o) = LUA_T_USERDATA;
for (; l; l=(TaggedString *)l->head.next)
@ -133,8 +126,7 @@ void luaC_strcallIM (TaggedString *l)
static GCnode *listcollect (GCnode *l)
{
static GCnode *listcollect (GCnode *l) {
GCnode *frees = NULL;
while (l) {
GCnode *next = l->next;
@ -151,8 +143,7 @@ static GCnode *listcollect (GCnode *l)
}
static void strmark (TaggedString *s)
{
static void strmark (TaggedString *s) {
if (!s->head.marked)
s->head.marked = 1;
}
@ -169,8 +160,7 @@ static void protomark (TProtoFunc *f) {
}
static void closuremark (Closure *f)
{
static void closuremark (Closure *f) {
if (!f->head.marked) {
int i;
f->head.marked = 1;
@ -180,8 +170,7 @@ static void closuremark (Closure *f)
}
static void hashmark (Hash *h)
{
static void hashmark (Hash *h) {
if (!h->head.marked) {
int i;
h->head.marked = 1;
@ -196,8 +185,7 @@ static void hashmark (Hash *h)
}
static void globalmark (void)
{
static void globalmark (void) {
TaggedString *g;
for (g=(TaggedString *)L->rootglobal.next; g; g=(TaggedString *)g->head.next){
LUA_ASSERT(g->constindex >= 0, "userdata in global list");
@ -209,8 +197,7 @@ static void globalmark (void)
}
static int markobject (TObject *o)
{
static int markobject (TObject *o) {
switch (ttype(o)) {
case LUA_T_USERDATA: case LUA_T_STRING:
strmark(tsvalue(o));
@ -231,8 +218,7 @@ static int markobject (TObject *o)
static void markall (void)
{
static void markall (void) {
luaD_travstack(markobject); /* mark stack objects */
globalmark(); /* mark global variable values and names */
travlock(); /* mark locked objects */
@ -240,8 +226,7 @@ static void markall (void)
}
long lua_collectgarbage (long limit)
{
long lua_collectgarbage (long limit) {
unsigned long recovered = L->nblocks; /* to subtract nblocks after gc */
Hash *freetable;
TaggedString *freestr;
@ -267,8 +252,7 @@ long lua_collectgarbage (long limit)
}
void luaC_checkGC (void)
{
void luaC_checkGC (void) {
if (L->nblocks >= L->GCthreshold)
lua_collectgarbage(0);
}

6
lgc.h
View File

@ -1,5 +1,5 @@
/*
** $Id: lgc.h,v 1.3 1997/11/19 17:29:23 roberto Exp roberto $
** $Id: lgc.h,v 1.4 1997/12/01 20:31:25 roberto Exp roberto $
** Garbage Collector
** See Copyright Notice in lua.h
*/
@ -12,8 +12,8 @@
void luaC_checkGC (void);
TObject* luaC_getref (int ref);
int luaC_ref (TObject *o, int lock);
const TObject *luaC_getref (int ref);
int luaC_ref (const TObject *o, int lock);
void luaC_hashcallIM (Hash *l);
void luaC_strcallIM (TaggedString *l);

View File

@ -1,5 +1,5 @@
/*
** $Id: liolib.c,v 1.42 1999/07/22 19:35:50 roberto Exp roberto $
** $Id: liolib.c,v 1.43 1999/08/10 13:05:16 roberto Exp roberto $
** Standard I/O (and system) library
** See Copyright Notice in lua.h
*/
@ -44,8 +44,8 @@
#ifdef POPEN
FILE *popen();
int pclose();
/* FILE *popen();
int pclose(); */
#define CLOSEFILE(f) ((pclose(f) == -1) ? fclose(f) : 0)
#else
/* no support for popen */
@ -88,7 +88,7 @@ static int ishandle (lua_Object f) {
}
static FILE *getfilebyname (char *name) {
static FILE *getfilebyname (const char *name) {
lua_Object f = lua_rawgetglobal(name);
if (!ishandle(f))
luaL_verror("global variable `%.50s' is not a file handle", name);
@ -109,7 +109,7 @@ static FILE *getnonullfile (int arg) {
}
static FILE *getfileparam (char *name, int *arg) {
static FILE *getfileparam (const char *name, int *arg) {
FILE *f = getfile(*arg);
if (f) {
(*arg)++;
@ -152,13 +152,13 @@ static void io_open (void) {
}
static void setfile (FILE *f, char *name, int tag) {
static void setfile (FILE *f, const char *name, int tag) {
lua_pushusertag(f, tag);
lua_setglobal(name);
}
static void setreturn (FILE *f, char *name) {
static void setreturn (FILE *f, const char *name) {
if (f == NULL)
pushresult(0);
else {
@ -181,7 +181,7 @@ static void io_readfrom (void) {
else if (lua_tag(f) == gettag()) /* deprecated option */
current = lua_getuserdata(f);
else {
char *s = luaL_check_string(FIRSTARG);
const char *s = luaL_check_string(FIRSTARG);
current = (*s == '|') ? popen(s+1, "r") : fopen(s, "r");
}
setreturn(current, FINPUT);
@ -200,7 +200,7 @@ static void io_writeto (void) {
else if (lua_tag(f) == gettag()) /* deprecated option */
current = lua_getuserdata(f);
else {
char *s = luaL_check_string(FIRSTARG);
const char *s = luaL_check_string(FIRSTARG);
current = (*s == '|') ? popen(s+1,"w") : fopen(s, "w");
}
setreturn(current, FOUTPUT);
@ -228,7 +228,7 @@ static void io_appendto (void) {
#define NEED_OTHER (EOF-1) /* just some flag different from EOF */
static int read_pattern (FILE *f, char *p) {
static int read_pattern (FILE *f, const char *p) {
int inskip = 0; /* {skip} level */
int c = NEED_OTHER;
while (*p != '\0') {
@ -243,7 +243,7 @@ static int read_pattern (FILE *f, char *p) {
p++;
continue;
default: {
char *ep = luaI_classend(p); /* get what is next */
const char *ep = luaI_classend(p); /* get what is next */
int m; /* match result */
if (c == NEED_OTHER) c = getc(f);
m = (c==EOF) ? 0 : luaI_singlematch(c, p, ep);
@ -317,10 +317,10 @@ static void read_file (FILE *f) {
static void io_read (void) {
static char *options[] = {"*n", "*l", "*a", ".*", "*w", NULL};
static const char *const options[] = {"*n", "*l", "*a", ".*", "*w", NULL};
int arg = FIRSTARG;
FILE *f = getfileparam(FINPUT, &arg);
char *p = luaL_opt_string(arg++, "*l");
const char *p = luaL_opt_string(arg++, "*l");
do { /* repeat for each part */
long l;
int success;
@ -355,7 +355,7 @@ static void io_write (void) {
int arg = FIRSTARG;
FILE *f = getfileparam(FOUTPUT, &arg);
int status = 1;
char *s;
const char *s;
long l;
while ((s = luaL_opt_lstr(arg++, NULL, &l)) != NULL)
status = status && ((long)fwrite(s, 1, l, f) == l);
@ -364,8 +364,8 @@ static void io_write (void) {
static void io_seek (void) {
static int mode[] = {SEEK_SET, SEEK_CUR, SEEK_END};
static char *modenames[] = {"set", "cur", "end", NULL};
static const int mode[] = {SEEK_SET, SEEK_CUR, SEEK_END};
static const char *const modenames[] = {"set", "cur", "end", NULL};
FILE *f = getnonullfile(FIRSTARG);
int op = luaL_findstring(luaL_opt_string(FIRSTARG+1, "cur"), modenames);
long offset = luaL_opt_long(FIRSTARG+2, 0);
@ -428,7 +428,7 @@ static void io_clock (void) {
static void io_date (void) {
char b[256];
char *s = luaL_opt_string(1, "%c");
const char *s = luaL_opt_string(1, "%c");
struct tm *tm;
time_t t;
time(&t); tm = localtime(&t);
@ -440,9 +440,9 @@ static void io_date (void) {
static void setloc (void) {
static int cat[] = {LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC,
LC_TIME};
static char *catnames[] = {"all", "collate", "ctype", "monetary",
static const int cat[] = {LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY,
LC_NUMERIC, LC_TIME};
static const char *const catnames[] = {"all", "collate", "ctype", "monetary",
"numeric", "time", NULL};
int op = luaL_findstring(luaL_opt_string(2, "all"), catnames);
luaL_arg_check(op != -1, 2, "invalid option");
@ -485,9 +485,9 @@ static void errorfb (void) {
lua_Object func;
sprintf(buff, "lua error: %.200s\n", lua_getstring(lua_getparam(1)));
while ((func = lua_stackedfunction(level++)) != LUA_NOOBJECT) {
char *name;
const char *name;
int currentline;
char *chunkname;
const char *chunkname;
char buffchunk[MAXSRC];
int linedefined;
lua_funcinfo(func, &chunkname, &linedefined);
@ -531,7 +531,7 @@ static void errorfb (void) {
static struct luaL_reg iolib[] = {
static const struct luaL_reg iolib[] = {
{"_ERRORMESSAGE", errorfb},
{"clock", io_clock},
{"date", io_date},
@ -546,7 +546,7 @@ static struct luaL_reg iolib[] = {
};
static struct luaL_reg iolibtag[] = {
static const struct luaL_reg iolibtag[] = {
{"appendto", io_appendto},
{"closefile", io_close},
{"flush", io_flush},

16
llex.c
View File

@ -1,5 +1,5 @@
/*
** $Id: llex.c,v 1.36 1999/06/17 17:04:03 roberto Exp roberto $
** $Id: llex.c,v 1.37 1999/07/22 19:29:42 roberto Exp roberto $
** Lexical Analyzer
** See Copyright Notice in lua.h
*/
@ -28,8 +28,8 @@
/* ORDER RESERVED */
static char *reserved [] = {"and", "do", "else", "elseif", "end", "function",
"if", "local", "nil", "not", "or", "repeat", "return", "then",
static const char *const reserved [] = {"and", "do", "else", "elseif", "end",
"function", "if", "local", "nil", "not", "or", "repeat", "return", "then",
"until", "while"};
@ -44,7 +44,7 @@ void luaX_init (void) {
#define MAXSRC 80
void luaX_syntaxerror (LexState *ls, char *s, char *token) {
void luaX_syntaxerror (LexState *ls, const char *s, const char *token) {
char buff[MAXSRC];
luaL_chunkid(buff, zname(ls->lex_z), sizeof(buff));
if (token[0] == '\0')
@ -54,7 +54,7 @@ void luaX_syntaxerror (LexState *ls, char *s, char *token) {
}
void luaX_error (LexState *ls, char *s) {
void luaX_error (LexState *ls, const char *s) {
save('\0');
luaX_syntaxerror(ls, s, luaL_buffer());
}
@ -117,8 +117,8 @@ static void skipspace (LexState *LS) {
}
static int checkcond (LexState *LS, char *buff) {
static char *opts[] = {"nil", "1", NULL};
static int checkcond (LexState *LS, const char *buff) {
static const char *const opts[] = {"nil", "1", NULL};
int i = luaL_findstring(buff, opts);
if (i >= 0) return i;
else if (isalpha((unsigned char)buff[0]) || buff[0] == '_')
@ -160,7 +160,7 @@ static void ifskip (LexState *LS) {
static void inclinenumber (LexState *LS) {
static char *pragmas [] =
static const char *const pragmas [] =
{"debug", "nodebug", "endinput", "end", "ifnot", "if", "else", NULL};
next(LS); /* skip '\n' */
++LS->linenumber;

6
llex.h
View File

@ -1,5 +1,5 @@
/*
** $Id: llex.h,v 1.12 1999/06/17 17:04:03 roberto Exp roberto $
** $Id: llex.h,v 1.13 1999/07/22 19:29:42 roberto Exp roberto $
** Lexical Analyzer
** See Copyright Notice in lua.h
*/
@ -61,8 +61,8 @@ typedef struct LexState {
void luaX_init (void);
void luaX_setinput (LexState *LS, ZIO *z);
int luaX_lex (LexState *LS);
void luaX_syntaxerror (LexState *ls, char *s, char *token);
void luaX_error (LexState *ls, char *s);
void luaX_syntaxerror (LexState *ls, const char *s, const char *token);
void luaX_error (LexState *ls, const char *s);
void luaX_token2str (int token, char *s);

View File

@ -1,5 +1,5 @@
/*
** $Id: lmathlib.c,v 1.16 1999/02/19 17:33:35 roberto Exp roberto $
** $Id: lmathlib.c,v 1.17 1999/07/07 17:54:08 roberto Exp roberto $
** Lua standard mathematical library
** See Copyright Notice in lua.h
*/
@ -164,7 +164,7 @@ static void math_randomseed (void) {
}
static struct luaL_reg mathlib[] = {
static const struct luaL_reg mathlib[] = {
{"abs", math_abs},
{"sin", math_sin},
{"cos", math_cos},

30
lmem.c
View File

@ -1,5 +1,5 @@
/*
** $Id: lmem.c,v 1.16 1999/05/20 20:43:06 roberto Exp roberto $
** $Id: lmem.c,v 1.17 1999/05/24 17:51:05 roberto Exp roberto $
** Interface to Memory Manager
** See Copyright Notice in lua.h
*/
@ -35,7 +35,7 @@ static unsigned long power2 (unsigned long n) {
void *luaM_growaux (void *block, unsigned long nelems, int inc, int size,
char *errormsg, unsigned long limit) {
const char *errormsg, unsigned long limit) {
unsigned long newn = nelems+inc;
if (newn >= limit) lua_error(errormsg);
if ((newn ^ nelems) <= nelems || /* still the same power of 2 limit? */
@ -86,25 +86,23 @@ unsigned long totalmem = 0;
static void *checkblock (void *block) {
if (block == NULL)
return NULL;
else {
unsigned long *b = blocksize(block);
unsigned long size = *b;
int i;
for (i=0;i<MARKSIZE;i++)
LUA_ASSERT(*(((char *)b)+HEADER+size+i) == MARK+i, "corrupted block");
numblocks--;
totalmem -= size;
return b;
}
unsigned long *b = blocksize(block);
unsigned long size = *b;
int i;
for (i=0;i<MARKSIZE;i++)
LUA_ASSERT(*(((char *)b)+HEADER+size+i) == MARK+i, "corrupted block");
numblocks--;
totalmem -= size;
return b;
}
static void freeblock (void *block) {
if (block)
if (block) {
memset(block, -1, *blocksize(block)); /* erase block */
free(checkblock(block));
block = checkblock(block);
free(block);
}
}

4
lmem.h
View File

@ -1,5 +1,5 @@
/*
** $Id: lmem.h,v 1.7 1999/02/25 15:16:26 roberto Exp roberto $
** $Id: lmem.h,v 1.8 1999/02/26 15:48:55 roberto Exp roberto $
** Interface to Memory Manager
** See Copyright Notice in lua.h
*/
@ -20,7 +20,7 @@
void *luaM_realloc (void *oldblock, unsigned long size);
void *luaM_growaux (void *block, unsigned long nelems, int inc, int size,
char *errormsg, unsigned long limit);
const char *errormsg, unsigned long limit);
#define luaM_free(b) luaM_realloc((b), 0)
#define luaM_malloc(t) luaM_realloc(NULL, (t))

View File

@ -1,5 +1,5 @@
/*
** $Id: lobject.c,v 1.18 1999/02/26 15:48:30 roberto Exp roberto $
** $Id: lobject.c,v 1.19 1999/04/13 19:28:49 roberto Exp roberto $
** Some generic functions over Lua objects
** See Copyright Notice in lua.h
*/
@ -11,25 +11,24 @@
#include "lua.h"
char *luaO_typenames[] = { /* ORDER LUA_T */
const char *const luaO_typenames[] = { /* ORDER LUA_T */
"userdata", "number", "string", "table", "function", "function",
"nil", "function", "mark", "mark", "mark", "line", NULL
};
TObject luaO_nilobject = {LUA_T_NIL, {NULL}};
const TObject luaO_nilobject = {LUA_T_NIL, {NULL}};
/* hash dimensions values */
static long dimensions[] =
static const long dimensions[] =
{5L, 11L, 23L, 47L, 97L, 197L, 397L, 797L, 1597L, 3203L, 6421L,
12853L, 25717L, 51437L, 102811L, 205619L, 411233L, 822433L,
1644817L, 3289613L, 6579211L, 13158023L, MAX_INT};
int luaO_redimension (int oldsize)
{
int luaO_redimension (int oldsize) {
int i;
for (i=0; dimensions[i]<MAX_INT; i++) {
if (dimensions[i] > oldsize)
@ -40,7 +39,7 @@ int luaO_redimension (int oldsize)
}
int luaO_equalval (TObject *t1, TObject *t2) {
int luaO_equalval (const TObject *t1, const TObject *t2) {
switch (ttype(t1)) {
case LUA_T_NIL: return 1;
case LUA_T_NUMBER: return nvalue(t1) == nvalue(t2);
@ -56,8 +55,7 @@ int luaO_equalval (TObject *t1, TObject *t2) {
}
void luaO_insertlist (GCnode *root, GCnode *node)
{
void luaO_insertlist (GCnode *root, GCnode *node) {
node->next = root->next;
root->next = node;
node->marked = 0;
@ -90,7 +88,7 @@ static double expten (unsigned int e) {
}
double luaO_str2d (char *s) { /* LUA_NUMBER */
double luaO_str2d (const char *s) { /* LUA_NUMBER */
double a = 0.0;
int point = 0;
while (isdigit((unsigned char)*s)) {

View File

@ -1,5 +1,5 @@
/*
** $Id: lobject.h,v 1.27 1999/03/04 21:17:26 roberto Exp roberto $
** $Id: lobject.h,v 1.28 1999/03/16 16:43:27 roberto Exp roberto $
** Type definitions for Lua objects
** See Copyright Notice in lua.h
*/
@ -178,19 +178,19 @@ typedef struct Hash {
} Hash;
extern char *luaO_typenames[];
extern const char *const luaO_typenames[];
#define luaO_typename(o) luaO_typenames[-ttype(o)]
extern TObject luaO_nilobject;
extern const TObject luaO_nilobject;
#define luaO_equalObj(t1,t2) ((ttype(t1) != ttype(t2)) ? 0 \
: luaO_equalval(t1,t2))
int luaO_equalval (TObject *t1, TObject *t2);
int luaO_equalval (const TObject *t1, const TObject *t2);
int luaO_redimension (int oldsize);
void luaO_insertlist (GCnode *root, GCnode *node);
double luaO_str2d (char *s);
double luaO_str2d (const char *s);
#ifdef OLD_ANSI
void luaO_memup (void *dest, void *src, int size);

View File

@ -1,5 +1,5 @@
/*
** $Id: lparser.c,v 1.37 1999/06/17 17:04:03 roberto Exp roberto $
** $Id: lparser.c,v 1.38 1999/07/22 19:29:42 roberto Exp roberto $
** LL(1) Parser and code generator for Lua
** See Copyright Notice in lua.h
*/
@ -142,7 +142,7 @@ static void var_or_func_tail (LexState *ls, vardesc *v);
static void checklimit (LexState *ls, int val, int limit, char *msg) {
static void checklimit (LexState *ls, int val, int limit, const char *msg) {
if (val > limit) {
char buff[100];
sprintf(buff, "too many %.50s (limit=%d)", msg, limit);
@ -498,7 +498,7 @@ static void lua_pushvar (LexState *ls, vardesc *var) {
}
static void storevar (LexState *ls, vardesc *var) {
static void storevar (LexState *ls, const vardesc *var) {
switch (var->k) {
case VLOCAL:
code_oparg(ls, SETLOCAL, var->info, -1);
@ -597,12 +597,13 @@ static void close_func (LexState *ls) {
static int expfollow [] = {ELSE, ELSEIF, THEN, IF, WHILE, REPEAT, DO, NAME,
LOCAL, FUNCTION, END, UNTIL, RETURN, ')', ']', '}', ';', EOS, ',', 0};
static const int expfollow [] = {ELSE, ELSEIF, THEN, IF, WHILE, REPEAT,
DO, NAME, LOCAL, FUNCTION, END, UNTIL, RETURN, ')', ']', '}', ';',
EOS, ',', 0};
static int is_in (int tok, int *toks) {
int *t;
static int is_in (int tok, const int *toks) {
const int *t;
for (t=toks; *t; t++)
if (*t == tok) return t-toks;
return -1;
@ -923,13 +924,13 @@ static void ret (LexState *ls) {
*/
#define POW 13
static int binop [] = {EQ, NE, '>', '<', LE, GE, CONC,
'+', '-', '*', '/', '^', 0};
static const int binop [] = {EQ, NE, '>', '<', LE, GE, CONC,
'+', '-', '*', '/', '^', 0};
static int priority [POW+1] = {5, 5, 1, 1, 1, 1, 1, 1, 2, 3, 3, 4, 4, 6};
static const int priority [POW+1] = {5, 5, 1, 1, 1, 1, 1, 1, 2, 3, 3, 4, 4, 6};
static OpCode opcodes [POW+1] = {NOTOP, MINUSOP, EQOP, NEQOP, GTOP, LTOP,
LEOP, GEOP, CONCOP, ADDOP, SUBOP, MULTOP, DIVOP, POWOP};
static const OpCode opcodes [POW+1] = {NOTOP, MINUSOP, EQOP, NEQOP, GTOP,
LTOP, LEOP, GEOP, CONCOP, ADDOP, SUBOP, MULTOP, DIVOP, POWOP};
#define MAXOPS 20 /* op's stack size (arbitrary limit) */

View File

@ -1,5 +1,5 @@
/*
** $Id: lparser.h,v 1.2 1997/12/22 20:57:18 roberto Exp roberto $
** $Id: lparser.h,v 1.3 1999/02/25 19:13:56 roberto Exp roberto $
** LL(1) Parser and code generator for Lua
** See Copyright Notice in lua.h
*/
@ -13,8 +13,8 @@
void luaY_codedebugline (int line);
TProtoFunc *luaY_parser (ZIO *z);
void luaY_error (char *s);
void luaY_syntaxerror (char *s, char *token);
void luaY_error (const char *s);
void luaY_syntaxerror (const char *s, const char *token);
#endif

View File

@ -1,5 +1,5 @@
/*
** $Id: lstate.c,v 1.11 1999/05/11 14:19:32 roberto Exp roberto $
** $Id: lstate.c,v 1.12 1999/05/11 20:08:20 roberto Exp roberto $
** Global State
** See Copyright Notice in lua.h
*/
@ -20,8 +20,7 @@
lua_State *lua_state = NULL;
void lua_open (void)
{
void lua_open (void) {
if (lua_state) return;
lua_state = luaM_new(lua_State);
L->Cstack.base = 0;
@ -58,8 +57,7 @@ void lua_open (void)
}
void lua_close (void)
{
void lua_close (void) {
TaggedString *alludata = luaS_collectudata();
L->GCthreshold = MAX_INT; /* to avoid GC during GC */
luaC_hashcallIM((Hash *)L->roottable.next); /* GC t.methods for tables */

View File

@ -1,5 +1,5 @@
/*
** $Id: lstring.c,v 1.18 1999/02/08 16:28:48 roberto Exp roberto $
** $Id: lstring.c,v 1.19 1999/02/26 15:49:53 roberto Exp roberto $
** String table (keeps all strings handled by Lua)
** See Copyright Notice in lua.h
*/
@ -38,7 +38,7 @@ void luaS_init (void) {
}
static unsigned long hash_s (char *s, long l) {
static unsigned long hash_s (const char *s, long l) {
unsigned long h = 0; /* seed */
while (l--)
h = h ^ ((h<<5)+(h>>2)+(unsigned char)*(s++));
@ -83,7 +83,7 @@ static void grow (stringtable *tb) {
}
static TaggedString *newone_s (char *str, long l, unsigned long h) {
static TaggedString *newone_s (const char *str, long l, unsigned long h) {
TaggedString *ts = (TaggedString *)luaM_malloc(sizeof(TaggedString)+l);
memcpy(ts->str, str, l);
ts->str[l] = 0; /* ending 0 */
@ -97,7 +97,7 @@ static TaggedString *newone_s (char *str, long l, unsigned long h) {
return ts;
}
static TaggedString *newone_u (char *buff, int tag, unsigned long h) {
static TaggedString *newone_u (void *buff, int tag, unsigned long h) {
TaggedString *ts = luaM_new(TaggedString);
ts->u.d.v = buff;
ts->u.d.tag = (tag == LUA_ANYTAG) ? 0 : tag;
@ -109,7 +109,7 @@ static TaggedString *newone_u (char *buff, int tag, unsigned long h) {
return ts;
}
static TaggedString *insert_s (char *str, long l, stringtable *tb) {
static TaggedString *insert_s (const char *str, long l, stringtable *tb) {
TaggedString *ts;
unsigned long h = hash_s(str, l);
int size = tb->size;
@ -172,16 +172,16 @@ TaggedString *luaS_createudata (void *udata, int tag) {
return insert_u(udata, tag, &L->string_root[t]);
}
TaggedString *luaS_newlstr (char *str, long l) {
TaggedString *luaS_newlstr (const char *str, long l) {
int t = (l==0) ? 0 : ((int)((unsigned char)str[0]*l))%NUM_HASHSTR;
return insert_s(str, l, &L->string_root[t]);
}
TaggedString *luaS_new (char *str) {
TaggedString *luaS_new (const char *str) {
return luaS_newlstr(str, strlen(str));
}
TaggedString *luaS_newfixedstring (char *str) {
TaggedString *luaS_newfixedstring (const char *str) {
TaggedString *ts = luaS_new(str);
if (ts->head.marked == 0)
ts->head.marked = 2; /* avoid GC */
@ -282,7 +282,7 @@ void luaS_rawsetglobal (TaggedString *ts, TObject *newval) {
}
char *luaS_travsymbol (int (*fn)(TObject *)) {
const char *luaS_travsymbol (int (*fn)(TObject *)) {
TaggedString *g;
for (g=(TaggedString *)L->rootglobal.next; g; g=(TaggedString *)g->head.next)
if (fn(&g->u.s.globalval))
@ -291,7 +291,7 @@ char *luaS_travsymbol (int (*fn)(TObject *)) {
}
int luaS_globaldefined (char *name) {
int luaS_globaldefined (const char *name) {
TaggedString *ts = luaS_new(name);
return ts->u.s.globalval.ttype != LUA_T_NIL;
}

View File

@ -1,5 +1,5 @@
/*
** $Id: lstring.h,v 1.6 1997/12/01 20:31:25 roberto Exp roberto $
** $Id: lstring.h,v 1.7 1998/03/06 16:54:42 roberto Exp roberto $
** String table (keep all strings handled by Lua)
** See Copyright Notice in lua.h
*/
@ -15,12 +15,12 @@ void luaS_init (void);
TaggedString *luaS_createudata (void *udata, int tag);
TaggedString *luaS_collector (void);
void luaS_free (TaggedString *l);
TaggedString *luaS_newlstr (char *str, long l);
TaggedString *luaS_new (char *str);
TaggedString *luaS_newfixedstring (char *str);
TaggedString *luaS_newlstr (const char *str, long l);
TaggedString *luaS_new (const char *str);
TaggedString *luaS_newfixedstring (const char *str);
void luaS_rawsetglobal (TaggedString *ts, TObject *newval);
char *luaS_travsymbol (int (*fn)(TObject *));
int luaS_globaldefined (char *name);
const char *luaS_travsymbol (int (*fn)(TObject *));
int luaS_globaldefined (const char *name);
TaggedString *luaS_collectudata (void);
void luaS_freeall (void);

View File

@ -1,5 +1,5 @@
/*
** $Id: lstrlib.c,v 1.32 1999/06/17 17:04:03 roberto Exp roberto $
** $Id: lstrlib.c,v 1.33 1999/08/10 12:55:56 roberto Exp roberto $
** Standard library for strings and pattern-matching
** See Copyright Notice in lua.h
*/
@ -16,16 +16,14 @@
static void addnchar (char *s, int n)
{
static void addnchar (const char *s, int n) {
char *b = luaL_openspace(n);
memcpy(b, s, n);
luaL_addsize(n);
}
static void str_len (void)
{
static void str_len (void) {
long l;
luaL_check_lstr(1, &l);
lua_pushnumber(l);
@ -45,7 +43,7 @@ static long posrelat (long pos, long len) {
static void str_sub (void) {
long l;
char *s = luaL_check_lstr(1, &l);
const char *s = luaL_check_lstr(1, &l);
long start = posrelat(luaL_check_long(2), l);
long end = posrelat(luaL_opt_long(3, -1), l);
if (start < 1) start = 1;
@ -59,7 +57,7 @@ static void str_sub (void) {
static void str_lower (void) {
long l;
int i;
char *s = luaL_check_lstr(1, &l);
const char *s = luaL_check_lstr(1, &l);
luaL_resetbuffer();
for (i=0; i<l; i++)
luaL_addchar(tolower((unsigned char)(s[i])));
@ -70,17 +68,16 @@ static void str_lower (void) {
static void str_upper (void) {
long l;
int i;
char *s = luaL_check_lstr(1, &l);
const char *s = luaL_check_lstr(1, &l);
luaL_resetbuffer();
for (i=0; i<l; i++)
luaL_addchar(toupper((unsigned char)(s[i])));
closeandpush();
}
static void str_rep (void)
{
static void str_rep (void) {
long l;
char *s = luaL_check_lstr(1, &l);
const char *s = luaL_check_lstr(1, &l);
int n = luaL_check_int(2);
luaL_resetbuffer();
while (n-- > 0)
@ -91,7 +88,7 @@ static void str_rep (void)
static void str_byte (void) {
long l;
char *s = luaL_check_lstr(1, &l);
const char *s = luaL_check_lstr(1, &l);
long pos = posrelat(luaL_opt_long(2, 1), l);
luaL_arg_check(0<pos && pos<=l, 2, "out of range");
lua_pushnumber((unsigned char)s[pos-1]);
@ -123,10 +120,10 @@ static void str_char (void) {
struct Capture {
char *src_end; /* end ('\0') of source string */
const char *src_end; /* end ('\0') of source string */
int level; /* total number of captures (finished or unfinished) */
struct {
char *init;
const char *init;
int len; /* -1 signals unfinished capture */
} capture[MAX_CAPT];
};
@ -163,7 +160,7 @@ static int capture_to_close (struct Capture *cap) {
}
char *luaI_classend (char *p) {
const char *luaI_classend (const char *p) {
switch (*p++) {
case ESC:
if (*p == '\0') lua_error("incorrect pattern (ends with `%')");
@ -201,7 +198,7 @@ static int matchclass (int c, int cl) {
static int matchbracketclass (int c, char *p, char *endclass) {
static int matchbracketclass (int c, const char *p, const char *endclass) {
int sig = 1;
if (*(p+1) == '^') {
sig = 0;
@ -225,7 +222,7 @@ static int matchbracketclass (int c, char *p, char *endclass) {
int luaI_singlematch (int c, char *p, char *ep) {
int luaI_singlematch (int c, const char *p, const char *ep) {
switch (*p) {
case '.': /* matches any char */
return 1;
@ -239,10 +236,11 @@ int luaI_singlematch (int c, char *p, char *ep) {
}
static char *match (char *s, char *p, struct Capture *cap);
static const char *match (const char *s, const char *p, struct Capture *cap);
static char *matchbalance (char *s, char *p, struct Capture *cap) {
static const char *matchbalance (const char *s, const char *p,
struct Capture *cap) {
if (*p == 0 || *(p+1) == 0)
lua_error("unbalanced pattern");
if (*s != *p) return NULL;
@ -261,13 +259,14 @@ static char *matchbalance (char *s, char *p, struct Capture *cap) {
}
static char *max_expand (char *s, char *p, char *ep, struct Capture *cap) {
static const char *max_expand (const char *s, const char *p, const char *ep,
struct Capture *cap) {
int i = 0; /* counts maximum expand for item */
while ((s+i)<cap->src_end && luaI_singlematch((unsigned char)*(s+i), p, ep))
i++;
/* keeps trying to match mith the maximum repetitions */
while (i>=0) {
char *res = match((s+i), ep+1, cap);
const char *res = match((s+i), ep+1, cap);
if (res) return res;
i--; /* else didn't match; reduce 1 repetition to try again */
}
@ -275,9 +274,10 @@ static char *max_expand (char *s, char *p, char *ep, struct Capture *cap) {
}
static char *min_expand (char *s, char *p, char *ep, struct Capture *cap) {
static const char *min_expand (const char *s, const char *p, const char *ep,
struct Capture *cap) {
for (;;) {
char *res = match(s, ep+1, cap);
const char *res = match(s, ep+1, cap);
if (res != NULL)
return res;
else if (s<cap->src_end && luaI_singlematch((unsigned char)*s, p, ep))
@ -287,8 +287,9 @@ static char *min_expand (char *s, char *p, char *ep, struct Capture *cap) {
}
static char *start_capt (char *s, char *p, struct Capture *cap) {
char *res;
static const char *start_capt (const char *s, const char *p,
struct Capture *cap) {
const char *res;
int level = cap->level;
if (level >= MAX_CAPT) lua_error("too many captures");
cap->capture[level].init = s;
@ -300,9 +301,10 @@ static char *start_capt (char *s, char *p, struct Capture *cap) {
}
static char *end_capt (char *s, char *p, struct Capture *cap) {
static const char *end_capt (const char *s, const char *p,
struct Capture *cap) {
int l = capture_to_close(cap);
char *res;
const char *res;
cap->capture[l].len = s - cap->capture[l].init; /* close capture */
if ((res = match(s, p+1, cap)) == NULL) /* match failed? */
cap->capture[l].len = -1; /* undo capture */
@ -310,7 +312,8 @@ static char *end_capt (char *s, char *p, struct Capture *cap) {
}
static char *match_capture (char *s, int level, struct Capture *cap) {
static const char *match_capture (const char *s, int level,
struct Capture *cap) {
int l = check_cap(level, cap);
int len = cap->capture[l].len;
if (cap->src_end-s >= len &&
@ -320,7 +323,7 @@ static char *match_capture (char *s, int level, struct Capture *cap) {
}
static char *match (char *s, char *p, struct Capture *cap) {
static const char *match (const char *s, const char *p, struct Capture *cap) {
init: /* using goto's to optimize tail recursion */
switch (*p) {
case '(': /* start capture */
@ -346,11 +349,11 @@ static char *match (char *s, char *p, struct Capture *cap) {
return (s == cap->src_end) ? s : NULL; /* check end of string */
else goto dflt;
default: dflt: { /* it is a pattern item */
char *ep = luaI_classend(p); /* points to what is next */
const char *ep = luaI_classend(p); /* points to what is next */
int m = s<cap->src_end && luaI_singlematch((unsigned char)*s, p, ep);
switch (*ep) {
case '?': { /* optional */
char *res;
const char *res;
if (m && ((res=match(s+1, ep+1, cap)) != NULL))
return res;
p=ep+1; goto init; /* else return match(s, ep+1, cap); */
@ -372,8 +375,8 @@ static char *match (char *s, char *p, struct Capture *cap) {
static void str_find (void) {
long l;
char *s = luaL_check_lstr(1, &l);
char *p = luaL_check_string(2);
const char *s = luaL_check_lstr(1, &l);
const char *p = luaL_check_string(2);
long init = posrelat(luaL_opt_long(3, 1), l) - 1;
struct Capture cap;
luaL_arg_check(0 <= init && init <= l, 3, "out of range");
@ -388,10 +391,10 @@ static void str_find (void) {
}
else {
int anchor = (*p == '^') ? (p++, 1) : 0;
char *s1=s+init;
const char *s1=s+init;
cap.src_end = s+l;
do {
char *res;
const char *res;
cap.level = 0;
if ((res=match(s1, p, &cap)) != NULL) {
lua_pushnumber(s1-s+1); /* start */
@ -407,7 +410,7 @@ static void str_find (void) {
static void add_s (lua_Object newp, struct Capture *cap) {
if (lua_isstring(newp)) {
char *news = lua_getstring(newp);
const char *news = lua_getstring(newp);
int l = lua_strlen(newp);
int i;
for (i=0; i<l; i++) {
@ -449,8 +452,8 @@ static void add_s (lua_Object newp, struct Capture *cap) {
static void str_gsub (void) {
long srcl;
char *src = luaL_check_lstr(1, &srcl);
char *p = luaL_check_string(2);
const char *src = luaL_check_lstr(1, &srcl);
const char *p = luaL_check_string(2);
lua_Object newp = lua_getparam(3);
int max_s = luaL_opt_int(4, srcl+1);
int anchor = (*p == '^') ? (p++, 1) : 0;
@ -461,7 +464,7 @@ static void str_gsub (void) {
luaL_resetbuffer();
cap.src_end = src+srcl;
while (n < max_s) {
char *e;
const char *e;
cap.level = 0;
e = match(src, p, &cap);
if (e) {
@ -485,7 +488,7 @@ static void str_gsub (void) {
static void luaI_addquoted (int arg) {
long l;
char *s = luaL_check_lstr(arg, &l);
const char *s = luaL_check_lstr(arg, &l);
luaL_addchar('"');
while (l--) {
switch (*s) {
@ -506,7 +509,7 @@ static void luaI_addquoted (int arg) {
static void str_format (void) {
int arg = 1;
char *strfrmt = luaL_check_string(arg);
const char *strfrmt = luaL_check_string(arg);
luaL_resetbuffer();
while (*strfrmt) {
if (*strfrmt != '%')
@ -517,7 +520,7 @@ static void str_format (void) {
struct Capture cap;
char form[MAX_FORMAT]; /* to store the format ('%...') */
char *buff; /* to store the formatted item */
char *initf = strfrmt;
const char *initf = strfrmt;
form[0] = '%';
if (isdigit((unsigned char)*initf) && *(initf+1) == '$') {
arg = *initf - '0';
@ -548,7 +551,7 @@ static void str_format (void) {
continue; /* skip the "addsize" at the end */
case 's': {
long l;
char *s = luaL_check_lstr(arg, &l);
const char *s = luaL_check_lstr(arg, &l);
if (cap.capture[1].len == 0 && l >= 100) {
/* no precision and string is too big to be formatted;
keep original string */
@ -570,7 +573,7 @@ static void str_format (void) {
}
static struct luaL_reg strlib[] = {
static const struct luaL_reg strlib[] = {
{"strlen", str_len},
{"strsub", str_sub},
{"strlower", str_lower},

View File

@ -1,5 +1,5 @@
/*
** $Id: ltable.c,v 1.21 1999/02/23 14:57:28 roberto Exp roberto $
** $Id: ltable.c,v 1.22 1999/05/21 19:41:49 roberto Exp roberto $
** Lua tables (hash)
** See Copyright Notice in lua.h
*/
@ -24,7 +24,7 @@
static long int hashindex (TObject *ref) {
static long int hashindex (const TObject *ref) {
long int h;
switch (ttype(ref)) {
case LUA_T_NUMBER:
@ -53,7 +53,7 @@ static long int hashindex (TObject *ref) {
}
Node *luaH_present (Hash *t, TObject *key) {
Node *luaH_present (const Hash *t, const TObject *key) {
int tsize = nhash(t);
long int h = hashindex(key);
int h1 = h%tsize;
@ -135,7 +135,7 @@ static void rehash (Hash *t) {
}
void luaH_set (Hash *t, TObject *ref, TObject *val) {
void luaH_set (Hash *t, const TObject *ref, const TObject *val) {
Node *n = luaH_present(t, ref);
if (ttype(ref(n)) != LUA_T_NIL)
*val(n) = *val;
@ -153,14 +153,14 @@ void luaH_set (Hash *t, TObject *ref, TObject *val) {
}
int luaH_pos (Hash *t, TObject *r) {
int luaH_pos (const Hash *t, const TObject *r) {
Node *n = luaH_present(t, r);
luaL_arg_check(ttype(val(n)) != LUA_T_NIL, 2, "key not found");
return n-(t->node);
}
void luaH_setint (Hash *t, int ref, TObject *val) {
void luaH_setint (Hash *t, int ref, const TObject *val) {
TObject index;
ttype(&index) = LUA_T_NUMBER;
nvalue(&index) = ref;
@ -168,7 +168,7 @@ void luaH_setint (Hash *t, int ref, TObject *val) {
}
TObject *luaH_getint (Hash *t, int ref) {
TObject *luaH_getint (const Hash *t, int ref) {
TObject index;
ttype(&index) = LUA_T_NUMBER;
nvalue(&index) = ref;

View File

@ -1,5 +1,5 @@
/*
** $Id: ltable.h,v 1.10 1999/01/25 17:40:10 roberto Exp roberto $
** $Id: ltable.h,v 1.11 1999/02/23 14:57:28 roberto Exp roberto $
** Lua tables (hash)
** See Copyright Notice in lua.h
*/
@ -20,11 +20,11 @@
Hash *luaH_new (int nhash);
void luaH_free (Hash *frees);
Node *luaH_present (Hash *t, TObject *key);
void luaH_set (Hash *t, TObject *ref, TObject *val);
int luaH_pos (Hash *t, TObject *r);
void luaH_setint (Hash *t, int ref, TObject *val);
TObject *luaH_getint (Hash *t, int ref);
Node *luaH_present (const Hash *t, const TObject *key);
void luaH_set (Hash *t, const TObject *ref, const TObject *val);
int luaH_pos (const Hash *t, const TObject *r);
void luaH_setint (Hash *t, int ref, const TObject *val);
TObject *luaH_getint (const Hash *t, int ref);
#endif

22
ltm.c
View File

@ -1,5 +1,5 @@
/*
** $Id: ltm.c,v 1.24 1999/02/26 15:48:55 roberto Exp roberto $
** $Id: ltm.c,v 1.25 1999/05/21 19:41:49 roberto Exp roberto $
** Tag methods
** See Copyright Notice in lua.h
*/
@ -15,14 +15,14 @@
#include "ltm.h"
char *luaT_eventname[] = { /* ORDER IM */
const char *const luaT_eventname[] = { /* ORDER IM */
"gettable", "settable", "index", "getglobal", "setglobal", "add",
"sub", "mul", "div", "pow", "unm", "lt", "le", "gt", "ge",
"concat", "gc", "function", NULL
};
static int luaI_checkevent (char *name, char *list[]) {
static int luaI_checkevent (const char *name, const char *const list[]) {
int e = luaL_findstring(name, list);
if (e < 0)
luaL_verror("`%.50s' is not a valid event name", name);
@ -34,7 +34,8 @@ static int luaI_checkevent (char *name, char *list[]) {
/* events in LUA_T_NIL are all allowed, since this is used as a
* 'placeholder' for "default" fallbacks
*/
static char luaT_validevents[NUM_TAGS][IM_N] = { /* ORDER LUA_T, ORDER IM */
/* ORDER LUA_T, ORDER IM */
static const char luaT_validevents[NUM_TAGS][IM_N] = {
{1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1}, /* LUA_T_USERDATA */
{1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, /* LUA_T_NUMBER */
{1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* LUA_T_STRING */
@ -96,7 +97,7 @@ int lua_copytagmethods (int tagto, int tagfrom) {
}
int luaT_effectivetag (TObject *o) {
int luaT_effectivetag (const TObject *o) {
int t;
switch (t = ttype(o)) {
case LUA_T_ARRAY:
@ -118,7 +119,7 @@ int luaT_effectivetag (TObject *o) {
}
TObject *luaT_gettagmethod (int t, char *event) {
const TObject *luaT_gettagmethod (int t, const char *event) {
int e = luaI_checkevent(event, luaT_eventname);
checktag(t);
if (luaT_validevent(t, e))
@ -128,7 +129,7 @@ TObject *luaT_gettagmethod (int t, char *event) {
}
void luaT_settagmethod (int t, char *event, TObject *func) {
void luaT_settagmethod (int t, const char *event, TObject *func) {
TObject temp;
int e = luaI_checkevent(event, luaT_eventname);
checktag(t);
@ -143,7 +144,7 @@ void luaT_settagmethod (int t, char *event, TObject *func) {
}
char *luaT_travtagmethods (int (*fn)(TObject *)) { /* ORDER IM */
const char *luaT_travtagmethods (int (*fn)(TObject *)) { /* ORDER IM */
int e;
for (e=IM_GETTABLE; e<=IM_FUNCTION; e++) {
int t;
@ -191,10 +192,11 @@ static void fillvalids (IMS e, TObject *func) {
void luaT_setfallback (void) {
static char *oldnames [] = {"error", "getglobal", "arith", "order", NULL};
static const char *const oldnames [] = {"error", "getglobal", "arith",
"order", NULL};
TObject oldfunc;
lua_CFunction replace;
char *name = luaL_check_string(1);
const char *name = luaL_check_string(1);
lua_Object func = lua_getparam(2);
luaL_arg_check(lua_isfunction(func), 2, "function expected");
switch (luaL_findstring(name, oldnames)) {

12
ltm.h
View File

@ -1,5 +1,5 @@
/*
** $Id: ltm.h,v 1.4 1997/11/26 18:53:45 roberto Exp roberto $
** $Id: ltm.h,v 1.5 1999/01/15 13:11:57 roberto Exp roberto $
** Tag methods
** See Copyright Notice in lua.h
*/
@ -47,15 +47,15 @@ struct IM {
#define luaT_getim(tag,event) (&L->IMtable[-(tag)].int_method[event])
#define luaT_getimbyObj(o,e) (luaT_getim(luaT_effectivetag(o),(e)))
extern char *luaT_eventname[];
extern const char *const luaT_eventname[];
void luaT_init (void);
void luaT_realtag (int tag);
int luaT_effectivetag (TObject *o);
void luaT_settagmethod (int t, char *event, TObject *func);
TObject *luaT_gettagmethod (int t, char *event);
char *luaT_travtagmethods (int (*fn)(TObject *));
int luaT_effectivetag (const TObject *o);
void luaT_settagmethod (int t, const char *event, TObject *func);
const TObject *luaT_gettagmethod (int t, const char *event);
const char *luaT_travtagmethods (int (*fn)(TObject *));
void luaT_setfallback (void); /* only if LUA_COMPAT2_5 */

4
lua.c
View File

@ -1,5 +1,5 @@
/*
** $Id: lua.c,v 1.20 1999/06/24 19:42:02 roberto Exp roberto $
** $Id: lua.c,v 1.21 1999/07/02 18:22:38 roberto Exp roberto $
** Lua stand-alone interpreter
** See Copyright Notice in lua.h
*/
@ -52,7 +52,7 @@ static void laction (int i) {
}
static int ldo (int (*f)(char *), char *name) {
static int ldo (int (*f)(const char *), const char *name) {
int res;
handler h = lreset();
res = f(name); /* dostring | dofile */

35
lua.h
View File

@ -1,5 +1,5 @@
/*
** $Id: lua.h,v 1.32 1999/05/11 20:29:19 roberto Exp roberto $
** $Id: lua.h,v 1.33 1999/08/11 17:00:59 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
@ -33,18 +33,21 @@ void lua_open (void);
void lua_close (void);
lua_State *lua_setstate (lua_State *st);
lua_Object lua_settagmethod (int tag, char *event); /* In: new method */
lua_Object lua_gettagmethod (int tag, char *event);
lua_Object lua_settagmethod (int tag, const char *event);
/* In: new method */
lua_Object lua_gettagmethod (int tag, const char *event);
int lua_newtag (void);
int lua_copytagmethods (int tagto, int tagfrom);
void lua_settag (int tag); /* In: object */
void lua_error (char *s);
int lua_dofile (char *filename); /* Out: returns */
int lua_dostring (char *string); /* Out: returns */
int lua_dobuffer (char *buff, int size, char *name);
/* Out: returns */
void lua_error (const char *s);
int lua_dofile (const char *filename);
/* Out: returns */
int lua_dostring (const char *string);
/* Out: returns */
int lua_dobuffer (const char *buff, int size,
const char *name); /* Out: returns */
int lua_callfunction (lua_Object f);
/* In: parameters; Out: returns */
@ -64,7 +67,7 @@ int lua_isstring (lua_Object object);
int lua_isfunction (lua_Object object);
double lua_getnumber (lua_Object object);
char *lua_getstring (lua_Object object);
const char *lua_getstring (lua_Object object);
long lua_strlen (lua_Object object);
lua_CFunction lua_getcfunction (lua_Object object);
void *lua_getuserdata (lua_Object object);
@ -72,18 +75,18 @@ void *lua_getuserdata (lua_Object object);
void lua_pushnil (void);
void lua_pushnumber (double n);
void lua_pushlstring (char *s, long len);
void lua_pushstring (char *s);
void lua_pushlstring (const char *s, long len);
void lua_pushstring (const char *s);
void lua_pushcclosure (lua_CFunction fn, int n);
void lua_pushusertag (void *u, int tag);
void lua_pushobject (lua_Object object);
lua_Object lua_pop (void);
lua_Object lua_getglobal (char *name);
lua_Object lua_rawgetglobal (char *name);
void lua_setglobal (char *name); /* In: value */
void lua_rawsetglobal (char *name); /* In: value */
lua_Object lua_getglobal (const char *name);
lua_Object lua_rawgetglobal (const char *name);
void lua_setglobal (const char *name); /* In: value */
void lua_rawsetglobal (const char *name); /* In: value */
void lua_settable (void); /* In: table, index, value */
void lua_rawsettable (void); /* In: table, index, value */
@ -92,7 +95,7 @@ lua_Object lua_rawgettable (void); /* In: table, index */
int lua_tag (lua_Object object);
char *lua_nextvar (char *varname); /* Out: value */
const char *lua_nextvar (const char *varname); /* Out: value */
int lua_next (lua_Object o, int i);
/* Out: ref, value */

View File

@ -1,5 +1,5 @@
/*
** $Id: luadebug.h,v 1.5 1999/02/04 17:47:59 roberto Exp roberto $
** $Id: luadebug.h,v 1.6 1999/03/04 21:17:26 roberto Exp roberto $
** Debugging API
** See Copyright Notice in lua.h
*/
@ -14,14 +14,15 @@
typedef lua_Object lua_Function;
typedef void (*lua_LHFunction) (int line);
typedef void (*lua_CHFunction) (lua_Function func, char *file, int line);
typedef void (*lua_CHFunction) (lua_Function func, const char *file, int line);
lua_Function lua_stackedfunction (int level);
void lua_funcinfo (lua_Object func, char **source, int *linedefined);
void lua_funcinfo (lua_Object func, const char **source, int *linedefined);
int lua_currentline (lua_Function func);
char *lua_getobjname (lua_Object o, char **name);
const char *lua_getobjname (lua_Object o, const char **name);
lua_Object lua_getlocal (lua_Function func, int local_number, char **name);
lua_Object lua_getlocal (lua_Function func, int local_number,
const char **name);
int lua_setlocal (lua_Function func, int local_number);
int lua_nups (lua_Function func);

View File

@ -1,5 +1,5 @@
/*
** $Id: lualib.h,v 1.5 1999/01/08 16:47:44 roberto Exp roberto $
** $Id: lualib.h,v 1.6 1999/05/05 19:23:11 roberto Exp roberto $
** Lua standard libraries
** See Copyright Notice in lua.h
*/
@ -29,8 +29,8 @@ void lua_userinit (void);
/* Auxiliary functions (private) */
char *luaI_classend (char *p);
int luaI_singlematch (int c, char *p, char *ep);
const char *luaI_classend (const char *p);
int luaI_singlematch (int c, const char *p, const char *ep);
#endif

View File

@ -1,5 +1,5 @@
/*
** $Id: lundump.c,v 1.21 1999/07/02 19:34:26 lhf Exp $
** $Id: lundump.c,v 1.12 1999/07/08 12:43:23 roberto Exp roberto $
** load bytecodes from files
** See Copyright Notice in lua.h
*/
@ -50,7 +50,7 @@ static unsigned long LoadLong (ZIO* Z)
/*
* convert number from text
*/
double luaU_str2d (char* b, char* where)
double luaU_str2d (const char* b, const char* where)
{
int negative=(b[0]=='-');
double x=luaO_str2d(b+negative);
@ -76,7 +76,7 @@ static real LoadNumber (ZIO* Z, int native)
}
}
static int LoadInt (ZIO* Z, char* message)
static int LoadInt (ZIO* Z, const char* message)
{
unsigned long l=LoadLong(Z);
unsigned int i=l;
@ -169,7 +169,7 @@ static TProtoFunc* LoadFunction (ZIO* Z, int native)
static void LoadSignature (ZIO* Z)
{
char* s=SIGNATURE;
const char* s=SIGNATURE;
while (*s!=0 && ezgetc(Z)==*s)
++s;
if (*s!=0) luaL_verror("bad signature in %s",zname(Z));
@ -231,9 +231,9 @@ TProtoFunc* luaU_undump1 (ZIO* Z)
/*
* handle constants that cannot happen
*/
void luaU_badconstant (char* s, int i, TObject* o, TProtoFunc* tf)
void luaU_badconstant (const char* s, int i, const TObject* o, TProtoFunc* tf)
{
int t=ttype(o);
char* name= (t>0 || t<LUA_T_LINE) ? "?" : luaO_typenames[-t];
const char* name= (t>0 || t<LUA_T_LINE) ? "?" : luaO_typenames[-t];
luaL_verror("cannot %s constant #%d: type=%d [%s]" IN,s,i,t,name,INLOC);
}

View File

@ -1,5 +1,5 @@
/*
** $Id: lundump.h,v 1.15 1999/07/02 19:34:26 lhf Exp $
** $Id: lundump.h,v 1.9 1999/07/08 12:43:23 roberto Exp roberto $
** load pre-compiled Lua chunks
** See Copyright Notice in lua.h
*/
@ -11,9 +11,9 @@
#include "lzio.h"
TProtoFunc* luaU_undump1 (ZIO* Z); /* load one chunk */
void luaU_badconstant (char* s, int i, TObject* o, TProtoFunc* tf);
void luaU_badconstant (const char* s, int i, const TObject* o, TProtoFunc* tf);
/* handle cases that cannot happen */
double luaU_str2d (char* b, char* where);
double luaU_str2d (const char* b, const char* where);
/* convert number from text */
/* definitions for headers of binary files */

39
lvm.c
View File

@ -1,5 +1,5 @@
/*
** $Id: lvm.c,v 1.58 1999/06/22 20:37:23 roberto Exp roberto $
** $Id: lvm.c,v 1.59 1999/08/10 12:55:47 roberto Exp roberto $
** Lua virtual machine
** See Copyright Notice in lua.h
*/
@ -114,7 +114,7 @@ void luaV_closure (int nelems) {
*/
void luaV_gettable (void) {
TObject *table = L->stack.top-2;
TObject *im;
const TObject *im;
if (ttype(table) != LUA_T_ARRAY) { /* not a table, get gettable method */
im = luaT_getimbyObj(table, IM_GETTABLE);
if (ttype(im) == LUA_T_NIL)
@ -146,9 +146,9 @@ void luaV_gettable (void) {
/*
** Receives table at *t, index at *(t+1) and value at top.
*/
void luaV_settable (TObject *t) {
void luaV_settable (const TObject *t) {
struct Stack *S = &L->stack;
TObject *im;
const TObject *im;
if (ttype(t) != LUA_T_ARRAY) { /* not a table, get "settable" method */
im = luaT_getimbyObj(t, IM_SETTABLE);
if (ttype(im) == LUA_T_NIL)
@ -173,7 +173,7 @@ void luaV_settable (TObject *t) {
}
void luaV_rawsettable (TObject *t) {
void luaV_rawsettable (const TObject *t) {
if (ttype(t) != LUA_T_ARRAY)
lua_error("indexed expression not a table");
else {
@ -186,7 +186,7 @@ void luaV_rawsettable (TObject *t) {
void luaV_getglobal (TaggedString *ts) {
/* WARNING: caller must assure stack space */
TObject *value = &ts->u.s.globalval;
const TObject *value = &ts->u.s.globalval;
switch (ttype(value)) {
/* only userdata, tables and nil can have getglobal tag methods */
case LUA_T_USERDATA: case LUA_T_ARRAY: case LUA_T_NIL: {
@ -208,8 +208,8 @@ void luaV_getglobal (TaggedString *ts) {
void luaV_setglobal (TaggedString *ts) {
TObject *oldvalue = &ts->u.s.globalval;
TObject *im = luaT_getimbyObj(oldvalue, IM_SETGLOBAL);
const TObject *oldvalue = &ts->u.s.globalval;
const TObject *im = luaT_getimbyObj(oldvalue, IM_SETGLOBAL);
if (ttype(im) == LUA_T_NIL) /* is there a tag method? */
luaS_rawsetglobal(ts, --L->stack.top);
else {
@ -226,9 +226,9 @@ void luaV_setglobal (TaggedString *ts) {
}
static void call_binTM (IMS event, char *msg)
{
TObject *im = luaT_getimbyObj(L->stack.top-2, event);/* try first operand */
static void call_binTM (IMS event, const char *msg) {
/* try first operand */
const TObject *im = luaT_getimbyObj(L->stack.top-2, event);
if (ttype(im) == LUA_T_NIL) {
im = luaT_getimbyObj(L->stack.top-1, event); /* try second operand */
if (ttype(im) == LUA_T_NIL) {
@ -242,14 +242,12 @@ static void call_binTM (IMS event, char *msg)
}
static void call_arith (IMS event)
{
static void call_arith (IMS event) {
call_binTM(event, "unexpected type in arithmetic operation");
}
static int luaV_strcomp (char *l, long ll, char *r, long lr)
{
static int luaV_strcomp (const char *l, long ll, const char *r, long lr) {
for (;;) {
long temp = strcoll(l, r);
if (temp != 0) return temp;
@ -268,8 +266,8 @@ static int luaV_strcomp (char *l, long ll, char *r, long lr)
void luaV_comparison (lua_Type ttype_less, lua_Type ttype_equal,
lua_Type ttype_great, IMS op) {
struct Stack *S = &L->stack;
TObject *l = S->top-2;
TObject *r = S->top-1;
const TObject *l = S->top-2;
const TObject *r = S->top-1;
real result;
if (ttype(l) == LUA_T_NUMBER && ttype(r) == LUA_T_NUMBER)
result = nvalue(l)-nvalue(r);
@ -300,8 +298,7 @@ void luaV_pack (StkId firstel, int nvararg, TObject *tab) {
}
static void adjust_varargs (StkId first_extra_arg)
{
static void adjust_varargs (StkId first_extra_arg) {
TObject arg;
luaV_pack(first_extra_arg,
(L->stack.top-L->stack.stack)-first_extra_arg, &arg);
@ -318,8 +315,8 @@ static void adjust_varargs (StkId first_extra_arg)
*/
StkId luaV_execute (Closure *cl, TProtoFunc *tf, StkId base) {
struct Stack *S = &L->stack; /* to optimize */
register Byte *pc = tf->code;
TObject *consts = tf->consts;
register const Byte *pc = tf->code;
const TObject *consts = tf->consts;
if (L->callhook)
luaD_callHook(base, tf, 0);
luaD_checkstack((*pc++)+EXTRA_STACK);

6
lvm.h
View File

@ -1,5 +1,5 @@
/*
** $Id: lvm.h,v 1.7 1998/12/30 17:26:49 roberto Exp roberto $
** $Id: lvm.h,v 1.8 1999/02/08 17:07:59 roberto Exp roberto $
** Lua virtual machine
** See Copyright Notice in lua.h
*/
@ -22,8 +22,8 @@ int luaV_tonumber (TObject *obj);
int luaV_tostring (TObject *obj);
void luaV_setn (Hash *t, int val);
void luaV_gettable (void);
void luaV_settable (TObject *t);
void luaV_rawsettable (TObject *t);
void luaV_settable (const TObject *t);
void luaV_rawsettable (const TObject *t);
void luaV_getglobal (TaggedString *ts);
void luaV_setglobal (TaggedString *ts);
StkId luaV_execute (Closure *cl, TProtoFunc *tf, StkId base);

59
lzio.c
View File

@ -1,5 +1,5 @@
/*
** $Id: lzio.c,v 1.6 1999/03/04 14:49:18 roberto Exp roberto $
** $Id: lzio.c,v 1.7 1999/03/05 13:15:50 roberto Exp roberto $
** a generic input stream interface
** See Copyright Notice in lua.h
*/
@ -16,51 +16,48 @@
/* ----------------------------------------------------- memory buffers --- */
static int zmfilbuf (ZIO* z) {
return EOZ;
return EOZ;
}
ZIO* zmopen (ZIO* z, char* b, int size, char *name)
{
if (b==NULL) return NULL;
z->n=size;
z->p= (unsigned char *)b;
z->filbuf=zmfilbuf;
z->u=NULL;
z->name=name;
return z;
ZIO* zmopen (ZIO* z, const char* b, int size, const char *name) {
if (b==NULL) return NULL;
z->n = size;
z->p = (unsigned const char *)b;
z->filbuf = zmfilbuf;
z->u = NULL;
z->name = name;
return z;
}
/* ------------------------------------------------------------ strings --- */
ZIO* zsopen (ZIO* z, char* s, char *name)
{
if (s==NULL) return NULL;
return zmopen(z,s,strlen(s),name);
ZIO* zsopen (ZIO* z, const char* s, const char *name) {
if (s==NULL) return NULL;
return zmopen(z,s,strlen(s),name);
}
/* -------------------------------------------------------------- FILEs --- */
static int zffilbuf (ZIO* z) {
int n;
if (feof((FILE *)z->u)) return EOZ;
n=fread(z->buffer,1,ZBSIZE,z->u);
if (n==0) return EOZ;
z->n=n-1;
z->p=z->buffer;
return *(z->p++);
int n;
if (feof((FILE *)z->u)) return EOZ;
n = fread(z->buffer,1,ZBSIZE,z->u);
if (n==0) return EOZ;
z->n = n-1;
z->p = z->buffer;
return *(z->p++);
}
ZIO* zFopen (ZIO* z, FILE* f, char *name)
{
if (f==NULL) return NULL;
z->n=0;
z->p=z->buffer;
z->filbuf=zffilbuf;
z->u=f;
z->name=name;
return z;
ZIO* zFopen (ZIO* z, FILE* f, const char *name) {
if (f==NULL) return NULL;
z->n = 0;
z->p = z->buffer;
z->filbuf = zffilbuf;
z->u = f;
z->name = name;
return z;
}

20
lzio.h
View File

@ -1,5 +1,5 @@
/*
** $Id: lzio.h,v 1.3 1997/12/22 20:57:18 roberto Exp roberto $
** $Id: lzio.h,v 1.4 1998/01/09 14:57:43 roberto Exp roberto $
** Buffered streams
** See Copyright Notice in lua.h
*/
@ -22,9 +22,9 @@
typedef struct zio ZIO;
ZIO* zFopen (ZIO* z, FILE* f, char *name); /* open FILEs */
ZIO* zsopen (ZIO* z, char* s, char *name); /* string */
ZIO* zmopen (ZIO* z, char* b, int size, char *name); /* memory */
ZIO* zFopen (ZIO* z, FILE* f, const char *name); /* open FILEs */
ZIO* zsopen (ZIO* z, const char* s, const char *name); /* string */
ZIO* zmopen (ZIO* z, const char* b, int size, const char *name); /* memory */
int zread (ZIO* z, void* b, int n); /* read next n bytes */
@ -38,12 +38,12 @@ int zread (ZIO* z, void* b, int n); /* read next n bytes */
#define ZBSIZE 256 /* buffer size */
struct zio {
int n; /* bytes still unread */
unsigned char* p; /* current position in buffer */
int (*filbuf)(ZIO* z);
void* u; /* additional data */
char *name;
unsigned char buffer[ZBSIZE]; /* buffer */
int n; /* bytes still unread */
const unsigned char* p; /* current position in buffer */
int (*filbuf)(ZIO* z);
void* u; /* additional data */
const char *name;
unsigned char buffer[ZBSIZE]; /* buffer */
};