aboutsummaryrefslogtreecommitdiff
path: root/lvm.h
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2018-02-23 10:16:18 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2018-02-23 10:16:18 -0300
commit9243c414d92c253edd908f438caa31e2aa16f3f4 (patch)
treee8959a48f4672037aef061cc6eb82bba21d0766b /lvm.h
parent477ca2fe8ceaf79038972977915987adbef0e425 (diff)
downloadlua-9243c414d92c253edd908f438caa31e2aa16f3f4.tar.gz
lua-9243c414d92c253edd908f438caa31e2aa16f3f4.tar.bz2
lua-9243c414d92c253edd908f438caa31e2aa16f3f4.zip
first version of empty entries in tables
(so that, in the future, tables can contain regular nil entries)
Diffstat (limited to 'lvm.h')
-rw-r--r--lvm.h10
1 files changed, 5 insertions, 5 deletions
diff --git a/lvm.h b/lvm.h
index cbf7e922..c5d5206d 100644
--- a/lvm.h
+++ b/lvm.h
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lvm.h,v 2.49 2018/02/19 20:06:56 roberto Exp roberto $ 2** $Id: lvm.h,v 2.50 2018/02/21 12:54:26 roberto Exp roberto $
3** Lua virtual machine 3** Lua virtual machine
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -64,17 +64,17 @@
64 64
65 65
66/* 66/*
67** fast track for 'gettable': if 't' is a table and 't[k]' is not nil, 67** fast track for 'gettable': if 't' is a table and 't[k]' is present,
68** return 1 with 'slot' pointing to 't[k]' (position of final result). 68** return 1 with 'slot' pointing to 't[k]' (position of final result).
69** Otherwise, return 0 (meaning it will have to check metamethod) 69** Otherwise, return 0 (meaning it will have to check metamethod)
70** with 'slot' pointing to a nil 't[k]' (if 't' is a table) or NULL 70** with 'slot' pointing to an empty 't[k]' (if 't' is a table) or NULL
71** (otherwise). 'f' is the raw get function to use. 71** (otherwise). 'f' is the raw get function to use.
72*/ 72*/
73#define luaV_fastget(L,t,k,slot,f) \ 73#define luaV_fastget(L,t,k,slot,f) \
74 (!ttistable(t) \ 74 (!ttistable(t) \
75 ? (slot = NULL, 0) /* not a table; 'slot' is NULL and result is 0 */ \ 75 ? (slot = NULL, 0) /* not a table; 'slot' is NULL and result is 0 */ \
76 : (slot = f(hvalue(t), k), /* else, do raw access */ \ 76 : (slot = f(hvalue(t), k), /* else, do raw access */ \
77 !ttisnil(slot))) /* result not nil? */ 77 !isempty(slot))) /* result not empty? */
78 78
79 79
80/* 80/*
@@ -86,7 +86,7 @@
86 ? (slot = NULL, 0) /* not a table; 'slot' is NULL and result is 0 */ \ 86 ? (slot = NULL, 0) /* not a table; 'slot' is NULL and result is 0 */ \
87 : (slot = (l_castS2U(k) - 1u < hvalue(t)->sizearray) \ 87 : (slot = (l_castS2U(k) - 1u < hvalue(t)->sizearray) \
88 ? &hvalue(t)->array[k - 1] : luaH_getint(hvalue(t), k), \ 88 ? &hvalue(t)->array[k - 1] : luaH_getint(hvalue(t), k), \
89 !ttisnil(slot))) /* result not nil? */ 89 !isempty(slot))) /* result not empty? */
90 90
91 91
92/* 92/*