diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2012-01-20 20:47:11 -0200 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2012-01-20 20:47:11 -0200 |
commit | 28f8ed9113d1fb9862a2ebd8673ca6b99f4ed190 (patch) | |
tree | 8830d5974c22dde2b5b1003d867f7224b2a1f0ab | |
parent | fd22ccd6d020bca1039626ee0c7de42b237a5686 (diff) | |
download | lua-28f8ed9113d1fb9862a2ebd8673ca6b99f4ed190.tar.gz lua-28f8ed9113d1fb9862a2ebd8673ca6b99f4ed190.tar.bz2 lua-28f8ed9113d1fb9862a2ebd8673ca6b99f4ed190.zip |
new macro 'checktype'
-rw-r--r-- | lobject.h | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lobject.h,v 2.64 2011/10/31 17:48:22 roberto Exp roberto $ | 2 | ** $Id: lobject.h,v 2.65 2012/01/20 22:05:50 roberto Exp roberto $ |
3 | ** Type definitions for Lua objects | 3 | ** Type definitions for Lua objects |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -36,6 +36,9 @@ | |||
36 | ** bit 6: whether value is collectable | 36 | ** bit 6: whether value is collectable |
37 | */ | 37 | */ |
38 | 38 | ||
39 | #define VARBITS (3 << 4) | ||
40 | |||
41 | |||
39 | /* | 42 | /* |
40 | ** LUA_TFUNCTION variants: | 43 | ** LUA_TFUNCTION variants: |
41 | ** 0 - Lua function | 44 | ** 0 - Lua function |
@@ -121,13 +124,14 @@ typedef struct lua_TValue TValue; | |||
121 | 124 | ||
122 | /* Macros to test type */ | 125 | /* Macros to test type */ |
123 | #define checktag(o,t) (rttype(o) == (t)) | 126 | #define checktag(o,t) (rttype(o) == (t)) |
127 | #define checktype(o,t) (ttypenv(o) == (t)) | ||
124 | #define ttisnumber(o) checktag((o), LUA_TNUMBER) | 128 | #define ttisnumber(o) checktag((o), LUA_TNUMBER) |
125 | #define ttisnil(o) checktag((o), LUA_TNIL) | 129 | #define ttisnil(o) checktag((o), LUA_TNIL) |
126 | #define ttisboolean(o) checktag((o), LUA_TBOOLEAN) | 130 | #define ttisboolean(o) checktag((o), LUA_TBOOLEAN) |
127 | #define ttislightuserdata(o) checktag((o), LUA_TLIGHTUSERDATA) | 131 | #define ttislightuserdata(o) checktag((o), LUA_TLIGHTUSERDATA) |
128 | #define ttisstring(o) checktag((o), ctb(LUA_TSTRING)) | 132 | #define ttisstring(o) checktag((o), ctb(LUA_TSTRING)) |
129 | #define ttistable(o) checktag((o), ctb(LUA_TTABLE)) | 133 | #define ttistable(o) checktag((o), ctb(LUA_TTABLE)) |
130 | #define ttisfunction(o) (ttypenv(o) == LUA_TFUNCTION) | 134 | #define ttisfunction(o) checktype(o, LUA_TFUNCTION) |
131 | #define ttisclosure(o) ((rttype(o) & 0x1F) == LUA_TFUNCTION) | 135 | #define ttisclosure(o) ((rttype(o) & 0x1F) == LUA_TFUNCTION) |
132 | #define ttisCclosure(o) checktag((o), ctb(LUA_TCCL)) | 136 | #define ttisCclosure(o) checktag((o), ctb(LUA_TCCL)) |
133 | #define ttisLclosure(o) checktag((o), ctb(LUA_TLCL)) | 137 | #define ttisLclosure(o) checktag((o), ctb(LUA_TLCL)) |
@@ -350,7 +354,9 @@ typedef struct lua_TValue TValue; | |||
350 | */ | 354 | */ |
351 | 355 | ||
352 | #undef checktag | 356 | #undef checktag |
357 | #undef checktype | ||
353 | #define checktag(o,t) (tt_(o) == tag2tt(t)) | 358 | #define checktag(o,t) (tt_(o) == tag2tt(t)) |
359 | #define checktype(o,t) (ctb(tt_(o) | VARBITS) == ctb(tag2tt(t) | VARBITS)) | ||
354 | 360 | ||
355 | #undef ttisequal | 361 | #undef ttisequal |
356 | #define ttisequal(o1,o2) \ | 362 | #define ttisequal(o1,o2) \ |