String buffer refactoring, part 1.

Move string buffer handling to lj_buf.*.
Use common buffer resizing function.
This commit is contained in:
Mike Pall
2013-02-27 17:11:31 +01:00
parent d44337a566
commit 28cfcf7744
22 changed files with 197 additions and 184 deletions

27
src/lj_buf.h Normal file
View File

@@ -0,0 +1,27 @@
/*
** Buffer handling.
** Copyright (C) 2005-2013 Mike Pall. See Copyright Notice in luajit.h
*/
#ifndef _LJ_BUF_H
#define _LJ_BUF_H
#include "lj_obj.h"
/* Resizable string buffers. Struct definition in lj_obj.h. */
LJ_FUNC char *lj_buf_tmp(lua_State *L, MSize sz);
LJ_FUNC void lj_buf_grow(lua_State *L, SBuf *sb, MSize sz);
LJ_FUNC void lj_buf_shrink(lua_State *L, SBuf *sb);
#define lj_buf_init(sb) ((sb)->buf = NULL, (sb)->sz = 0)
#define lj_buf_reset(sb) ((sb)->n = 0)
#define lj_buf_free(g, sb) lj_mem_free(g, (void *)(sb)->buf, (sb)->sz)
static LJ_AINLINE char *lj_buf_need(lua_State *L, SBuf *sb, MSize sz)
{
if (LJ_UNLIKELY(sz > sb->sz))
lj_buf_grow(L, sb, sz);
return sb->buf;
}
#endif