1010#include " llimits.h"
1111#include " lua.h"
1212
13+ #include < utility>
1314
1415/*
1516** tags for Tagged Values have the following use of bits:
2021
2122/* add variant bits to a type */
2223constexpr int makevariant (int t, int v) noexcept { return (t | (v << 4 )); }
23-
24-
25- /*
26- ** Extra types for collectable non-values
27- */
28- inline constexpr int LUA_TUPVAL = LUA_NUMTYPES; /* upvalues */
29- inline constexpr int LUA_TPROTO = (LUA_NUMTYPES+1 ); /* function prototypes */
24+ constexpr int makevariant (LuaType t, int v) noexcept { return (std::to_underlying (t) | (v << 4 )); }
3025
3126
3227/*
@@ -37,43 +32,43 @@ inline constexpr int LUA_TPROTO = (LUA_NUMTYPES+1); /* function prototypes */
3732
3833enum class LuaT : lu_byte {
3934 /* Nil variants */
40- NIL = makevariant(LUA_TNIL , 0 ),
41- EMPTY = makevariant(LUA_TNIL , 1 ),
42- ABSTKEY = makevariant(LUA_TNIL , 2 ),
43- NOTABLE = makevariant(LUA_TNIL , 3 ),
35+ NIL = makevariant(LuaType::Nil , 0 ),
36+ EMPTY = makevariant(LuaType::Nil , 1 ),
37+ ABSTKEY = makevariant(LuaType::Nil , 2 ),
38+ NOTABLE = makevariant(LuaType::Nil , 3 ),
4439
4540 /* Boolean variants */
46- VFALSE = makevariant(LUA_TBOOLEAN , 0 ),
47- VTRUE = makevariant(LUA_TBOOLEAN , 1 ),
41+ VFALSE = makevariant(LuaType::Boolean , 0 ),
42+ VTRUE = makevariant(LuaType::Boolean , 1 ),
4843
4944 /* Number variants */
50- NUMINT = makevariant(LUA_TNUMBER , 0 ), /* integer numbers */
51- NUMFLT = makevariant(LUA_TNUMBER , 1 ), /* float numbers */
45+ NUMINT = makevariant(LuaType::Number , 0 ), /* integer numbers */
46+ NUMFLT = makevariant(LuaType::Number , 1 ), /* float numbers */
5247
5348 /* String variants */
54- SHRSTR = makevariant(LUA_TSTRING , 0 ), /* short strings */
55- LNGSTR = makevariant(LUA_TSTRING , 1 ), /* long strings */
49+ SHRSTR = makevariant(LuaType::String , 0 ), /* short strings */
50+ LNGSTR = makevariant(LuaType::String , 1 ), /* long strings */
5651
5752 /* Table variant */
58- TABLE = makevariant(LUA_TTABLE , 0 ),
53+ TABLE = makevariant(LuaType::Table , 0 ),
5954
6055 /* Function variants */
61- LCL = makevariant(LUA_TFUNCTION , 0 ), /* Lua closure */
62- LCF = makevariant(LUA_TFUNCTION , 1 ), /* light C function */
63- CCL = makevariant(LUA_TFUNCTION , 2 ), /* C closure */
56+ LCL = makevariant(LuaType::Function , 0 ), /* Lua closure */
57+ LCF = makevariant(LuaType::Function , 1 ), /* light C function */
58+ CCL = makevariant(LuaType::Function , 2 ), /* C closure */
6459
6560 /* Userdata variants */
66- LIGHTUSERDATA = makevariant(LUA_TLIGHTUSERDATA , 0 ),
67- USERDATA = makevariant(LUA_TUSERDATA, 0 ),
61+ LIGHTUSERDATA = makevariant(LuaType::LightUserdata , 0 ),
62+ USERDATA = makevariant(LuaType::Userdata, 0 ),
6863
6964 /* Thread variant */
70- THREAD = makevariant(LUA_TTHREAD , 0 ),
65+ THREAD = makevariant(LuaType::Thread , 0 ),
7166
7267 /* Upvalue variant (collectable non-value) */
73- UPVAL = makevariant(LUA_TUPVAL , 0 ),
68+ UPVAL = makevariant(LUA_NUMTYPES , 0 ),
7469
7570 /* Proto variant (collectable non-value) */
76- PROTO = makevariant(LUA_TPROTO , 0 )
71+ PROTO = makevariant(LUA_NUMTYPES + 1 , 0 )
7772};
7873
7974/* }================================================================== */
0 commit comments