|
@@ -1,5 +1,5 @@
|
|
/*
|
|
/*
|
|
-** $Id: lobject.h,v 1.127 2002/03/18 18:16:16 roberto Exp roberto $
|
|
|
|
|
|
+** $Id: lobject.h,v 1.128 2002/03/25 17:47:14 roberto Exp roberto $
|
|
** Type definitions for Lua objects
|
|
** Type definitions for Lua objects
|
|
** See Copyright Notice in lua.h
|
|
** See Copyright Notice in lua.h
|
|
*/
|
|
*/
|
|
@@ -13,15 +13,15 @@
|
|
|
|
|
|
|
|
|
|
/* tags for values visible from Lua */
|
|
/* tags for values visible from Lua */
|
|
-#define NUM_TAGS 6
|
|
|
|
|
|
+#define NUM_TAGS LUA_TFUNCTION
|
|
|
|
|
|
|
|
|
|
typedef union {
|
|
typedef union {
|
|
|
|
+ void *p;
|
|
union TString *ts;
|
|
union TString *ts;
|
|
union Udata *u;
|
|
union Udata *u;
|
|
union Closure *cl;
|
|
union Closure *cl;
|
|
struct Table *h;
|
|
struct Table *h;
|
|
- struct lua_TObject *v;
|
|
|
|
lua_Number n;
|
|
lua_Number n;
|
|
int b;
|
|
int b;
|
|
} Value;
|
|
} Value;
|
|
@@ -35,12 +35,12 @@ typedef struct lua_TObject {
|
|
|
|
|
|
/* Macros to access values */
|
|
/* Macros to access values */
|
|
#define ttype(o) ((o)->tt)
|
|
#define ttype(o) ((o)->tt)
|
|
|
|
+#define pvalue(o) ((o)->value.p)
|
|
#define nvalue(o) ((o)->value.n)
|
|
#define nvalue(o) ((o)->value.n)
|
|
#define tsvalue(o) ((o)->value.ts)
|
|
#define tsvalue(o) ((o)->value.ts)
|
|
#define uvalue(o) ((o)->value.u)
|
|
#define uvalue(o) ((o)->value.u)
|
|
#define clvalue(o) ((o)->value.cl)
|
|
#define clvalue(o) ((o)->value.cl)
|
|
#define hvalue(o) ((o)->value.h)
|
|
#define hvalue(o) ((o)->value.h)
|
|
-#define vvalue(o) ((o)->value.v)
|
|
|
|
#define bvalue(o) ((o)->value.b)
|
|
#define bvalue(o) ((o)->value.b)
|
|
|
|
|
|
#define l_isfalse(o) (ttype(o) == LUA_TNIL || \
|
|
#define l_isfalse(o) (ttype(o) == LUA_TNIL || \
|
|
@@ -52,6 +52,9 @@ typedef struct lua_TObject {
|
|
|
|
|
|
#define chgnvalue(obj,x) ((obj)->value.n=(x))
|
|
#define chgnvalue(obj,x) ((obj)->value.n=(x))
|
|
|
|
|
|
|
|
+#define setpvalue(obj,x) \
|
|
|
|
+ { TObject *i_o=(obj); i_o->tt=LUA_TUDATAVAL; i_o->value.p=(x); }
|
|
|
|
+
|
|
#define setbvalue(obj,x) \
|
|
#define setbvalue(obj,x) \
|
|
{ TObject *i_o=(obj); i_o->tt=LUA_TBOOLEAN; i_o->value.b=(x); }
|
|
{ TObject *i_o=(obj); i_o->tt=LUA_TBOOLEAN; i_o->value.b=(x); }
|
|
|
|
|
|
@@ -69,9 +72,6 @@ typedef struct lua_TObject {
|
|
|
|
|
|
#define setnilvalue(obj) ((obj)->tt=LUA_TNIL)
|
|
#define setnilvalue(obj) ((obj)->tt=LUA_TNIL)
|
|
|
|
|
|
-#define setupvalue(obj,x,t) \
|
|
|
|
- { TObject *i_o=(obj); i_o->tt=(t); i_o->value.v=(x); }
|
|
|
|
-
|
|
|
|
#define setobj(obj1,obj2) \
|
|
#define setobj(obj1,obj2) \
|
|
{ TObject *o1=(obj1); const TObject *o2=(obj2); \
|
|
{ TObject *o1=(obj1); const TObject *o2=(obj2); \
|
|
o1->tt=o2->tt; o1->value = o2->value; }
|
|
o1->tt=o2->tt; o1->value = o2->value; }
|
|
@@ -106,9 +106,8 @@ typedef union Udata {
|
|
union L_Umaxalign dummy; /* ensures maximum alignment for `local' udata */
|
|
union L_Umaxalign dummy; /* ensures maximum alignment for `local' udata */
|
|
struct {
|
|
struct {
|
|
struct Table *metatable;
|
|
struct Table *metatable;
|
|
- void *value;
|
|
|
|
union Udata *next; /* chain for list of all udata */
|
|
union Udata *next; /* chain for list of all udata */
|
|
- size_t len; /* least bit reserved for gc mark */
|
|
|
|
|
|
+ size_t len; /* least 2 bits reserved for gc mark */
|
|
} uv;
|
|
} uv;
|
|
} Udata;
|
|
} Udata;
|
|
|
|
|