mirror of
https://github.com/lua/lua
synced 2024-12-24 03:16:50 +03:00
open functions are lua_Cfunctions
This commit is contained in:
parent
e9a3820370
commit
6d4db86888
24
lbaselib.c
24
lbaselib.c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
** $Id: lbaselib.c,v 1.27 2001/02/23 17:17:25 roberto Exp roberto $
|
||||
** $Id: lbaselib.c,v 1.28 2001/02/23 17:28:12 roberto Exp roberto $
|
||||
** Basic library
|
||||
** See Copyright Notice in lua.h
|
||||
*/
|
||||
@ -296,14 +296,23 @@ static int luaB_dofile (lua_State *L) {
|
||||
}
|
||||
|
||||
|
||||
static int aux_unpack (lua_State *L, int arg) {
|
||||
int n, i;
|
||||
luaL_checktype(L, arg, LUA_TTABLE);
|
||||
n = lua_getn(L, arg);
|
||||
luaL_checkstack(L, n, l_s("too many arguments"));
|
||||
for (i=1; i<=n; i++) /* push arg[1...n] */
|
||||
lua_rawgeti(L, arg, i);
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
static int luaB_call (lua_State *L) {
|
||||
int oldtop;
|
||||
const l_char *options = luaL_opt_string(L, 3, l_s(""));
|
||||
int err = 0; /* index of old error method */
|
||||
int i, status;
|
||||
int status;
|
||||
int n;
|
||||
luaL_checktype(L, 2, LUA_TTABLE);
|
||||
n = lua_getn(L, 2);
|
||||
if (!lua_isnull(L, 4)) { /* set new error method */
|
||||
lua_getglobal(L, LUA_ERRORMESSAGE);
|
||||
err = lua_gettop(L); /* get index */
|
||||
@ -313,9 +322,7 @@ static int luaB_call (lua_State *L) {
|
||||
oldtop = lua_gettop(L); /* top before function-call preparation */
|
||||
/* push function */
|
||||
lua_pushvalue(L, 1);
|
||||
luaL_checkstack(L, n, l_s("too many arguments"));
|
||||
for (i=0; i<n; i++) /* push arg[1...n] */
|
||||
lua_rawgeti(L, 2, i+1);
|
||||
n = aux_unpack(L, 2); /* push arg[1...n] */
|
||||
status = lua_call(L, n, LUA_MULTRET);
|
||||
if (err != 0) { /* restore old error method */
|
||||
lua_pushvalue(L, err);
|
||||
@ -676,10 +683,11 @@ static const luaL_reg base_funcs[] = {
|
||||
|
||||
|
||||
|
||||
LUALIB_API void lua_baselibopen (lua_State *L) {
|
||||
LUALIB_API int lua_baselibopen (lua_State *L) {
|
||||
luaL_openl(L, base_funcs);
|
||||
lua_pushliteral(L, LUA_VERSION);
|
||||
lua_setglobal(L, l_s("_VERSION"));
|
||||
deprecated_funcs(L);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
5
ldblib.c
5
ldblib.c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
** $Id: ldblib.c,v 1.32 2001/02/02 19:02:40 roberto Exp roberto $
|
||||
** $Id: ldblib.c,v 1.33 2001/02/23 17:17:25 roberto Exp roberto $
|
||||
** Interface from Lua to its debug API
|
||||
** See Copyright Notice in lua.h
|
||||
*/
|
||||
@ -182,7 +182,8 @@ static const luaL_reg dblib[] = {
|
||||
};
|
||||
|
||||
|
||||
LUALIB_API void lua_dblibopen (lua_State *L) {
|
||||
LUALIB_API int lua_dblibopen (lua_State *L) {
|
||||
luaL_openl(L, dblib);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
5
liolib.c
5
liolib.c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
** $Id: liolib.c,v 1.108 2001/02/23 17:17:25 roberto Exp roberto $
|
||||
** $Id: liolib.c,v 1.109 2001/02/23 17:28:12 roberto Exp roberto $
|
||||
** Standard I/O (and system) library
|
||||
** See Copyright Notice in lua.h
|
||||
*/
|
||||
@ -675,7 +675,7 @@ static const luaL_reg iolib[] = {
|
||||
};
|
||||
|
||||
|
||||
LUALIB_API void lua_iolibopen (lua_State *L) {
|
||||
LUALIB_API int lua_iolibopen (lua_State *L) {
|
||||
int iotag = lua_newtype(L, FILEHANDLE, LUA_TUSERDATA);
|
||||
lua_newtype(L, l_s("ClosedFileHandle"), LUA_TUSERDATA);
|
||||
luaL_openl(L, iolib);
|
||||
@ -688,5 +688,6 @@ LUALIB_API void lua_iolibopen (lua_State *L) {
|
||||
/* close files when collected */
|
||||
lua_pushcfunction(L, file_collect);
|
||||
lua_settagmethod(L, iotag, l_s("gc"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
** $Id: lmathlib.c,v 1.35 2001/02/22 18:59:59 roberto Exp roberto $
|
||||
** $Id: lmathlib.c,v 1.36 2001/02/23 17:17:25 roberto Exp roberto $
|
||||
** Standard mathematical library
|
||||
** See Copyright Notice in lua.h
|
||||
*/
|
||||
@ -228,11 +228,12 @@ static const luaL_reg mathlib[] = {
|
||||
/*
|
||||
** Open math library
|
||||
*/
|
||||
LUALIB_API void lua_mathlibopen (lua_State *L) {
|
||||
LUALIB_API int lua_mathlibopen (lua_State *L) {
|
||||
luaL_openl(L, mathlib);
|
||||
lua_pushcfunction(L, math_pow);
|
||||
lua_settagmethod(L, LUA_TNUMBER, l_s("pow"));
|
||||
lua_pushnumber(L, PI);
|
||||
lua_setglobal(L, l_s("PI"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
** $Id: lstrlib.c,v 1.65 2001/02/23 17:17:25 roberto Exp roberto $
|
||||
** $Id: lstrlib.c,v 1.66 2001/03/02 17:40:08 roberto Exp roberto $
|
||||
** Standard library for string operations and pattern-matching
|
||||
** See Copyright Notice in lua.h
|
||||
*/
|
||||
@ -652,6 +652,7 @@ static const luaL_reg strlib[] = {
|
||||
/*
|
||||
** Open string library
|
||||
*/
|
||||
LUALIB_API void lua_strlibopen (lua_State *L) {
|
||||
LUALIB_API int lua_strlibopen (lua_State *L) {
|
||||
luaL_openl(L, strlib);
|
||||
return 0;
|
||||
}
|
||||
|
18
ltests.c
18
ltests.c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
** $Id: ltests.c,v 1.72 2001/02/23 17:17:25 roberto Exp roberto $
|
||||
** $Id: ltests.c,v 1.73 2001/03/02 17:27:50 roberto Exp roberto $
|
||||
** Internal Module for Debugging of the Lua Implementation
|
||||
** See Copyright Notice in lua.h
|
||||
*/
|
||||
@ -417,15 +417,12 @@ static int newstate (lua_State *L) {
|
||||
}
|
||||
|
||||
static int loadlib (lua_State *L) {
|
||||
lua_State *L1 = (lua_State *)lua_touserdata(L, 1);
|
||||
switch (*luaL_check_string(L, 2)) {
|
||||
case l_c('m'): lua_mathlibopen(L1); break;
|
||||
case l_c('s'): lua_strlibopen(L1); break;
|
||||
case l_c('i'): lua_iolibopen(L1); break;
|
||||
case l_c('d'): lua_dblibopen(L1); break;
|
||||
case l_c('b'): lua_baselibopen(L1); break;
|
||||
default: luaL_argerror(L, 2, l_s("invalid option"));
|
||||
}
|
||||
lua_State *L1 = (lua_State *)(unsigned long)luaL_check_number(L, 1);
|
||||
lua_register(L1, "mathlibopen", lua_mathlibopen);
|
||||
lua_register(L1, "strlibopen", lua_strlibopen);
|
||||
lua_register(L1, "iolibopen", lua_iolibopen);
|
||||
lua_register(L1, "dblibopen", lua_dblibopen);
|
||||
lua_register(L1, "baselibopen", lua_baselibopen);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -451,6 +448,7 @@ static int doremote (lua_State *L) {
|
||||
int i = 0;
|
||||
while (!lua_isnull(L1, ++i))
|
||||
lua_pushstring(L, lua_tostring(L1, i));
|
||||
lua_pop(L1, i-1);
|
||||
return i-1;
|
||||
}
|
||||
}
|
||||
|
12
lualib.h
12
lualib.h
@ -1,5 +1,5 @@
|
||||
/*
|
||||
** $Id: lualib.h,v 1.18 2001/02/23 17:28:12 roberto Exp roberto $
|
||||
** $Id: lualib.h,v 1.19 2001/02/23 20:31:37 roberto Exp roberto $
|
||||
** Lua standard libraries
|
||||
** See Copyright Notice in lua.h
|
||||
*/
|
||||
@ -18,11 +18,11 @@
|
||||
|
||||
#define LUA_ALERT l_s("_ALERT")
|
||||
|
||||
LUALIB_API void lua_baselibopen (lua_State *L);
|
||||
LUALIB_API void lua_iolibopen (lua_State *L);
|
||||
LUALIB_API void lua_strlibopen (lua_State *L);
|
||||
LUALIB_API void lua_mathlibopen (lua_State *L);
|
||||
LUALIB_API void lua_dblibopen (lua_State *L);
|
||||
LUALIB_API int lua_baselibopen (lua_State *L);
|
||||
LUALIB_API int lua_iolibopen (lua_State *L);
|
||||
LUALIB_API int lua_strlibopen (lua_State *L);
|
||||
LUALIB_API int lua_mathlibopen (lua_State *L);
|
||||
LUALIB_API int lua_dblibopen (lua_State *L);
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user