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