xref: /src/sys/contrib/openzfs/module/lua/lstring.h (revision 61145dc2b94f12f6a47344fb9aac702321880e43)
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