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