aboutsummaryrefslogtreecommitdiff
path: root/lobject.h
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2017-06-29 12:06:44 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2017-06-29 12:06:44 -0300
commitf96497397addca22f22a6ba6eeabc906be43f16b (patch)
treeaf8d27b9af36dfe0b0b6e0f765ea90b95b110efc /lobject.h
parent5a1c8d8ef343bf0157851a4832c2c937b812b64f (diff)
downloadlua-f96497397addca22f22a6ba6eeabc906be43f16b.tar.gz
lua-f96497397addca22f22a6ba6eeabc906be43f16b.tar.bz2
lua-f96497397addca22f22a6ba6eeabc906be43f16b.zip
new type 'StackValue' for stack elements
(we may want to put extra info there in the future)
Diffstat (limited to 'lobject.h')
-rw-r--r--lobject.h33
1 files changed, 22 insertions, 11 deletions
diff --git a/lobject.h b/lobject.h
index 9af501af..769be79d 100644
--- a/lobject.h
+++ b/lobject.h
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lobject.h,v 2.123 2017/06/12 14:21:44 roberto Exp roberto $ 2** $Id: lobject.h,v 2.124 2017/06/27 11:35:31 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*/
@@ -110,7 +110,7 @@ typedef union Value {
110#define TValuefields Value value_; lu_byte tt_ 110#define TValuefields Value value_; lu_byte tt_
111 111
112 112
113typedef struct lua_TValue { 113typedef struct TValue {
114 TValuefields; 114 TValuefields;
115} TValue; 115} TValue;
116 116
@@ -282,13 +282,15 @@ typedef struct lua_TValue {
282** different types of assignments, according to destination 282** different types of assignments, according to destination
283*/ 283*/
284 284
285/* from stack to (same) stack */ 285/* from stack to stack */
286#define setobjs2s setobj 286#define setobjs2s(L,o1,o2) setobj(L,s2v(o1),s2v(o2))
287/* to stack (not from same stack) */ 287/* to stack (not from same stack) */
288#define setobj2s setobj 288#define setobj2s(L,o1,o2) setobj(L,s2v(o1),o2)
289#define setsvalue2s setsvalue 289#define setsvalue2s(L,o,s) setsvalue(L,s2v(o),s)
290#define sethvalue2s sethvalue 290#define sethvalue2s(L,o,h) sethvalue(L,s2v(o),h)
291#define setptvalue2s setptvalue 291#define setthvalue2s(L,o,t) setthvalue(L,s2v(o),t)
292#define setptvalue2s(L,o,p) setptvalue(L,s2v(o),p)
293#define setclLvalue2s(L,o,cl) setclLvalue(L,s2v(o),cl)
292/* from table to same table */ 294/* from table to same table */
293#define setobjt2t setobj 295#define setobjt2t setobj
294/* to new object */ 296/* to new object */
@@ -307,9 +309,16 @@ typedef struct lua_TValue {
307*/ 309*/
308 310
309 311
310typedef TValue *StkId; /* index to stack elements */ 312typedef union StackValue {
313 TValue val;
314} StackValue;
311 315
312 316
317typedef StackValue *StkId; /* index to stack elements */
318
319/* convert a 'StackValue' to a 'TValue' */
320#define s2v(o) (&(o)->val)
321
313 322
314 323
315/* 324/*
@@ -620,11 +629,13 @@ LUAI_FUNC int luaO_int2fb (unsigned int x);
620LUAI_FUNC int luaO_fb2int (int x); 629LUAI_FUNC int luaO_fb2int (int x);
621LUAI_FUNC int luaO_utf8esc (char *buff, unsigned long x); 630LUAI_FUNC int luaO_utf8esc (char *buff, unsigned long x);
622LUAI_FUNC int luaO_ceillog2 (unsigned int x); 631LUAI_FUNC int luaO_ceillog2 (unsigned int x);
632LUAI_FUNC int luaO_rawarith (lua_State *L, int op, const TValue *p1,
633 const TValue *p2, TValue *res);
623LUAI_FUNC void luaO_arith (lua_State *L, int op, const TValue *p1, 634LUAI_FUNC void luaO_arith (lua_State *L, int op, const TValue *p1,
624 const TValue *p2, TValue *res); 635 const TValue *p2, StkId res);
625LUAI_FUNC size_t luaO_str2num (const char *s, TValue *o); 636LUAI_FUNC size_t luaO_str2num (const char *s, TValue *o);
626LUAI_FUNC int luaO_hexavalue (int c); 637LUAI_FUNC int luaO_hexavalue (int c);
627LUAI_FUNC void luaO_tostring (lua_State *L, StkId obj); 638LUAI_FUNC void luaO_tostring (lua_State *L, TValue *obj);
628LUAI_FUNC const char *luaO_pushvfstring (lua_State *L, const char *fmt, 639LUAI_FUNC const char *luaO_pushvfstring (lua_State *L, const char *fmt,
629 va_list argp); 640 va_list argp);
630LUAI_FUNC const char *luaO_pushfstring (lua_State *L, const char *fmt, ...); 641LUAI_FUNC const char *luaO_pushfstring (lua_State *L, const char *fmt, ...);