2021-03-25 01:21:31 +00:00
|
|
|
/*
|
|
|
|
** Buffer library.
|
|
|
|
** Copyright (C) 2005-2021 Mike Pall. See Copyright Notice in luajit.h
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define lib_buffer_c
|
|
|
|
#define LUA_LIB
|
|
|
|
|
|
|
|
#include "lua.h"
|
|
|
|
#include "lauxlib.h"
|
|
|
|
#include "lualib.h"
|
|
|
|
|
|
|
|
#include "lj_obj.h"
|
|
|
|
|
|
|
|
#if LJ_HASBUFFER
|
|
|
|
#include "lj_gc.h"
|
|
|
|
#include "lj_buf.h"
|
|
|
|
#include "lj_serialize.h"
|
|
|
|
#include "lj_lib.h"
|
|
|
|
|
|
|
|
/* ------------------------------------------------------------------------ */
|
|
|
|
|
|
|
|
#define LJLIB_MODULE_buffer
|
|
|
|
|
|
|
|
LJLIB_CF(buffer_encode)
|
|
|
|
{
|
|
|
|
cTValue *o = lj_lib_checkany(L, 1);
|
2021-05-31 22:55:51 +00:00
|
|
|
SBufExt sbx;
|
|
|
|
lj_bufx_init_borrow(L, &sbx, &G(L)->tmpbuf);
|
|
|
|
lj_serialize_put(&sbx, o);
|
|
|
|
setstrV(L, L->top++, lj_buf_str(L, (SBuf *)&sbx));
|
2021-03-25 01:21:31 +00:00
|
|
|
lj_gc_check(L);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
LJLIB_CF(buffer_decode)
|
|
|
|
{
|
|
|
|
GCstr *str = lj_lib_checkstr(L, 1);
|
2021-05-31 22:55:51 +00:00
|
|
|
SBufExt sbx;
|
|
|
|
lj_bufx_init_cow(L, &sbx, strdata(str), str->len);
|
|
|
|
/* No need to set sbx.cowref here. */
|
2021-03-25 01:21:31 +00:00
|
|
|
setnilV(L->top++);
|
2021-05-31 22:55:51 +00:00
|
|
|
lj_serialize_get(&sbx, L->top-1);
|
2021-03-25 01:21:31 +00:00
|
|
|
lj_gc_check(L);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* ------------------------------------------------------------------------ */
|
|
|
|
|
|
|
|
#include "lj_libdef.h"
|
|
|
|
|
|
|
|
int luaopen_string_buffer(lua_State *L)
|
|
|
|
{
|
|
|
|
LJ_LIB_REG(L, NULL, buffer);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|