mirror of https://github.com/rusefi/lua.git
better error messages;
better names for some API functions.
This commit is contained in:
parent
9319735744
commit
42fa305649
33
fallback.c
33
fallback.c
|
@ -3,7 +3,7 @@
|
||||||
** TecCGraf - PUC-Rio
|
** TecCGraf - PUC-Rio
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *rcs_fallback="$Id: fallback.c,v 1.38 1997/04/02 23:04:12 roberto Exp roberto $";
|
char *rcs_fallback="$Id: fallback.c,v 2.1 1997/04/03 18:24:23 roberto Exp roberto $";
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -115,7 +115,7 @@ static int luaI_checkevent (char *name, char *list[])
|
||||||
{
|
{
|
||||||
int e = findstring(name, list);
|
int e = findstring(name, list);
|
||||||
if (e < 0)
|
if (e < 0)
|
||||||
luaL_verror("invalid event name `%s'", name);
|
luaL_verror("`%s' is not a valid event name", name);
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,17 +180,19 @@ int lua_newtag (void)
|
||||||
static void checktag (int tag)
|
static void checktag (int tag)
|
||||||
{
|
{
|
||||||
if (!(last_tag <= tag && tag <= 0))
|
if (!(last_tag <= tag && tag <= 0))
|
||||||
lua_error("invalid tag");
|
luaL_verror("%d is not a valid tag", tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
int luaI_userdatatag (int tag)
|
void luaI_realtag (int tag)
|
||||||
{
|
{
|
||||||
return (tag >= 0 || (last_tag <= tag && tag < LUA_T_NIL));
|
if (!(last_tag <= tag && tag < LUA_T_NIL))
|
||||||
|
luaL_verror("tag %d is not result of `newtag'", tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void luaI_settag (int tag, TObject *o)
|
void luaI_settag (int tag, TObject *o)
|
||||||
{
|
{
|
||||||
|
luaI_realtag(tag);
|
||||||
switch (ttype(o)) {
|
switch (ttype(o)) {
|
||||||
case LUA_T_ARRAY:
|
case LUA_T_ARRAY:
|
||||||
o->value.a->htag = tag;
|
o->value.a->htag = tag;
|
||||||
|
@ -199,7 +201,7 @@ void luaI_settag (int tag, TObject *o)
|
||||||
o->value.ts->tag = tag;
|
o->value.ts->tag = tag;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
lua_error("settag: cannot change tag of given object");
|
luaL_verror("cannot change tag of a %s", luaI_typenames[-ttype(o)]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,25 +225,26 @@ TObject *luaI_getim (int tag, IMS event)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void luaI_getintmethod (void)
|
void luaI_gettagmethod (void)
|
||||||
{
|
{
|
||||||
int t = (int)luaL_check_number(1, "getintmethod");
|
int t = (int)luaL_check_number(1, "gettagmethod");
|
||||||
int e = luaI_checkevent(luaL_check_string(2, "getintmethod"), luaI_eventname);
|
int e = luaI_checkevent(luaL_check_string(2, "gettagmethod"), luaI_eventname);
|
||||||
checktag(t);
|
checktag(t);
|
||||||
if (validevent(t, e))
|
if (validevent(t, e))
|
||||||
luaI_pushobject(&luaI_IMtable[-t].int_method[e]);
|
luaI_pushobject(&luaI_IMtable[-t].int_method[e]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void luaI_setintmethod (void)
|
void luaI_settagmethod (void)
|
||||||
{
|
{
|
||||||
int t = (int)luaL_check_number(1, "setintmethod");
|
int t = (int)luaL_check_number(1, "settagmethod");
|
||||||
int e = luaI_checkevent(luaL_check_string(2, "setintmethod"), luaI_eventname);
|
int e = luaI_checkevent(luaL_check_string(2, "settagmethod"), luaI_eventname);
|
||||||
lua_Object func = lua_getparam(3);
|
lua_Object func = lua_getparam(3);
|
||||||
checktag(t);
|
checktag(t);
|
||||||
if (!validevent(t, e))
|
if (!validevent(t, e))
|
||||||
lua_error("cannot change this internal method");
|
luaL_verror("cannot change internal method `%s' for tag %d",
|
||||||
luaL_arg_check(lua_isnil(func) || lua_isfunction(func), "setintmethod",
|
luaI_eventname[e], t);
|
||||||
|
luaL_arg_check(lua_isnil(func) || lua_isfunction(func), "settagmethod",
|
||||||
3, "function expected");
|
3, "function expected");
|
||||||
luaI_pushobject(&luaI_IMtable[-t].int_method[e]);
|
luaI_pushobject(&luaI_IMtable[-t].int_method[e]);
|
||||||
luaI_IMtable[-t].int_method[e] = *luaI_Address(func);
|
luaI_IMtable[-t].int_method[e] = *luaI_Address(func);
|
||||||
|
@ -352,7 +355,7 @@ void luaI_setfallback (void)
|
||||||
replace = typeFB;
|
replace = typeFB;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
lua_error("invalid fallback name");
|
luaL_verror("`%s' is not a valid fallback name", name);
|
||||||
replace = NULL; /* to avoid warnings */
|
replace = NULL; /* to avoid warnings */
|
||||||
}
|
}
|
||||||
if (oldfunc.ttype != LUA_T_NIL)
|
if (oldfunc.ttype != LUA_T_NIL)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
** $Id: fallback.h,v 1.20 1997/04/02 22:52:42 roberto Exp roberto $
|
** $Id: fallback.h,v 1.21 1997/04/02 23:04:12 roberto Exp roberto $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef fallback_h
|
#ifndef fallback_h
|
||||||
|
@ -46,13 +46,13 @@ void luaI_invalidaterefs (void);
|
||||||
char *luaI_travfallbacks (int (*fn)(TObject *));
|
char *luaI_travfallbacks (int (*fn)(TObject *));
|
||||||
|
|
||||||
void luaI_settag (int tag, TObject *o);
|
void luaI_settag (int tag, TObject *o);
|
||||||
int luaI_userdatatag (int tag);
|
void luaI_realtag (int tag);
|
||||||
TObject *luaI_getim (int tag, IMS event);
|
TObject *luaI_getim (int tag, IMS event);
|
||||||
#define luaI_getimbyObj(o,e) (luaI_getim(luaI_tag(o),(e)))
|
#define luaI_getimbyObj(o,e) (luaI_getim(luaI_tag(o),(e)))
|
||||||
TObject *luaI_geterrorim (void);
|
TObject *luaI_geterrorim (void);
|
||||||
int luaI_tag (TObject *o);
|
int luaI_tag (TObject *o);
|
||||||
void luaI_setintmethod (void);
|
void luaI_settagmethod (void);
|
||||||
void luaI_getintmethod (void);
|
void luaI_gettagmethod (void);
|
||||||
void luaI_seterrormethod (void);
|
void luaI_seterrormethod (void);
|
||||||
void luaI_initfallbacks (void);
|
void luaI_initfallbacks (void);
|
||||||
|
|
||||||
|
|
47
inout.c
47
inout.c
|
@ -5,7 +5,7 @@
|
||||||
** Also provides some predefined lua functions.
|
** Also provides some predefined lua functions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *rcs_inout="$Id: inout.c,v 2.53 1997/04/02 22:53:35 roberto Exp roberto $";
|
char *rcs_inout="$Id: inout.c,v 2.54 1997/04/02 23:04:12 roberto Exp roberto $";
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -28,7 +28,7 @@ Word lua_linenumber;
|
||||||
char *lua_parsedfile;
|
char *lua_parsedfile;
|
||||||
|
|
||||||
|
|
||||||
static char *typenames[] = { /* ORDER LUA_T */
|
char *luaI_typenames[] = { /* ORDER LUA_T */
|
||||||
"userdata", "line", "cmark", "mark", "function",
|
"userdata", "line", "cmark", "mark", "function",
|
||||||
"function", "table", "string", "number", "nil",
|
"function", "table", "string", "number", "nil",
|
||||||
NULL
|
NULL
|
||||||
|
@ -95,8 +95,7 @@ void lua_openstring (char *s)
|
||||||
char buff[SIZE_PREF+25];
|
char buff[SIZE_PREF+25];
|
||||||
lua_setinput(stringinput);
|
lua_setinput(stringinput);
|
||||||
st = s;
|
st = s;
|
||||||
strcpy(buff, "(dostring) >> ");
|
sprintf(buff, "(dostring) >> %.20s", s);
|
||||||
strncat(buff, s, SIZE_PREF);
|
|
||||||
if (strlen(s) > SIZE_PREF) strcat(buff, "...");
|
if (strlen(s) > SIZE_PREF) strcat(buff, "...");
|
||||||
lua_parsedfile = luaI_createfixedstring(buff)->str;
|
lua_parsedfile = luaI_createfixedstring(buff)->str;
|
||||||
}
|
}
|
||||||
|
@ -148,7 +147,7 @@ static char *tostring (lua_Object obj)
|
||||||
return lua_getstring(obj);
|
return lua_getstring(obj);
|
||||||
case LUA_T_ARRAY: case LUA_T_FUNCTION:
|
case LUA_T_ARRAY: case LUA_T_FUNCTION:
|
||||||
case LUA_T_CFUNCTION: case LUA_T_NIL:
|
case LUA_T_CFUNCTION: case LUA_T_NIL:
|
||||||
return typenames[-ttype(o)];
|
return luaI_typenames[-ttype(o)];
|
||||||
case LUA_T_USERDATA: {
|
case LUA_T_USERDATA: {
|
||||||
char *buff = luaI_buffer(100);
|
char *buff = luaI_buffer(100);
|
||||||
int size = o->value.ts->size;
|
int size = o->value.ts->size;
|
||||||
|
@ -181,7 +180,7 @@ static void luaI_type (void)
|
||||||
{
|
{
|
||||||
lua_Object o = lua_getparam(1);
|
lua_Object o = lua_getparam(1);
|
||||||
luaL_arg_check(o != LUA_NOOBJECT, "type", 1, "no argument");
|
luaL_arg_check(o != LUA_NOOBJECT, "type", 1, "no argument");
|
||||||
lua_pushstring(typenames[-ttype(luaI_Address(o))]);
|
lua_pushstring(luaI_typenames[-ttype(luaI_Address(o))]);
|
||||||
lua_pushnumber(lua_tag(o));
|
lua_pushnumber(lua_tag(o));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -219,12 +218,12 @@ static void luaI_setglobal (void)
|
||||||
lua_pushobject(value); /* return given value */
|
lua_pushobject(value); /* return given value */
|
||||||
}
|
}
|
||||||
|
|
||||||
static void luaI_basicsetglobal (void)
|
static void luaI_rawsetglobal (void)
|
||||||
{
|
{
|
||||||
lua_Object value = lua_getparam(2);
|
lua_Object value = lua_getparam(2);
|
||||||
luaL_arg_check(value != LUA_NOOBJECT, "basicsetglobal", 2, NULL);
|
luaL_arg_check(value != LUA_NOOBJECT, "rawsetglobal", 2, NULL);
|
||||||
lua_pushobject(value);
|
lua_pushobject(value);
|
||||||
lua_basicsetglobal(luaL_check_string(1, "basicsetglobal"));
|
lua_rawsetglobal(luaL_check_string(1, "rawsetglobal"));
|
||||||
lua_pushobject(value); /* return given value */
|
lua_pushobject(value); /* return given value */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,9 +232,9 @@ static void luaI_getglobal (void)
|
||||||
lua_pushobject(lua_getglobal(luaL_check_string(1, "getglobal")));
|
lua_pushobject(lua_getglobal(luaL_check_string(1, "getglobal")));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void luaI_basicgetglobal (void)
|
static void luaI_rawgetglobal (void)
|
||||||
{
|
{
|
||||||
lua_pushobject(lua_basicgetglobal(luaL_check_string(1, "basicgetglobal")));
|
lua_pushobject(lua_rawgetglobal(luaL_check_string(1, "rawgetglobal")));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void luatag (void)
|
static void luatag (void)
|
||||||
|
@ -291,28 +290,28 @@ static void luaIl_newtag (void)
|
||||||
lua_pushnumber(lua_newtag());
|
lua_pushnumber(lua_newtag());
|
||||||
}
|
}
|
||||||
|
|
||||||
static void basicindex (void)
|
static void rawgettable (void)
|
||||||
{
|
{
|
||||||
lua_Object t = lua_getparam(1);
|
lua_Object t = lua_getparam(1);
|
||||||
lua_Object i = lua_getparam(2);
|
lua_Object i = lua_getparam(2);
|
||||||
luaL_arg_check(t != LUA_NOOBJECT, "basicindex", 1, NULL);
|
luaL_arg_check(t != LUA_NOOBJECT, "rawgettable", 1, NULL);
|
||||||
luaL_arg_check(i != LUA_NOOBJECT, "basicindex", 2, NULL);
|
luaL_arg_check(i != LUA_NOOBJECT, "rawgettable", 2, NULL);
|
||||||
lua_pushobject(t);
|
lua_pushobject(t);
|
||||||
lua_pushobject(i);
|
lua_pushobject(i);
|
||||||
lua_pushobject(lua_basicindex());
|
lua_pushobject(lua_rawgettable());
|
||||||
}
|
}
|
||||||
|
|
||||||
static void basicstoreindex (void)
|
static void rawsettable (void)
|
||||||
{
|
{
|
||||||
lua_Object t = lua_getparam(1);
|
lua_Object t = lua_getparam(1);
|
||||||
lua_Object i = lua_getparam(2);
|
lua_Object i = lua_getparam(2);
|
||||||
lua_Object v = lua_getparam(3);
|
lua_Object v = lua_getparam(3);
|
||||||
luaL_arg_check(t != LUA_NOOBJECT && i != LUA_NOOBJECT && v != LUA_NOOBJECT,
|
luaL_arg_check(t != LUA_NOOBJECT && i != LUA_NOOBJECT && v != LUA_NOOBJECT,
|
||||||
"basicindex", 0, NULL);
|
"rawsettable", 0, NULL);
|
||||||
lua_pushobject(t);
|
lua_pushobject(t);
|
||||||
lua_pushobject(i);
|
lua_pushobject(i);
|
||||||
lua_pushobject(v);
|
lua_pushobject(v);
|
||||||
lua_basicstoreindex();
|
lua_rawsettable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -325,10 +324,6 @@ static struct {
|
||||||
lua_CFunction func;
|
lua_CFunction func;
|
||||||
} int_funcs[] = {
|
} int_funcs[] = {
|
||||||
{"assert", luaI_assert},
|
{"assert", luaI_assert},
|
||||||
{"basicgetglobal", luaI_basicgetglobal},
|
|
||||||
{"basicindex", basicindex},
|
|
||||||
{"basicsetglobal", luaI_basicsetglobal},
|
|
||||||
{"basicstoreindex", basicstoreindex},
|
|
||||||
{"call", luaI_call},
|
{"call", luaI_call},
|
||||||
{"dofile", lua_internaldofile},
|
{"dofile", lua_internaldofile},
|
||||||
{"dostring", lua_internaldostring},
|
{"dostring", lua_internaldostring},
|
||||||
|
@ -338,11 +333,15 @@ static struct {
|
||||||
{"next", lua_next},
|
{"next", lua_next},
|
||||||
{"nextvar", luaI_nextvar},
|
{"nextvar", luaI_nextvar},
|
||||||
{"print", luaI_print},
|
{"print", luaI_print},
|
||||||
|
{"rawgetglobal", luaI_rawgetglobal},
|
||||||
|
{"rawgettable", rawgettable},
|
||||||
|
{"rawsetglobal", luaI_rawsetglobal},
|
||||||
|
{"rawsettable", rawsettable},
|
||||||
{"seterrormethod", luaI_seterrormethod},
|
{"seterrormethod", luaI_seterrormethod},
|
||||||
{"setfallback", luaI_setfallback},
|
{"setfallback", luaI_setfallback},
|
||||||
{"setglobal", luaI_setglobal},
|
{"setglobal", luaI_setglobal},
|
||||||
{"setintmethod", luaI_setintmethod},
|
{"settagmethod", luaI_settagmethod},
|
||||||
{"getintmethod", luaI_getintmethod},
|
{"gettagmethod", luaI_gettagmethod},
|
||||||
{"settag", luaIl_settag},
|
{"settag", luaIl_settag},
|
||||||
{"tonumber", lua_obj2number},
|
{"tonumber", lua_obj2number},
|
||||||
{"tostring", luaI_tostring},
|
{"tostring", luaI_tostring},
|
||||||
|
|
12
iolib.c
12
iolib.c
|
@ -33,7 +33,7 @@ static void pushresult (int i)
|
||||||
#ifndef NOSTRERROR
|
#ifndef NOSTRERROR
|
||||||
lua_pushstring(strerror(errno));
|
lua_pushstring(strerror(errno));
|
||||||
#else
|
#else
|
||||||
lua_pushstring("system unable to define the error");
|
lua_pushstring("O.S. unable to define the error");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@ static void io_read (void)
|
||||||
}
|
}
|
||||||
else if (*p == '}') {
|
else if (*p == '}') {
|
||||||
if (inskip == 0)
|
if (inskip == 0)
|
||||||
lua_error("unbalanced `{...}' in read pattern");
|
lua_error("unbalanced braces in read pattern");
|
||||||
inskip--;
|
inskip--;
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
|
@ -248,7 +248,7 @@ static void lua_printstack (FILE *f)
|
||||||
fprintf(f, "function %s", name);
|
fprintf(f, "function %s", name);
|
||||||
break;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
fprintf(f, "`%s' fallback", name);
|
fprintf(f, "`%s' iternal method", name);
|
||||||
break;
|
break;
|
||||||
default: {
|
default: {
|
||||||
char *filename;
|
char *filename;
|
||||||
|
@ -289,7 +289,7 @@ static void getbyte (void)
|
||||||
else {
|
else {
|
||||||
i--;
|
i--;
|
||||||
if (0 <= i && i < lua_getbindatasize(ud))
|
if (0 <= i && i < lua_getbindatasize(ud))
|
||||||
lua_pushnumber(*(((char *)lua_getbinarydata(ud))+i));
|
lua_pushnumber(*(((char *)lua_getbindata(ud))+i));
|
||||||
else
|
else
|
||||||
lua_pushnil();
|
lua_pushnil();
|
||||||
}
|
}
|
||||||
|
@ -307,7 +307,7 @@ static void createuserdata (void)
|
||||||
lua_beginblock();
|
lua_beginblock();
|
||||||
lua_pushobject(t);
|
lua_pushobject(t);
|
||||||
lua_pushnumber(i+1);
|
lua_pushnumber(i+1);
|
||||||
o = lua_basicindex();
|
o = lua_rawgettable();
|
||||||
if (lua_isnil(o)) {
|
if (lua_isnil(o)) {
|
||||||
lua_endblock();
|
lua_endblock();
|
||||||
break;
|
break;
|
||||||
|
@ -317,7 +317,7 @@ static void createuserdata (void)
|
||||||
luaI_addchar(lua_getnumber(o));
|
luaI_addchar(lua_getnumber(o));
|
||||||
lua_endblock();
|
lua_endblock();
|
||||||
}
|
}
|
||||||
lua_pushbinarydata(luaI_addchar(0), i, tag);
|
lua_pushbindata(luaI_addchar(0), i, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
6
lua.c
6
lua.c
|
@ -3,7 +3,7 @@
|
||||||
** Linguagem para Usuarios de Aplicacao
|
** Linguagem para Usuarios de Aplicacao
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *rcs_lua="$Id: lua.c,v 1.13 1996/07/06 20:20:35 roberto Exp roberto $";
|
char *rcs_lua="$Id: lua.c,v 1.14 1996/09/24 17:30:28 roberto Exp roberto $";
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -59,8 +59,8 @@ int main (int argc, char *argv[])
|
||||||
result = lua_dofile (argv[i]);
|
result = lua_dofile (argv[i]);
|
||||||
if (result) {
|
if (result) {
|
||||||
if (result == 2) {
|
if (result == 2) {
|
||||||
fprintf(stderr, "lua: cannot execute file `%s' - ", argv[i]);
|
fprintf(stderr, "lua: cannot execute file ");
|
||||||
perror(NULL);
|
perror(argv[i]);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
30
lua.h
30
lua.h
|
@ -2,7 +2,7 @@
|
||||||
** LUA - An Extensible Extension Language
|
** LUA - An Extensible Extension Language
|
||||||
** TeCGraf: Grupo de Tecnologia em Computacao Grafica, PUC-Rio, Brazil
|
** TeCGraf: Grupo de Tecnologia em Computacao Grafica, PUC-Rio, Brazil
|
||||||
** e-mail: lua@tecgraf.puc-rio.br
|
** e-mail: lua@tecgraf.puc-rio.br
|
||||||
** $Id: lua.h,v 3.42 1997/04/02 23:04:12 roberto Exp roberto $
|
** $Id: lua.h,v 4.1 1997/04/03 18:26:08 roberto Exp roberto $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,9 +19,8 @@
|
||||||
typedef void (*lua_CFunction) (void);
|
typedef void (*lua_CFunction) (void);
|
||||||
typedef unsigned int lua_Object;
|
typedef unsigned int lua_Object;
|
||||||
|
|
||||||
lua_Object lua_setfallback (char *event, lua_CFunction fallback);
|
void lua_settagmethod (int tag, char *event, lua_CFunction method);
|
||||||
void lua_setintmethod (int tag, char *event, lua_CFunction method);
|
void lua_gettagmethod (int tag, char *event); /* out: method */
|
||||||
void lua_getintmethod (int tag, char *event); /* out: method */
|
|
||||||
void lua_seterrormethod (lua_CFunction method);
|
void lua_seterrormethod (lua_CFunction method);
|
||||||
|
|
||||||
int lua_newtag (void);
|
int lua_newtag (void);
|
||||||
|
@ -53,26 +52,26 @@ int lua_isfunction (lua_Object object);
|
||||||
float lua_getnumber (lua_Object object);
|
float lua_getnumber (lua_Object object);
|
||||||
char *lua_getstring (lua_Object object);
|
char *lua_getstring (lua_Object object);
|
||||||
lua_CFunction lua_getcfunction (lua_Object object);
|
lua_CFunction lua_getcfunction (lua_Object object);
|
||||||
void *lua_getbinarydata (lua_Object object);
|
void *lua_getbindata (lua_Object object);
|
||||||
int lua_getbindatasize (lua_Object object);
|
int lua_getbindatasize (lua_Object object);
|
||||||
|
|
||||||
void lua_pushnil (void);
|
void lua_pushnil (void);
|
||||||
void lua_pushnumber (float n);
|
void lua_pushnumber (float n);
|
||||||
void lua_pushstring (char *s);
|
void lua_pushstring (char *s);
|
||||||
void lua_pushcfunction (lua_CFunction fn);
|
void lua_pushcfunction (lua_CFunction fn);
|
||||||
void lua_pushbinarydata (void *buff, int size, int tag);
|
void lua_pushbindata (void *buff, int size, int tag);
|
||||||
void lua_pushusertag (void *u, int tag);
|
void lua_pushusertag (void *u, int tag);
|
||||||
void lua_pushobject (lua_Object object);
|
void lua_pushobject (lua_Object object);
|
||||||
|
|
||||||
lua_Object lua_getglobal (char *name);
|
lua_Object lua_getglobal (char *name);
|
||||||
lua_Object lua_basicgetglobal (char *name);
|
lua_Object lua_rawgetglobal (char *name);
|
||||||
void lua_setglobal (char *name); /* In: value */
|
void lua_setglobal (char *name); /* In: value */
|
||||||
void lua_basicsetglobal (char *name); /* In: value */
|
void lua_rawsetglobal (char *name); /* In: value */
|
||||||
|
|
||||||
void lua_storesubscript (void); /* In: table, index, value */
|
void lua_settable (void); /* In: table, index, value */
|
||||||
void lua_basicstoreindex (void); /* In: table, index, value */
|
void lua_rawsettable (void); /* In: table, index, value */
|
||||||
lua_Object lua_getsubscript (void); /* In: table, index */
|
lua_Object lua_gettable (void); /* In: table, index */
|
||||||
lua_Object lua_basicindex (void); /* In: table, index */
|
lua_Object lua_rawgettable (void); /* In: table, index */
|
||||||
|
|
||||||
int lua_tag (lua_Object object);
|
int lua_tag (lua_Object object);
|
||||||
|
|
||||||
|
@ -98,6 +97,8 @@ lua_Object lua_createtable (void);
|
||||||
/* =============================================================== */
|
/* =============================================================== */
|
||||||
/* for compatibility with old versions. Avoid using these macros/functions */
|
/* for compatibility with old versions. Avoid using these macros/functions */
|
||||||
|
|
||||||
|
lua_Object lua_setfallback (char *event, lua_CFunction fallback);
|
||||||
|
|
||||||
#define lua_storeglobal(n) lua_setglobal(n)
|
#define lua_storeglobal(n) lua_setglobal(n)
|
||||||
#define lua_type(o) (lua_tag(o))
|
#define lua_type(o) (lua_tag(o))
|
||||||
|
|
||||||
|
@ -111,9 +112,10 @@ void *lua_getuserdata (lua_Object object);
|
||||||
|
|
||||||
#define lua_pushliteral(o) lua_pushstring(o)
|
#define lua_pushliteral(o) lua_pushstring(o)
|
||||||
|
|
||||||
#define lua_getindexed(o,n) (lua_pushobject(o), lua_pushnumber(n), lua_getsubscript())
|
#define lua_getindexed(o,n) (lua_pushobject(o), lua_pushnumber(n), lua_gettable())
|
||||||
#define lua_getfield(o,f) (lua_pushobject(o), lua_pushliteral(f), lua_getsubscript())
|
#define lua_getfield(o,f) (lua_pushobject(o), lua_pushliteral(f), lua_gettable())
|
||||||
|
|
||||||
#define lua_copystring(o) (strdup(lua_getstring(o)))
|
#define lua_copystring(o) (strdup(lua_getstring(o)))
|
||||||
|
|
||||||
|
#define lua_getsubscript lua_gettable
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
** Mathematics library to LUA
|
** Mathematics library to LUA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *rcs_mathlib="$Id: mathlib.c,v 1.20 1997/03/18 15:30:50 roberto Exp roberto $";
|
char *rcs_mathlib="$Id: mathlib.c,v 1.21 1997/03/21 18:37:28 roberto Exp roberto $";
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
@ -210,6 +210,6 @@ static struct luaL_reg mathlib[] = {
|
||||||
void mathlib_open (void)
|
void mathlib_open (void)
|
||||||
{
|
{
|
||||||
luaL_openlib(mathlib, (sizeof(mathlib)/sizeof(mathlib[0])));
|
luaL_openlib(mathlib, (sizeof(mathlib)/sizeof(mathlib[0])));
|
||||||
lua_setintmethod(0, "pow", math_pow);
|
lua_settagmethod(0, "pow", math_pow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
41
opcode.c
41
opcode.c
|
@ -3,7 +3,7 @@
|
||||||
** TecCGraf - PUC-Rio
|
** TecCGraf - PUC-Rio
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *rcs_opcode="$Id: opcode.c,v 3.93 1997/04/02 23:04:12 roberto Exp roberto $";
|
char *rcs_opcode="$Id: opcode.c,v 4.1 1997/04/03 18:27:06 roberto Exp roberto $";
|
||||||
|
|
||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -19,6 +19,7 @@ char *rcs_opcode="$Id: opcode.c,v 3.93 1997/04/02 23:04:12 roberto Exp roberto $
|
||||||
#include "lua.h"
|
#include "lua.h"
|
||||||
#include "fallback.h"
|
#include "fallback.h"
|
||||||
#include "undump.h"
|
#include "undump.h"
|
||||||
|
#include "auxlib.h"
|
||||||
|
|
||||||
#define tonumber(o) ((ttype(o) != LUA_T_NUMBER) && (lua_tonumber(o) != 0))
|
#define tonumber(o) ((ttype(o) != LUA_T_NUMBER) && (lua_tonumber(o) != 0))
|
||||||
#define tostring(o) ((ttype(o) != LUA_T_STRING) && (lua_tostring(o) != 0))
|
#define tostring(o) ((ttype(o) != LUA_T_STRING) && (lua_tostring(o) != 0))
|
||||||
|
@ -340,11 +341,11 @@ static void pushsubscript (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
lua_Object lua_basicindex (void)
|
lua_Object lua_rawgettable (void)
|
||||||
{
|
{
|
||||||
adjustC(2);
|
adjustC(2);
|
||||||
if (ttype(top-2) != LUA_T_ARRAY)
|
if (ttype(top-2) != LUA_T_ARRAY)
|
||||||
lua_error("indexed expression not a table in basic indexing");
|
lua_error("indexed expression not a table in raw gettable");
|
||||||
else {
|
else {
|
||||||
TObject *h = lua_hashget(avalue(top-2), top-1);
|
TObject *h = lua_hashget(avalue(top-2), top-1);
|
||||||
--top;
|
--top;
|
||||||
|
@ -360,7 +361,7 @@ lua_Object lua_basicindex (void)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Function to store indexed based on values at the top
|
** Function to store indexed based on values at the top
|
||||||
** mode = 0: basic store (without internal methods)
|
** mode = 0: raw store (without internal methods)
|
||||||
** mode = 1: normal store (with internal methods)
|
** mode = 1: normal store (with internal methods)
|
||||||
** mode = 2: "deep stack" store (with internal methods)
|
** mode = 2: "deep stack" store (with internal methods)
|
||||||
*/
|
*/
|
||||||
|
@ -656,14 +657,14 @@ lua_Object lua_setfallback (char *name, lua_CFunction fallback)
|
||||||
return (Ref(top-1));
|
return (Ref(top-1));
|
||||||
}
|
}
|
||||||
|
|
||||||
void lua_getintmethod (int tag, char *event)
|
void lua_gettagmethod (int tag, char *event)
|
||||||
{
|
{
|
||||||
lua_pushnumber(tag);
|
lua_pushnumber(tag);
|
||||||
lua_pushstring(event);
|
lua_pushstring(event);
|
||||||
do_unprotectedrun(luaI_getintmethod, 2, 1);
|
do_unprotectedrun(luaI_gettagmethod, 2, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lua_setintmethod (int tag, char *event, lua_CFunction method)
|
void lua_settagmethod (int tag, char *event, lua_CFunction method)
|
||||||
{
|
{
|
||||||
lua_pushnumber(tag);
|
lua_pushnumber(tag);
|
||||||
lua_pushstring(event);
|
lua_pushstring(event);
|
||||||
|
@ -671,7 +672,7 @@ void lua_setintmethod (int tag, char *event, lua_CFunction method)
|
||||||
lua_pushcfunction (method);
|
lua_pushcfunction (method);
|
||||||
else
|
else
|
||||||
lua_pushnil();
|
lua_pushnil();
|
||||||
do_unprotectedrun(luaI_setintmethod, 3, 1);
|
do_unprotectedrun(luaI_settagmethod, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lua_seterrormethod (lua_CFunction method)
|
void lua_seterrormethod (lua_CFunction method)
|
||||||
|
@ -685,7 +686,7 @@ void lua_seterrormethod (lua_CFunction method)
|
||||||
** API: receives on the stack the table and the index.
|
** API: receives on the stack the table and the index.
|
||||||
** returns the value.
|
** returns the value.
|
||||||
*/
|
*/
|
||||||
lua_Object lua_getsubscript (void)
|
lua_Object lua_gettable (void)
|
||||||
{
|
{
|
||||||
adjustC(2);
|
adjustC(2);
|
||||||
pushsubscript();
|
pushsubscript();
|
||||||
|
@ -729,13 +730,13 @@ void lua_settag (int tag)
|
||||||
/*
|
/*
|
||||||
** API: receives on the stack the table, the index, and the new value.
|
** API: receives on the stack the table, the index, and the new value.
|
||||||
*/
|
*/
|
||||||
void lua_storesubscript (void)
|
void lua_settable (void)
|
||||||
{
|
{
|
||||||
adjustC(3);
|
adjustC(3);
|
||||||
storesubscript(top-3, 1);
|
storesubscript(top-3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void lua_basicstoreindex (void)
|
void lua_rawsettable (void)
|
||||||
{
|
{
|
||||||
adjustC(3);
|
adjustC(3);
|
||||||
storesubscript(top-3, 0);
|
storesubscript(top-3, 0);
|
||||||
|
@ -825,7 +826,7 @@ char *lua_getstring (lua_Object object)
|
||||||
else return (svalue(Address(object)));
|
else return (svalue(Address(object)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void *lua_getbinarydata (lua_Object object)
|
void *lua_getbindata (lua_Object object)
|
||||||
{
|
{
|
||||||
if (object == LUA_NOOBJECT || ttype(Address(object)) != LUA_T_USERDATA)
|
if (object == LUA_NOOBJECT || ttype(Address(object)) != LUA_T_USERDATA)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -834,7 +835,7 @@ void *lua_getbinarydata (lua_Object object)
|
||||||
|
|
||||||
void *lua_getuserdata (lua_Object object)
|
void *lua_getuserdata (lua_Object object)
|
||||||
{
|
{
|
||||||
void *add = lua_getbinarydata(object);
|
void *add = lua_getbindata(object);
|
||||||
if (add == NULL) return NULL;
|
if (add == NULL) return NULL;
|
||||||
else return *(void **)add;
|
else return *(void **)add;
|
||||||
}
|
}
|
||||||
|
@ -875,7 +876,7 @@ void lua_pushref (int ref)
|
||||||
{
|
{
|
||||||
TObject *o = luaI_getref(ref);
|
TObject *o = luaI_getref(ref);
|
||||||
if (o == NULL)
|
if (o == NULL)
|
||||||
lua_error("access to invalid (possibly garbage collected) reference");
|
lua_error("access to invalid reference (possibly garbage collected)");
|
||||||
luaI_pushobject(o);
|
luaI_pushobject(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -900,7 +901,7 @@ lua_Object lua_getglobal (char *name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
lua_Object lua_basicgetglobal (char *name)
|
lua_Object lua_rawgetglobal (char *name)
|
||||||
{
|
{
|
||||||
adjustC(0);
|
adjustC(0);
|
||||||
*top = lua_table[luaI_findsymbolbyname(name)].object;
|
*top = lua_table[luaI_findsymbolbyname(name)].object;
|
||||||
|
@ -938,7 +939,7 @@ void lua_setglobal (char *name)
|
||||||
setglobal(luaI_findsymbolbyname(name));
|
setglobal(luaI_findsymbolbyname(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void lua_basicsetglobal (char *name)
|
void lua_rawsetglobal (char *name)
|
||||||
{
|
{
|
||||||
Word n = luaI_findsymbolbyname(name);
|
Word n = luaI_findsymbolbyname(name);
|
||||||
adjustC(1);
|
adjustC(1);
|
||||||
|
@ -989,13 +990,13 @@ void lua_pushcfunction (lua_CFunction fn)
|
||||||
incr_top;
|
incr_top;
|
||||||
}
|
}
|
||||||
|
|
||||||
void lua_pushbinarydata (void *buff, int size, int tag)
|
void lua_pushbindata (void *buff, int size, int tag)
|
||||||
{
|
{
|
||||||
if (buff == NULL)
|
if (buff == NULL)
|
||||||
ttype(top) = LUA_T_NIL;
|
ttype(top) = LUA_T_NIL;
|
||||||
else {
|
else {
|
||||||
if (!luaI_userdatatag(tag))
|
if (tag < 0)
|
||||||
lua_error("invalid tag for userdata");
|
luaI_realtag(tag);
|
||||||
tsvalue(top) = luaI_createuserdata(buff, size, tag);
|
tsvalue(top) = luaI_createuserdata(buff, size, tag);
|
||||||
ttype(top) = LUA_T_USERDATA;
|
ttype(top) = LUA_T_USERDATA;
|
||||||
}
|
}
|
||||||
|
@ -1007,7 +1008,7 @@ void lua_pushbinarydata (void *buff, int size, int tag)
|
||||||
*/
|
*/
|
||||||
void lua_pushusertag (void *u, int tag)
|
void lua_pushusertag (void *u, int tag)
|
||||||
{
|
{
|
||||||
lua_pushbinarydata(&u, sizeof(void *), tag);
|
lua_pushbindata(&u, sizeof(void *), tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
4
opcode.h
4
opcode.h
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
** TeCGraf - PUC-Rio
|
** TeCGraf - PUC-Rio
|
||||||
** $Id: opcode.h,v 3.30 1997/03/20 19:20:43 roberto Exp roberto $
|
** $Id: opcode.h,v 3.31 1997/03/31 14:02:58 roberto Exp roberto $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef opcode_h
|
#ifndef opcode_h
|
||||||
|
@ -35,6 +35,8 @@ typedef enum
|
||||||
#define NUM_TYPES 10
|
#define NUM_TYPES 10
|
||||||
|
|
||||||
|
|
||||||
|
extern char *luaI_typenames[];
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
/* name parm before after side effect
|
/* name parm before after side effect
|
||||||
-----------------------------------------------------------------------------*/
|
-----------------------------------------------------------------------------*/
|
||||||
|
|
22
strlib.c
22
strlib.c
|
@ -3,7 +3,7 @@
|
||||||
** String library to LUA
|
** String library to LUA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
char *rcs_strlib="$Id: strlib.c,v 1.37 1997/03/18 15:30:50 roberto Exp roberto $";
|
char *rcs_strlib="$Id: strlib.c,v 1.38 1997/03/26 22:23:15 roberto Exp roberto $";
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -84,7 +84,7 @@ static void str_tok (void)
|
||||||
lua_pushobject(t);
|
lua_pushobject(t);
|
||||||
lua_pushnumber(i++);
|
lua_pushnumber(i++);
|
||||||
lua_pushstring(s1);
|
lua_pushstring(s1);
|
||||||
lua_storesubscript();
|
lua_settable();
|
||||||
s1 = NULL; /* prepare for next strtok */
|
s1 = NULL; /* prepare for next strtok */
|
||||||
}
|
}
|
||||||
lua_pushobject(t);
|
lua_pushobject(t);
|
||||||
|
@ -121,10 +121,10 @@ static void str_sub (void)
|
||||||
*/
|
*/
|
||||||
static void str_lower (void)
|
static void str_lower (void)
|
||||||
{
|
{
|
||||||
char *s = luaL_check_string(1, "strlower");
|
char *s;
|
||||||
luaI_emptybuff();
|
luaI_emptybuff();
|
||||||
while (*s)
|
for (s = luaL_check_string(1, "strlower"); *s; s++)
|
||||||
luaI_addchar(tolower((unsigned char)*s++));
|
luaI_addchar(tolower((unsigned char)*s));
|
||||||
lua_pushstring(luaI_addchar(0));
|
lua_pushstring(luaI_addchar(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,10 +133,10 @@ static void str_lower (void)
|
||||||
*/
|
*/
|
||||||
static void str_upper (void)
|
static void str_upper (void)
|
||||||
{
|
{
|
||||||
char *s = luaL_check_string(1, "strupper");
|
char *s;
|
||||||
luaI_emptybuff();
|
luaI_emptybuff();
|
||||||
while (*s)
|
for (s = luaL_check_string(1, "strupper"); *s; s++)
|
||||||
luaI_addchar(toupper((unsigned char)*s++));
|
luaI_addchar(toupper((unsigned char)*s));
|
||||||
lua_pushstring(luaI_addchar(0));
|
lua_pushstring(luaI_addchar(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,11 +177,11 @@ char *luaL_item_end (char *p)
|
||||||
switch (*p++) {
|
switch (*p++) {
|
||||||
case '\0': return p-1;
|
case '\0': return p-1;
|
||||||
case ESC:
|
case ESC:
|
||||||
if (*p == 0) lua_error("incorrect pattern");
|
if (*p == 0) luaL_verror("incorrect pattern (ends with `%c')", ESC);
|
||||||
return p+1;
|
return p+1;
|
||||||
case '[': {
|
case '[': {
|
||||||
char *end = bracket_end(p);
|
char *end = bracket_end(p);
|
||||||
if (end == NULL) lua_error("incorrect pattern");
|
if (end == NULL) lua_error("incorrect pattern (missing `]')");
|
||||||
return end+1;
|
return end+1;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -492,7 +492,7 @@ static void str_format (void)
|
||||||
char *initf = strfrmt-1; /* -1 to include % */
|
char *initf = strfrmt-1; /* -1 to include % */
|
||||||
strfrmt = match(strfrmt, "[-+ #]*(%d*)%.?(%d*)", 0);
|
strfrmt = match(strfrmt, "[-+ #]*(%d*)%.?(%d*)", 0);
|
||||||
if (capture[0].len > 3 || capture[1].len > 3) /* < 1000? */
|
if (capture[0].len > 3 || capture[1].len > 3) /* < 1000? */
|
||||||
lua_error("invalid format (width/precision too long)");
|
lua_error("invalid format (width or precision too long)");
|
||||||
strncpy(form, initf, strfrmt-initf+1); /* +1 to include convertion */
|
strncpy(form, initf, strfrmt-initf+1); /* +1 to include convertion */
|
||||||
form[strfrmt-initf+1] = 0;
|
form[strfrmt-initf+1] = 0;
|
||||||
buff = openspace(1000); /* to store the formated value */
|
buff = openspace(1000); /* to store the formated value */
|
||||||
|
|
Loading…
Reference in New Issue