Browse Source

Tag values don't need to be different from type values

Variants can use zero for first variant.
pull/23/head
Roberto Ierusalimschy 5 years ago
parent
commit
28ef7061bb
  1. 37
      lobject.h

37
lobject.h

@ -155,13 +155,13 @@ typedef StackValue *StkId;
*/
/* Standard nil */
#define LUA_VNIL makevariant(LUA_TNIL, 1)
#define LUA_VNIL makevariant(LUA_TNIL, 0)
/* Empty slot (which might be different from a slot containing nil) */
#define LUA_VEMPTY makevariant(LUA_TNIL, 2)
#define LUA_VEMPTY makevariant(LUA_TNIL, 1)
/* Value returned for a key not found in a table (absent key) */
#define LUA_VABSTKEY makevariant(LUA_TNIL, 3)
#define LUA_VABSTKEY makevariant(LUA_TNIL, 2)
/* macro to test for (any kind of) nil */
@ -211,8 +211,8 @@ typedef StackValue *StkId;
*/
#define LUA_VFALSE makevariant(LUA_TBOOLEAN, 1)
#define LUA_VTRUE makevariant(LUA_TBOOLEAN, 2)
#define LUA_VFALSE makevariant(LUA_TBOOLEAN, 0)
#define LUA_VTRUE makevariant(LUA_TBOOLEAN, 1)
#define ttisboolean(o) checktype((o), LUA_TBOOLEAN)
#define ttisfalse(o) checktag((o), LUA_VFALSE)
@ -234,7 +234,7 @@ typedef StackValue *StkId;
** ===================================================================
*/
#define LUA_VTHREAD makevariant(LUA_TTHREAD, 1)
#define LUA_VTHREAD makevariant(LUA_TTHREAD, 0)
#define ttisthread(o) checktag((o), ctb(LUA_VTHREAD))
@ -295,8 +295,8 @@ typedef struct GCObject {
*/
/* Variant tags for numbers */
#define LUA_VNUMINT makevariant(LUA_TNUMBER, 1) /* integer numbers */
#define LUA_VNUMFLT makevariant(LUA_TNUMBER, 2) /* float numbers */
#define LUA_VNUMINT makevariant(LUA_TNUMBER, 0) /* integer numbers */
#define LUA_VNUMFLT makevariant(LUA_TNUMBER, 1) /* float numbers */
#define ttisnumber(o) checktype((o), LUA_TNUMBER)
#define ttisfloat(o) checktag((o), LUA_VNUMFLT)
@ -332,8 +332,8 @@ typedef struct GCObject {
*/
/* Variant tags for strings */
#define LUA_VSHRSTR makevariant(LUA_TSTRING, 1) /* short strings */
#define LUA_VLNGSTR makevariant(LUA_TSTRING, 2) /* long strings */
#define LUA_VSHRSTR makevariant(LUA_TSTRING, 0) /* short strings */
#define LUA_VLNGSTR makevariant(LUA_TSTRING, 1) /* long strings */
#define ttisstring(o) checktype((o), LUA_TSTRING)
#define ttisshrstring(o) checktag((o), ctb(LUA_VSHRSTR))
@ -403,8 +403,9 @@ typedef struct TString {
** Light userdata should be a variant of userdata, but for compatibility
** reasons they are also different types.
*/
#define LUA_VLIGHTUSERDATA makevariant(LUA_TLIGHTUSERDATA, 1)
#define LUA_VUSERDATA makevariant(LUA_TUSERDATA, 1)
#define LUA_VLIGHTUSERDATA makevariant(LUA_TLIGHTUSERDATA, 0)
#define LUA_VUSERDATA makevariant(LUA_TUSERDATA, 0)
#define ttislightuserdata(o) checktag((o), LUA_VLIGHTUSERDATA)
#define ttisfulluserdata(o) checktag((o), ctb(LUA_VUSERDATA))
@ -482,7 +483,7 @@ typedef struct Udata0 {
** ===================================================================
*/
#define LUA_VPROTO makevariant(LUA_TPROTO, 1)
#define LUA_VPROTO makevariant(LUA_TPROTO, 0)
/*
@ -559,13 +560,13 @@ typedef struct Proto {
** ===================================================================
*/
#define LUA_VUPVAL makevariant(LUA_TUPVAL, 1)
#define LUA_VUPVAL makevariant(LUA_TUPVAL, 0)
/* Variant tags for functions */
#define LUA_VLCL makevariant(LUA_TFUNCTION, 1) /* Lua closure */
#define LUA_VLCF makevariant(LUA_TFUNCTION, 2) /* light C function */
#define LUA_VCCL makevariant(LUA_TFUNCTION, 3) /* C closure */
#define LUA_VLCL makevariant(LUA_TFUNCTION, 0) /* Lua closure */
#define LUA_VLCF makevariant(LUA_TFUNCTION, 1) /* light C function */
#define LUA_VCCL makevariant(LUA_TFUNCTION, 2) /* C closure */
#define ttisfunction(o) checktype(o, LUA_TFUNCTION)
#define ttisclosure(o) ((rawtt(o) & 0x1F) == LUA_VLCL)
@ -650,7 +651,7 @@ typedef union Closure {
** ===================================================================
*/
#define LUA_VTABLE makevariant(LUA_TTABLE, 1)
#define LUA_VTABLE makevariant(LUA_TTABLE, 0)
#define ttistable(o) checktag((o), ctb(LUA_VTABLE))

Loading…
Cancel
Save