From 118e9cd843d2956d64b86bfdd70f89919153e471 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Fri, 25 Oct 2002 18:31:28 -0300 Subject: new facility for dumping chunks --- lbaselib.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'lbaselib.c') diff --git a/lbaselib.c b/lbaselib.c index 1d8f8abf..4650b4b3 100644 --- a/lbaselib.c +++ b/lbaselib.c @@ -1,5 +1,5 @@ /* -** $Id: lbaselib.c,v 1.100 2002/10/22 19:41:08 roberto Exp roberto $ +** $Id: lbaselib.c,v 1.101 2002/10/25 20:05:28 roberto Exp roberto $ ** Basic library ** See Copyright Notice in lua.h */ @@ -271,6 +271,25 @@ static int luaB_loadstring (lua_State *L) { } +static int writer (lua_State *L, const void* b, size_t size, void* B) { + (void)L; + luaL_addlstring((luaL_Buffer*) B, b, size); + return 1; +} + + +static int luaB_stringdump (lua_State *L) { + luaL_Buffer b; + luaL_check_type(L, 1, LUA_TFUNCTION); + luaL_buffinit(L,&b); + if (!lua_dump(L, writer, &b)) + luaL_error(L, "unable to dump given function"); + luaL_pushresult(&b); + return 1; +} + + + static int luaB_loadfile (lua_State *L) { const char *fname = luaL_opt_string(L, 1, NULL); return passresults(L, luaL_loadfile(L, fname)); @@ -524,6 +543,7 @@ static const luaL_reg base_funcs[] = { {"collectgarbage", luaB_collectgarbage}, {"gcinfo", luaB_gcinfo}, {"loadfile", luaB_loadfile}, + {"stringdump", luaB_stringdump}, {"dofile", luaB_dofile}, {"loadstring", luaB_loadstring}, {"require", luaB_require}, -- cgit v1.2.3-55-g6feb