From 16ddf86168998d500283e160977ef5ecea72c915 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Mon, 15 Aug 2005 11:12:32 -0300 Subject: [PATCH] luaL_openlib -> luaL_register and new function luaL_loadstring --- lauxlib.c | 20 ++++++++++++++++---- lauxlib.h | 23 ++++++++++++++++++++--- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/lauxlib.c b/lauxlib.c index 09402886..93cbff51 100644 --- a/lauxlib.c +++ b/lauxlib.c @@ -1,5 +1,5 @@ /* -** $Id: lauxlib.c,v 1.142 2005/08/09 12:30:19 roberto Exp roberto $ +** $Id: lauxlib.c,v 1.143 2005/08/10 18:47:09 roberto Exp roberto $ ** Auxiliary functions for building Lua libraries ** See Copyright Notice in lua.h */ @@ -235,7 +235,13 @@ LUALIB_API int luaL_callmeta (lua_State *L, int obj, const char *event) { } -LUALIB_API void luaL_openlib (lua_State *L, const char *libname, +LUALIB_API void (luaL_register) (lua_State *L, const char *libname, + const luaL_reg *l) { + luaI_openlib(L, libname, l, 0); +} + + +LUALIB_API void luaI_openlib (lua_State *L, const char *libname, const luaL_reg *l, int nup) { if (libname) { /* check whether lib already exists */ @@ -338,7 +344,7 @@ LUALIB_API const char *luaL_gsub (lua_State *L, const char *s, const char *p, luaL_addstring(&b, r); /* push replacement in place of pattern */ s = wild + l; /* continue after `p' */ } - luaL_addstring(&b, s); /* push last suffix (`n' already includes this) */ + luaL_addstring(&b, s); /* push last suffix */ luaL_pushresult(&b); return lua_tostring(L, -1); } @@ -446,7 +452,7 @@ LUALIB_API char *luaL_prepbuffer (luaL_Buffer *B) { LUALIB_API void luaL_addlstring (luaL_Buffer *B, const char *s, size_t l) { while (l--) - luaL_putchar(B, *s++); + luaL_addchar(B, *s++); } @@ -627,6 +633,12 @@ LUALIB_API int luaL_loadbuffer (lua_State *L, const char *buff, size_t size, } +LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s) { + return luaL_loadbuffer(L, s, strlen(s), s); +} + + + /* }====================================================== */ diff --git a/lauxlib.h b/lauxlib.h index 00042a9f..5cc0afba 100644 --- a/lauxlib.h +++ b/lauxlib.h @@ -1,5 +1,5 @@ /* -** $Id: lauxlib.h,v 1.79 2005/05/31 14:34:02 roberto Exp roberto $ +** $Id: lauxlib.h,v 1.80 2005/07/13 19:02:42 roberto Exp roberto $ ** Auxiliary functions for building Lua libraries ** See Copyright Notice in lua.h */ @@ -20,6 +20,10 @@ #define luaL_setn(L,i,j) ((void)0) /* no op! */ #endif +#if defined(LUA_COMPAT_OPENLIB) +#define luaI_openlib luaL_openlib +#endif + /* extra error code for `luaL_load' */ #define LUA_ERRFILE (LUA_ERRERR+1) @@ -31,8 +35,11 @@ typedef struct luaL_reg { } luaL_reg; -LUALIB_API void (luaL_openlib) (lua_State *L, const char *libname, + +LUALIB_API void (luaI_openlib) (lua_State *L, const char *libname, const luaL_reg *l, int nup); +LUALIB_API void (luaL_register) (lua_State *L, const char *libname, + const luaL_reg *l); LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e); LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e); LUALIB_API int (luaL_typerror) (lua_State *L, int narg, const char *tname); @@ -71,6 +78,7 @@ LUALIB_API void (luaL_setn) (lua_State *L, int t, int n); LUALIB_API int (luaL_loadfile) (lua_State *L, const char *filename); LUALIB_API int (luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz, const char *name); +LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s); LUALIB_API lua_State *(luaL_newstate) (void); @@ -84,6 +92,7 @@ LUALIB_API const char *(luaL_setfield) (lua_State *L, int idx, + /* ** =============================================================== ** some useful macros @@ -101,6 +110,11 @@ LUALIB_API const char *(luaL_setfield) (lua_State *L, int idx, #define luaL_typename(L,i) lua_typename(L, lua_type(L,(i))) +#define luaL_dofile(L, fn) (luaL_loadfile(L, fn) || lua_pcall(L, 0, 0, 0)) + +#define luaL_dostring(L, s) (luaL_loadstring(L, s) || lua_pcall(L, 0, 0, 0)) + + /* ** {====================================================== ** Generic Buffer manipulation @@ -116,10 +130,13 @@ typedef struct luaL_Buffer { char buffer[LUAL_BUFFERSIZE]; } luaL_Buffer; -#define luaL_putchar(B,c) \ +#define luaL_addchar(B,c) \ ((void)((B)->p < ((B)->buffer+LUAL_BUFFERSIZE) || luaL_prepbuffer(B)), \ (*(B)->p++ = (char)(c))) +/* compatibility only */ +#define luaL_putchar(B,c) luaL_addchar(B,c) + #define luaL_addsize(B,n) ((B)->p += (n)) LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B);