xref: /freebsd-12.1/contrib/lua/src/lstring.h (revision e112e9d2)
18e3e3a7aSWarner Losh /*
2*e112e9d2SKyle Evans ** $Id: lstring.h,v 1.61.1.1 2017/04/19 17:20:42 roberto Exp $
38e3e3a7aSWarner Losh ** String table (keep all strings handled by Lua)
48e3e3a7aSWarner Losh ** See Copyright Notice in lua.h
58e3e3a7aSWarner Losh */
68e3e3a7aSWarner Losh 
78e3e3a7aSWarner Losh #ifndef lstring_h
88e3e3a7aSWarner Losh #define lstring_h
98e3e3a7aSWarner Losh 
108e3e3a7aSWarner Losh #include "lgc.h"
118e3e3a7aSWarner Losh #include "lobject.h"
128e3e3a7aSWarner Losh #include "lstate.h"
138e3e3a7aSWarner Losh 
148e3e3a7aSWarner Losh 
158e3e3a7aSWarner Losh #define sizelstring(l)  (sizeof(union UTString) + ((l) + 1) * sizeof(char))
168e3e3a7aSWarner Losh 
178e3e3a7aSWarner Losh #define sizeludata(l)	(sizeof(union UUdata) + (l))
188e3e3a7aSWarner Losh #define sizeudata(u)	sizeludata((u)->len)
198e3e3a7aSWarner Losh 
208e3e3a7aSWarner Losh #define luaS_newliteral(L, s)	(luaS_newlstr(L, "" s, \
218e3e3a7aSWarner Losh                                  (sizeof(s)/sizeof(char))-1))
228e3e3a7aSWarner Losh 
238e3e3a7aSWarner Losh 
248e3e3a7aSWarner Losh /*
258e3e3a7aSWarner Losh ** test whether a string is a reserved word
268e3e3a7aSWarner Losh */
278e3e3a7aSWarner Losh #define isreserved(s)	((s)->tt == LUA_TSHRSTR && (s)->extra > 0)
288e3e3a7aSWarner Losh 
298e3e3a7aSWarner Losh 
308e3e3a7aSWarner Losh /*
318e3e3a7aSWarner Losh ** equality for short strings, which are always internalized
328e3e3a7aSWarner Losh */
338e3e3a7aSWarner Losh #define eqshrstr(a,b)	check_exp((a)->tt == LUA_TSHRSTR, (a) == (b))
348e3e3a7aSWarner Losh 
358e3e3a7aSWarner Losh 
368e3e3a7aSWarner Losh LUAI_FUNC unsigned int luaS_hash (const char *str, size_t l, unsigned int seed);
378e3e3a7aSWarner Losh LUAI_FUNC unsigned int luaS_hashlongstr (TString *ts);
388e3e3a7aSWarner Losh LUAI_FUNC int luaS_eqlngstr (TString *a, TString *b);
398e3e3a7aSWarner Losh LUAI_FUNC void luaS_resize (lua_State *L, int newsize);
408e3e3a7aSWarner Losh LUAI_FUNC void luaS_clearcache (global_State *g);
418e3e3a7aSWarner Losh LUAI_FUNC void luaS_init (lua_State *L);
428e3e3a7aSWarner Losh LUAI_FUNC void luaS_remove (lua_State *L, TString *ts);
438e3e3a7aSWarner Losh LUAI_FUNC Udata *luaS_newudata (lua_State *L, size_t s);
448e3e3a7aSWarner Losh LUAI_FUNC TString *luaS_newlstr (lua_State *L, const char *str, size_t l);
458e3e3a7aSWarner Losh LUAI_FUNC TString *luaS_new (lua_State *L, const char *str);
468e3e3a7aSWarner Losh LUAI_FUNC TString *luaS_createlngstrobj (lua_State *L, size_t l);
478e3e3a7aSWarner Losh 
488e3e3a7aSWarner Losh 
498e3e3a7aSWarner Losh #endif
50