#include <math.h>#include <string.h>#include "lua.h"#include "ldebug.h"#include "ldo.h"#include "lgc.h"#include "lmem.h"#include "lobject.h"#include "lstate.h"#include "ltable.h"Go to the source code of this file.
Defines | |
| #define | ltable_c |
| #define | LUA_CORE |
| #define | MAXBITS (LUAI_BITSINT-2) |
| #define | MAXASIZE (1 << MAXBITS) |
| #define | hashpow2(t, n) (gnode(t, lmod((n), sizenode(t)))) |
| #define | hashstr(t, str) hashpow2(t, (str)->tsv.hash) |
| #define | hashboolean(t, p) hashpow2(t, p) |
| #define | hashmod(t, n) (gnode(t, ((n) % ((sizenode(t)-1)|1)))) |
| #define | hashpointer(t, p) hashmod(t, IntPoint(p)) |
| #define | numints cast_int(sizeof(lua_Number)/sizeof(int)) |
| #define | dummynode (&dummynode_) |
Functions | |
| static Node * | hashnum (const Table *t, lua_Number n) |
| static Node * | mainposition (const Table *t, const TValue *key) |
| static int | arrayindex (const TValue *key) |
| static int | findindex (lua_State *L, Table *t, StkId key) |
| int | luaH_next (lua_State *L, Table *t, StkId key) |
| static int | computesizes (int nums[], int *narray) |
| static int | countint (const TValue *key, int *nums) |
| static int | numusearray (const Table *t, int *nums) |
| static int | numusehash (const Table *t, int *nums, int *pnasize) |
| static void | setarrayvector (lua_State *L, Table *t, int size) |
| static void | setnodevector (lua_State *L, Table *t, int size) |
| static void | resize (lua_State *L, Table *t, int nasize, int nhsize) |
| void | luaH_resizearray (lua_State *L, Table *t, int nasize) |
| static void | rehash (lua_State *L, Table *t, const TValue *ek) |
| Table * | luaH_new (lua_State *L, int narray, int nhash) |
| void | luaH_free (lua_State *L, Table *t) |
| static Node * | getfreepos (Table *t) |
| static TValue * | newkey (lua_State *L, Table *t, const TValue *key) |
| const TValue * | luaH_getnum (Table *t, int key) |
| const TValue * | luaH_getstr (Table *t, TString *key) |
| const TValue * | luaH_get (Table *t, const TValue *key) |
| TValue * | luaH_set (lua_State *L, Table *t, const TValue *key) |
| TValue * | luaH_setnum (lua_State *L, Table *t, int key) |
| TValue * | luaH_setstr (lua_State *L, Table *t, TString *key) |
| static int | unbound_search (Table *t, unsigned int j) |
| int | luaH_getn (Table *t) |
Variables | |
| static const Node | dummynode_ |
| #define dummynode (&dummynode_) |
Definition at line 73 of file ltable.cpp.
Referenced by luaH_free(), luaH_getn(), luaH_new(), luaH_resizearray(), newkey(), resize(), and setnodevector().
Definition at line 50 of file ltable.cpp.
| #define ltable_c |
Definition at line 24 of file ltable.cpp.
| #define LUA_CORE |
Definition at line 25 of file ltable.cpp.
| #define MAXASIZE (1 << MAXBITS) |
| #define MAXBITS (LUAI_BITSINT-2) |
Definition at line 44 of file ltable.cpp.
Referenced by numusearray(), rehash(), and setnodevector().
| #define numints cast_int(sizeof(lua_Number)/sizeof(int)) |
| static int arrayindex | ( | const TValue * | key | ) | [static] |
Definition at line 120 of file ltable.cpp.
References cast_num, lua_number2int, nvalue, and ttisnumber.
Referenced by countint(), and findindex().
| static int computesizes | ( | int | nums[], | |
| int * | narray | |||
| ) | [static] |
| static int countint | ( | const TValue * | key, | |
| int * | nums | |||
| ) | [static] |
Definition at line 211 of file ltable.cpp.
References arrayindex(), ceillog2, and MAXASIZE.
Referenced by numusehash(), and rehash().
Definition at line 137 of file ltable.cpp.
References arrayindex(), cast_int, gcvalue, gkey, gnext, gnode, iscollectable, key2tval, LUA_QL, LUA_TDEADKEY, luaG_runerror(), luaO_rawequalObj(), mainposition(), Table::sizearray, ttisnil, and ttype.
Referenced by luaH_next().
Definition at line 382 of file ltable.cpp.
References gkey, Table::lastfree, Table::node, NULL, and ttisnil.
Referenced by newkey().
| static Node* hashnum | ( | const Table * | t, | |
| lua_Number | n | |||
| ) | [static] |
Definition at line 84 of file ltable.cpp.
References hashmod, lua_assert, and numints.
Referenced by luaH_getnum(), and mainposition().
Definition at line 469 of file ltable.cpp.
Referenced by lua_rawget(), luaH_set(), and luaV_gettable().
| int luaH_getn | ( | Table * | t | ) |
Definition at line 435 of file ltable.cpp.
Referenced by lua_rawgeti(), luaH_get(), luaH_setnum(), and unbound_search().
Definition at line 455 of file ltable.cpp.
Referenced by luaH_get(), luaH_setstr(), luaT_gettm(), and luaT_gettmbyobj().
Definition at line 358 of file ltable.cpp.
Referenced by adjust_varargs(), collectvalidlines(), f_luaopen(), lua_createtable(), and open_func().
Definition at line 327 of file ltable.cpp.
Definition at line 494 of file ltable.cpp.
Referenced by addk(), lua_rawset(), luaV_settable(), newkey(), and resize().
Definition at line 508 of file ltable.cpp.
Referenced by adjust_varargs(), collectvalidlines(), lua_rawseti(), and resize().
Definition at line 100 of file ltable.cpp.
References bvalue, gcvalue, hashboolean, hashnum(), hashpointer, hashstr, LUA_TBOOLEAN, LUA_TLIGHTUSERDATA, LUA_TNUMBER, LUA_TSTRING, nvalue, pvalue, rawtsvalue, and ttype.
Referenced by findindex(), luaH_get(), and newkey().
Definition at line 399 of file ltable.cpp.
References dummynode, getfreepos(), gkey, gnext, gval, key2tval, lua_assert, luaC_barriert, luaH_set(), mainposition(), NULL, rehash(), setnilvalue, and ttisnil.
Referenced by luaH_set(), luaH_setnum(), and luaH_setstr().
| static int numusearray | ( | const Table * | t, | |
| int * | nums | |||
| ) | [static] |
Definition at line 222 of file ltable.cpp.
References Table::array, MAXBITS, Table::sizearray, and ttisnil.
Referenced by rehash().
| static int numusehash | ( | const Table * | t, | |
| int * | nums, | |||
| int * | pnasize | |||
| ) | [static] |
Definition at line 247 of file ltable.cpp.
References countint(), gval, key2tval, Table::node, sizenode, and ttisnil.
Referenced by rehash().
Definition at line 333 of file ltable.cpp.
References computesizes(), countint(), MAXBITS, numusearray(), numusehash(), and resize().
Referenced by newkey().
Definition at line 297 of file ltable.cpp.
References Table::array, dummynode, gval, key2tval, Table::lsizenode, luaH_set(), luaH_setnum(), luaM_freearray, luaM_reallocvector, Table::node, setarrayvector(), setnodevector(), setobjt2t, Table::sizearray, ttisnil, and twoto.
Referenced by luaH_resizearray(), and rehash().
Definition at line 263 of file ltable.cpp.
References Table::array, luaM_reallocvector, setnilvalue, and Table::sizearray.
Referenced by luaH_new(), and resize().
Definition at line 272 of file ltable.cpp.
References cast, cast_byte, ceillog2, dummynode, gkey, gnext, gnode, gval, Table::lastfree, Table::lsizenode, luaG_runerror(), luaM_newvector, MAXBITS, Table::node, NULL, setnilvalue, and twoto.
Referenced by luaH_new(), and resize().
| static int unbound_search | ( | Table * | t, | |
| unsigned int | j | |||
| ) | [static] |
Definition at line 532 of file ltable.cpp.
References cast, luaH_getnum(), MAX_INT, and ttisnil.
Referenced by luaH_getn().
const Node dummynode_ [static] |
1.5.3