xref: /freebsd-src/contrib/lua/src/lstring.h (revision 8e3e3a7ae841ccf6f6ac30a2eeab85df5d7f04bc)
1*8e3e3a7aSWarner Losh /*
2*8e3e3a7aSWarner Losh ** $Id: lstring.h,v 1.61 2015/11/03 15:36:01 roberto Exp $
3*8e3e3a7aSWarner Losh ** String table (keep all strings handled by Lua)
4*8e3e3a7aSWarner Losh ** See Copyright Notice in lua.h
5*8e3e3a7aSWarner Losh */
6*8e3e3a7aSWarner Losh 
7*8e3e3a7aSWarner Losh #ifndef lstring_h
8*8e3e3a7aSWarner Losh #define lstring_h
9*8e3e3a7aSWarner Losh 
10*8e3e3a7aSWarner Losh #include "lgc.h"
11*8e3e3a7aSWarner Losh #include "lobject.h"
12*8e3e3a7aSWarner Losh #include "lstate.h"
13*8e3e3a7aSWarner Losh 
14*8e3e3a7aSWarner Losh 
15*8e3e3a7aSWarner Losh #define sizelstring(l)  (sizeof(union UTString) + ((l) + 1) * sizeof(char))
16*8e3e3a7aSWarner Losh 
17*8e3e3a7aSWarner Losh #define sizeludata(l)	(sizeof(union UUdata) + (l))
18*8e3e3a7aSWarner Losh #define sizeudata(u)	sizeludata((u)->len)
19*8e3e3a7aSWarner Losh 
20*8e3e3a7aSWarner Losh #define luaS_newliteral(L, s)	(luaS_newlstr(L, "" s, \
21*8e3e3a7aSWarner Losh                                  (sizeof(s)/sizeof(char))-1))
22*8e3e3a7aSWarner Losh 
23*8e3e3a7aSWarner Losh 
24*8e3e3a7aSWarner Losh /*
25*8e3e3a7aSWarner Losh ** test whether a string is a reserved word
26*8e3e3a7aSWarner Losh */
27*8e3e3a7aSWarner Losh #define isreserved(s)	((s)->tt == LUA_TSHRSTR && (s)->extra > 0)
28*8e3e3a7aSWarner Losh 
29*8e3e3a7aSWarner Losh 
30*8e3e3a7aSWarner Losh /*
31*8e3e3a7aSWarner Losh ** equality for short strings, which are always internalized
32*8e3e3a7aSWarner Losh */
33*8e3e3a7aSWarner Losh #define eqshrstr(a,b)	check_exp((a)->tt == LUA_TSHRSTR, (a) == (b))
34*8e3e3a7aSWarner Losh 
35*8e3e3a7aSWarner Losh 
36*8e3e3a7aSWarner Losh LUAI_FUNC unsigned int luaS_hash (const char *str, size_t l, unsigned int seed);
37*8e3e3a7aSWarner Losh LUAI_FUNC unsigned int luaS_hashlongstr (TString *ts);
38*8e3e3a7aSWarner Losh LUAI_FUNC int luaS_eqlngstr (TString *a, TString *b);
39*8e3e3a7aSWarner Losh LUAI_FUNC void luaS_resize (lua_State *L, int newsize);
40*8e3e3a7aSWarner Losh LUAI_FUNC void luaS_clearcache (global_State *g);
41*8e3e3a7aSWarner Losh LUAI_FUNC void luaS_init (lua_State *L);
42*8e3e3a7aSWarner Losh LUAI_FUNC void luaS_remove (lua_State *L, TString *ts);
43*8e3e3a7aSWarner Losh LUAI_FUNC Udata *luaS_newudata (lua_State *L, size_t s);
44*8e3e3a7aSWarner Losh LUAI_FUNC TString *luaS_newlstr (lua_State *L, const char *str, size_t l);
45*8e3e3a7aSWarner Losh LUAI_FUNC TString *luaS_new (lua_State *L, const char *str);
46*8e3e3a7aSWarner Losh LUAI_FUNC TString *luaS_createlngstrobj (lua_State *L, size_t l);
47*8e3e3a7aSWarner Losh 
48*8e3e3a7aSWarner Losh 
49*8e3e3a7aSWarner Losh #endif
50