17d8dd8d9SRob Norris // SPDX-License-Identifier: MIT 2d99a0153SChris Williamson /* 3d99a0153SChris Williamson ** $Id: lstring.h,v 1.49.1.1 2013/04/12 18:48:47 roberto Exp $ 4d99a0153SChris Williamson ** String table (keep all strings handled by Lua) 5d99a0153SChris Williamson ** See Copyright Notice in lua.h 6d99a0153SChris Williamson */ 7d99a0153SChris Williamson 8d99a0153SChris Williamson #ifndef lstring_h 9d99a0153SChris Williamson #define lstring_h 10d99a0153SChris Williamson 11d99a0153SChris Williamson #include "lgc.h" 12d99a0153SChris Williamson #include "lobject.h" 13d99a0153SChris Williamson #include "lstate.h" 14d99a0153SChris Williamson 15d99a0153SChris Williamson 16c84a37aeSRob Norris #define sizestring(s) (sizeof(struct TString)+((s)->len+1)*sizeof(char)) 17d99a0153SChris Williamson 18d99a0153SChris Williamson #define sizeudata(u) (sizeof(union Udata)+(u)->len) 19d99a0153SChris Williamson 20d99a0153SChris Williamson #define luaS_newliteral(L, s) (luaS_newlstr(L, "" s, \ 21d99a0153SChris Williamson (sizeof(s)/sizeof(char))-1)) 22d99a0153SChris Williamson 23d99a0153SChris Williamson #define luaS_fix(s) l_setbit((s)->tsv.marked, FIXEDBIT) 24d99a0153SChris Williamson 25d99a0153SChris Williamson 26d99a0153SChris Williamson /* 27d99a0153SChris Williamson ** test whether a string is a reserved word 28d99a0153SChris Williamson */ 29d99a0153SChris Williamson #define isreserved(s) ((s)->tsv.tt == LUA_TSHRSTR && (s)->tsv.extra > 0) 30d99a0153SChris Williamson 31d99a0153SChris Williamson 32d99a0153SChris Williamson /* 33d99a0153SChris Williamson ** equality for short strings, which are always internalized 34d99a0153SChris Williamson */ 35d99a0153SChris Williamson #define eqshrstr(a,b) check_exp((a)->tsv.tt == LUA_TSHRSTR, (a) == (b)) 36d99a0153SChris Williamson 37d99a0153SChris Williamson 38d99a0153SChris Williamson LUAI_FUNC unsigned int luaS_hash (const char *str, size_t l, unsigned int seed); 39d99a0153SChris Williamson LUAI_FUNC int luaS_eqlngstr (TString *a, TString *b); 40d99a0153SChris Williamson LUAI_FUNC int luaS_eqstr (TString *a, TString *b); 41d99a0153SChris Williamson LUAI_FUNC void luaS_resize (lua_State *L, int newsize); 42d99a0153SChris Williamson LUAI_FUNC Udata *luaS_newudata (lua_State *L, size_t s, Table *e); 43d99a0153SChris Williamson LUAI_FUNC TString *luaS_newlstr (lua_State *L, const char *str, size_t l); 44d99a0153SChris Williamson LUAI_FUNC TString *luaS_new (lua_State *L, const char *str); 45d99a0153SChris Williamson 46d99a0153SChris Williamson 47d99a0153SChris Williamson #endif 48