lua5.4
lstring.h
浏览该文件的文档.
1 /*
2 ** $Id: lstring.h $
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 /*
16 ** Memory-allocation error message must be preallocated (it cannot
17 ** be created after memory is exhausted)
18 */
19 #define MEMERRMSG "not enough memory"
20 
21 
22 /*
23 ** Size of a TString: Size of the header plus space for the string
24 ** itself (including final '\0').
25 */
26 #define sizelstring(l) (offsetof(TString, contents) + ((l) + 1) * sizeof(char))
27 
28 #define luaS_newliteral(L, s) (luaS_newlstr(L, "" s, \
29  (sizeof(s)/sizeof(char))-1))
30 
31 
32 /*
33 ** test whether a string is a reserved word
34 */
35 #define isreserved(s) ((s)->tt == LUA_VSHRSTR && (s)->extra > 0)
36 
37 
38 /*
39 ** equality for short strings, which are always internalized
40 */
41 #define eqshrstr(a,b) check_exp((a)->tt == LUA_VSHRSTR, (a) == (b))
42 
43 
44 LUAI_FUNC unsigned int luaS_hash (const char *str, size_t l, unsigned int seed);
45 LUAI_FUNC unsigned int luaS_hashlongstr (TString *ts);
47 LUAI_FUNC void luaS_resize (lua_State *L, int newsize);
49 LUAI_FUNC void luaS_init (lua_State *L);
50 LUAI_FUNC void luaS_remove (lua_State *L, TString *ts);
51 LUAI_FUNC Udata *luaS_newudata (lua_State *L, size_t s, int nuvalue);
52 LUAI_FUNC TString *luaS_newlstr (lua_State *L, const char *str, size_t l);
53 LUAI_FUNC TString *luaS_new (lua_State *L, const char *str);
55 
56 
57 #endif
stringtable
Definition: lstate.h:150
luaC_newobj
GCObject * luaC_newobj(lua_State *L, int tt, size_t sz)
Definition: lgc.c:258
iswhite
#define iswhite(x)
Definition: lgc.h:87
TString::u
union TString::@1 u
lua_assert
#define lua_assert(c)
Definition: lauxlib.h:169
luaS_init
void luaS_init(lua_State *L)
Definition: lstring.c:123
LUAI_FUNC
#define LUAI_FUNC
Definition: luaconf.h:307
cast_byte
#define cast_byte(i)
Definition: llimits.h:130
UpVal::u
union UpVal::@3 u
lstate.h
LUAI_MAXSHORTLEN
#define LUAI_MAXSHORTLEN
Definition: llimits.h:205
luaS_new
LUAI_FUNC TString * luaS_new(lua_State *L, const char *str)
Definition: lstring.c:241
luaS_newlstr
TString * luaS_newlstr(lua_State *L, const char *str, size_t l)
Definition: lstring.c:221
gco2ts
#define gco2ts(o)
Definition: lstate.h:330
luaS_new
TString * luaS_new(lua_State *L, const char *str)
Definition: lstring.c:241
unlikely
#define unlikely(x)
Definition: llimits.h:162
global_State::strt
stringtable strt
Definition: lstate.h:226
stringtable::hash
TString ** hash
Definition: lstate.h:151
MAXSTRTB
#define MAXSTRTB
Definition: lstring.c:28
MINSTRTABSIZE
#define MINSTRTABSIZE
Definition: llimits.h:216
obj2gco
#define obj2gco(v)
Definition: lstate.h:347
luaC_fix
void luaC_fix(lua_State *L, GCObject *o)
Definition: lgc.c:243
cast_uint
#define cast_uint(i)
Definition: llimits.h:129
gco2u
#define gco2u(o)
Definition: lstate.h:332
luaS_remove
LUAI_FUNC void luaS_remove(lua_State *L, TString *ts)
Definition: lstring.c:164
luaM_error
#define luaM_error(L)
Definition: lmem.h:17
luaS_clearcache
LUAI_FUNC void luaS_clearcache(global_State *g)
Definition: lstring.c:110
luaS_remove
void luaS_remove(lua_State *L, TString *ts)
Definition: lstring.c:164
TString::extra
lu_byte extra
Definition: lobject.h:366
luaM_newvector
#define luaM_newvector(L, n, t)
Definition: lmem.h:60
internshrstr
static TString * internshrstr(lua_State *L, const char *str, size_t l)
Definition: lstring.c:188
STRCACHE_N
#define STRCACHE_N
Definition: llimits.h:226
setnilvalue
#define setnilvalue(obj)
Definition: lobject.h:178
lua.h
luaS_eqlngstr
LUAI_FUNC int luaS_eqlngstr(TString *a, TString *b)
Definition: lstring.c:34
TString::hash
unsigned int hash
Definition: lobject.h:368
udatamemoffset
#define udatamemoffset(nuv)
Definition: lobject.h:468
luaS_resize
LUAI_FUNC void luaS_resize(lua_State *L, int newsize)
Definition: lstring.c:85
TString::hnext
struct TString * hnext
Definition: lobject.h:371
G
#define G(L)
Definition: lstate.h:298
sizelstring
#define sizelstring(l)
Definition: lstring.h:26
LUA_VLNGSTR
#define LUA_VLNGSTR
Definition: lobject.h:339
LUA_VSHRSTR
#define LUA_VSHRSTR
Definition: lobject.h:338
luaS_hashlongstr
unsigned int luaS_hashlongstr(TString *ts)
Definition: lstring.c:51
TString
Definition: lobject.h:364
lprefix.h
ldebug.h
getstr
#define getstr(ts)
Definition: lobject.h:381
TString::lnglen
size_t lnglen
Definition: lobject.h:370
Udata
Definition: lobject.h:439
luaS_newudata
LUAI_FUNC Udata * luaS_newudata(lua_State *L, size_t s, int nuvalue)
Definition: lstring.c:258
tablerehash
static void tablerehash(TString **vect, int osize, int nsize)
Definition: lstring.c:62
luaS_hashlongstr
LUAI_FUNC unsigned int luaS_hashlongstr(TString *ts)
Definition: lstring.c:51
lobject.h
global_State
Definition: lstate.h:219
lua_State
Definition: lstate.h:273
luaM_reallocvector
#define luaM_reallocvector(L, v, oldn, n, t)
Definition: lmem.h:70
luaS_newudata
Udata * luaS_newudata(lua_State *L, size_t s, int nuvalue)
Definition: lstring.c:258
point2uint
#define point2uint(p)
Definition: llimits.h:78
global_State::strcache
TString * strcache[STRCACHE_N][STRCACHE_M]
Definition: lstate.h:264
createstrobj
static TString * createstrobj(lua_State *L, size_t l, int tag, unsigned int h)
Definition: lstring.c:143
luaS_hash
unsigned int luaS_hash(const char *str, size_t l, unsigned int seed)
Definition: lstring.c:43
luaS_init
LUAI_FUNC void luaS_init(lua_State *L)
Definition: lstring.c:123
sizeudata
#define sizeudata(nuv, nb)
Definition: lobject.h:476
isdead
#define isdead(g, v)
Definition: lgc.h:96
growstrtab
static void growstrtab(lua_State *L, stringtable *tb)
Definition: lstring.c:174
MAX_INT
#define MAX_INT
Definition: llimits.h:53
luaS_newlstr
LUAI_FUNC TString * luaS_newlstr(lua_State *L, const char *str, size_t l)
Definition: lstring.c:221
lstring.h
MAX_SIZE
#define MAX_SIZE
Definition: llimits.h:44
stringtable::nuse
int nuse
Definition: lstate.h:152
luaS_clearcache
void luaS_clearcache(global_State *g)
Definition: lstring.c:110
stringtable::size
int size
Definition: lstate.h:153
lmem.h
TString::shrlen
lu_byte shrlen
Definition: lobject.h:367
lgc.h
GCObject
Definition: lobject.h:270
luaC_fullgc
void luaC_fullgc(lua_State *L, int isemergency)
Definition: lgc.c:1703
changewhite
#define changewhite(x)
Definition: lgc.h:98
MEMERRMSG
#define MEMERRMSG
Definition: lstring.h:19
luaS_createlngstrobj
TString * luaS_createlngstrobj(lua_State *L, size_t l)
Definition: lstring.c:157
lmod
#define lmod(s, size)
Definition: lobject.h:763
luaS_eqlngstr
int luaS_eqlngstr(TString *a, TString *b)
Definition: lstring.c:34
STRCACHE_M
#define STRCACHE_M
Definition: llimits.h:227
global_State::memerrmsg
TString * memerrmsg
Definition: lstate.h:261
LUA_VUSERDATA
#define LUA_VUSERDATA
Definition: lobject.h:409
luaS_resize
void luaS_resize(lua_State *L, int nsize)
Definition: lstring.c:85
luaS_newliteral
#define luaS_newliteral(L, s)
Definition: lstring.h:28
luaS_hash
LUAI_FUNC unsigned int luaS_hash(const char *str, size_t l, unsigned int seed)
Definition: lstring.c:43
global_State::seed
unsigned int seed
Definition: lstate.h:229
luaS_createlngstrobj
LUAI_FUNC TString * luaS_createlngstrobj(lua_State *L, size_t l)
Definition: lstring.c:157
luaM_toobig
l_noret luaM_toobig(lua_State *L)
Definition: lmem.c:124
ldo.h