xref: /aosp_15_r20/external/lua/src/ltable.h (revision 088332b5b69e7ab13924864b272aabfc2509d2d5)
1*088332b5SXin Li /*
2*088332b5SXin Li ** $Id: ltable.h $
3*088332b5SXin Li ** Lua tables (hash)
4*088332b5SXin Li ** See Copyright Notice in lua.h
5*088332b5SXin Li */
6*088332b5SXin Li 
7*088332b5SXin Li #ifndef ltable_h
8*088332b5SXin Li #define ltable_h
9*088332b5SXin Li 
10*088332b5SXin Li #include "lobject.h"
11*088332b5SXin Li 
12*088332b5SXin Li 
13*088332b5SXin Li #define gnode(t,i)	(&(t)->node[i])
14*088332b5SXin Li #define gval(n)		(&(n)->i_val)
15*088332b5SXin Li #define gnext(n)	((n)->u.next)
16*088332b5SXin Li 
17*088332b5SXin Li 
18*088332b5SXin Li /*
19*088332b5SXin Li ** Clear all bits of fast-access metamethods, which means that the table
20*088332b5SXin Li ** may have any of these metamethods. (First access that fails after the
21*088332b5SXin Li ** clearing will set the bit again.)
22*088332b5SXin Li */
23*088332b5SXin Li #define invalidateTMcache(t)	((t)->flags &= ~maskflags)
24*088332b5SXin Li 
25*088332b5SXin Li 
26*088332b5SXin Li /* true when 't' is using 'dummynode' as its hash part */
27*088332b5SXin Li #define isdummy(t)		((t)->lastfree == NULL)
28*088332b5SXin Li 
29*088332b5SXin Li 
30*088332b5SXin Li /* allocated size for hash nodes */
31*088332b5SXin Li #define allocsizenode(t)	(isdummy(t) ? 0 : sizenode(t))
32*088332b5SXin Li 
33*088332b5SXin Li 
34*088332b5SXin Li /* returns the Node, given the value of a table entry */
35*088332b5SXin Li #define nodefromval(v)	cast(Node *, (v))
36*088332b5SXin Li 
37*088332b5SXin Li 
38*088332b5SXin Li LUAI_FUNC const TValue *luaH_getint (Table *t, lua_Integer key);
39*088332b5SXin Li LUAI_FUNC void luaH_setint (lua_State *L, Table *t, lua_Integer key,
40*088332b5SXin Li                                                     TValue *value);
41*088332b5SXin Li LUAI_FUNC const TValue *luaH_getshortstr (Table *t, TString *key);
42*088332b5SXin Li LUAI_FUNC const TValue *luaH_getstr (Table *t, TString *key);
43*088332b5SXin Li LUAI_FUNC const TValue *luaH_get (Table *t, const TValue *key);
44*088332b5SXin Li LUAI_FUNC TValue *luaH_newkey (lua_State *L, Table *t, const TValue *key);
45*088332b5SXin Li LUAI_FUNC TValue *luaH_set (lua_State *L, Table *t, const TValue *key);
46*088332b5SXin Li LUAI_FUNC Table *luaH_new (lua_State *L);
47*088332b5SXin Li LUAI_FUNC void luaH_resize (lua_State *L, Table *t, unsigned int nasize,
48*088332b5SXin Li                                                     unsigned int nhsize);
49*088332b5SXin Li LUAI_FUNC void luaH_resizearray (lua_State *L, Table *t, unsigned int nasize);
50*088332b5SXin Li LUAI_FUNC void luaH_free (lua_State *L, Table *t);
51*088332b5SXin Li LUAI_FUNC int luaH_next (lua_State *L, Table *t, StkId key);
52*088332b5SXin Li LUAI_FUNC lua_Unsigned luaH_getn (Table *t);
53*088332b5SXin Li LUAI_FUNC unsigned int luaH_realasize (const Table *t);
54*088332b5SXin Li 
55*088332b5SXin Li 
56*088332b5SXin Li #if defined(LUA_DEBUG)
57*088332b5SXin Li LUAI_FUNC Node *luaH_mainposition (const Table *t, const TValue *key);
58*088332b5SXin Li LUAI_FUNC int luaH_isdummy (const Table *t);
59*088332b5SXin Li #endif
60*088332b5SXin Li 
61*088332b5SXin Li 
62*088332b5SXin Li #endif
63