diff options
Diffstat (limited to 'lobject.h')
-rw-r--r-- | lobject.h | 15 |
1 files changed, 12 insertions, 3 deletions
@@ -52,6 +52,12 @@ | |||
52 | #define LUA_TCCL (LUA_TFUNCTION | (2 << 4)) /* C closure */ | 52 | #define LUA_TCCL (LUA_TFUNCTION | (2 << 4)) /* C closure */ |
53 | 53 | ||
54 | 54 | ||
55 | /* | ||
56 | ** LUA_TSTRING variants */ | ||
57 | #define LUA_TSHRSTR (LUA_TSTRING | (0 << 4)) /* short strings */ | ||
58 | #define LUA_TLNGSTR (LUA_TSTRING | (1 << 4)) /* long strings */ | ||
59 | |||
60 | |||
55 | /* Bit mark for collectable types */ | 61 | /* Bit mark for collectable types */ |
56 | #define BIT_ISCOLLECTABLE (1 << 6) | 62 | #define BIT_ISCOLLECTABLE (1 << 6) |
57 | 63 | ||
@@ -129,7 +135,9 @@ typedef struct lua_TValue TValue; | |||
129 | #define ttisnil(o) checktag((o), LUA_TNIL) | 135 | #define ttisnil(o) checktag((o), LUA_TNIL) |
130 | #define ttisboolean(o) checktag((o), LUA_TBOOLEAN) | 136 | #define ttisboolean(o) checktag((o), LUA_TBOOLEAN) |
131 | #define ttislightuserdata(o) checktag((o), LUA_TLIGHTUSERDATA) | 137 | #define ttislightuserdata(o) checktag((o), LUA_TLIGHTUSERDATA) |
132 | #define ttisstring(o) checktag((o), ctb(LUA_TSTRING)) | 138 | #define ttisstring(o) checktype((o), LUA_TSTRING) |
139 | #define ttisshrstring(o) checktag((o), ctb(LUA_TSHRSTR)) | ||
140 | #define ttislngstring(o) checktag((o), ctb(LUA_TLNGSTR)) | ||
133 | #define ttistable(o) checktag((o), ctb(LUA_TTABLE)) | 141 | #define ttistable(o) checktag((o), ctb(LUA_TTABLE)) |
134 | #define ttisfunction(o) checktype(o, LUA_TFUNCTION) | 142 | #define ttisfunction(o) checktype(o, LUA_TFUNCTION) |
135 | #define ttisclosure(o) ((rttype(o) & 0x1F) == LUA_TFUNCTION) | 143 | #define ttisclosure(o) ((rttype(o) & 0x1F) == LUA_TFUNCTION) |
@@ -199,7 +207,8 @@ typedef struct lua_TValue TValue; | |||
199 | 207 | ||
200 | #define setsvalue(L,obj,x) \ | 208 | #define setsvalue(L,obj,x) \ |
201 | { TValue *io=(obj); \ | 209 | { TValue *io=(obj); \ |
202 | val_(io).gc=cast(GCObject *, (x)); settt_(io, ctb(LUA_TSTRING)); \ | 210 | TString *x_ = (x); \ |
211 | val_(io).gc=cast(GCObject *, x_); settt_(io, ctb(x_->tsv.tt)); \ | ||
203 | checkliveness(G(L),io); } | 212 | checkliveness(G(L),io); } |
204 | 213 | ||
205 | #define setuvalue(L,obj,x) \ | 214 | #define setuvalue(L,obj,x) \ |
@@ -409,7 +418,7 @@ typedef union TString { | |||
409 | L_Umaxalign dummy; /* ensures maximum alignment for strings */ | 418 | L_Umaxalign dummy; /* ensures maximum alignment for strings */ |
410 | struct { | 419 | struct { |
411 | CommonHeader; | 420 | CommonHeader; |
412 | lu_byte extra; /* reserved words for strings */ | 421 | lu_byte extra; /* reserved words for short strings; "has hash" for longs */ |
413 | unsigned int hash; | 422 | unsigned int hash; |
414 | size_t len; /* number of characters in string */ | 423 | size_t len; /* number of characters in string */ |
415 | } tsv; | 424 | } tsv; |