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