5252#define HFIRSTNODE 3
5353
5454/*
55- ** Besides these values, pset (pre-set) operations may also return an
56- ** encoding of where the value should go (usually called 'hres'). That
57- ** means that there is a slot with that key but with no value. (pset
58- ** cannot set that value because there might be a metamethod.) If the
59- ** slot is in the hash part, the encoding is (HFIRSTNODE + hash index);
60- ** if the slot is in the array part, the encoding is (~array index).
55+ ** 'luaH_get*' operations set 'res' and return HOK, unless the value is
56+ ** absent. In that case, they set nothing and return HNOTFOUND.
57+ ** The 'luaH_pset*' (pre-set) operations set the given value and return
58+ ** HOK, unless the original value is absent. In that case, if the key
59+ ** is really absent, they return HNOTFOUND. Otherwise, if there is a
60+ ** slot with that key but with no value, 'luaH_pset*' return an encoding
61+ ** of where the key is (usually called 'hres'). (pset cannot set that
62+ ** value because there might be a metamethod.) If the slot is in the
63+ ** hash part, the encoding is (HFIRSTNODE + hash index); if the slot is
64+ ** in the array part, the encoding is (~array index), a negative value.
65+ ** The value HNOTATABLE is used by the fast macros to signal that the
66+ ** value being indexed is not a table.
6167*/
6268
6369
@@ -125,11 +131,14 @@ union ArrayCell {
125131 (*tag = (val)->tt_, *getArrVal(h,(k)-1u) = (val)->value_)
126132
127133
134+ LUAI_FUNC int luaH_get (Table * t , const TValue * key , TValue * res );
128135LUAI_FUNC int luaH_getshortstr (Table * t , TString * key , TValue * res );
129136LUAI_FUNC int luaH_getstr (Table * t , TString * key , TValue * res );
130- LUAI_FUNC int luaH_get (Table * t , const TValue * key , TValue * res );
131137LUAI_FUNC int luaH_getint (Table * t , lua_Integer key , TValue * res );
132138
139+ /* Special get for metamethods */
140+ LUAI_FUNC const TValue * luaH_Hgetshortstr (Table * t , TString * key );
141+
133142LUAI_FUNC TString * luaH_getstrkey (Table * t , TString * key );
134143
135144LUAI_FUNC int luaH_psetint (Table * t , lua_Integer key , TValue * val );
@@ -139,11 +148,11 @@ LUAI_FUNC int luaH_pset (Table *t, const TValue *key, TValue *val);
139148
140149LUAI_FUNC void luaH_setint (lua_State * L , Table * t , lua_Integer key ,
141150 TValue * value );
142- LUAI_FUNC const TValue * luaH_Hgetshortstr (Table * t , TString * key );
143151LUAI_FUNC void luaH_set (lua_State * L , Table * t , const TValue * key ,
144152 TValue * value );
153+
145154LUAI_FUNC void luaH_finishset (lua_State * L , Table * t , const TValue * key ,
146- TValue * value , int aux );
155+ TValue * value , int hres );
147156LUAI_FUNC Table * luaH_new (lua_State * L );
148157LUAI_FUNC void luaH_resize (lua_State * L , Table * t , unsigned int nasize ,
149158 unsigned int nhsize );
0 commit comments