diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2001-02-02 14:32:00 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2001-02-02 14:32:00 -0200 |
| commit | 1f9e3731d17df79461a0dc57cc9bd159c70ac56f (patch) | |
| tree | 9d70e6876074359376df6bb8dc03a3d5134da2ec | |
| parent | 42224ca5538293f2b4a217e813bc437ca673b3cf (diff) | |
| download | lua-1f9e3731d17df79461a0dc57cc9bd159c70ac56f.tar.gz lua-1f9e3731d17df79461a0dc57cc9bd159c70ac56f.tar.bz2 lua-1f9e3731d17df79461a0dc57cc9bd159c70ac56f.zip | |
back to the basics (well-behaved variant record...)
| -rw-r--r-- | lgc.c | 4 | ||||
| -rw-r--r-- | lobject.h | 30 | ||||
| -rw-r--r-- | ltable.h | 6 |
3 files changed, 19 insertions, 21 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lgc.c,v 1.85 2001/02/02 15:13:05 roberto Exp roberto $ | 2 | ** $Id: lgc.c,v 1.86 2001/02/02 16:23:20 roberto Exp roberto $ |
| 3 | ** Garbage Collector | 3 | ** Garbage Collector |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -147,7 +147,7 @@ static void traversetable (GCState *st, Hash *h) { | |||
| 147 | Node *n = node(h, i); | 147 | Node *n = node(h, i); |
| 148 | if (ttype(val(n)) == LUA_TNIL) { | 148 | if (ttype(val(n)) == LUA_TNIL) { |
| 149 | if (ttype_key(n) != LUA_TNIL) | 149 | if (ttype_key(n) != LUA_TNIL) |
| 150 | n->key_value.v = NULL; /* dead key; remove it */ | 150 | n->key_value.ts = NULL; /* dead key; remove it */ |
| 151 | } | 151 | } |
| 152 | else { | 152 | else { |
| 153 | lua_assert(ttype_key(n) != LUA_TNIL); | 153 | lua_assert(ttype_key(n) != LUA_TNIL); |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lobject.h,v 1.92 2001/02/01 17:40:48 roberto Exp roberto $ | 2 | ** $Id: lobject.h,v 1.93 2001/02/02 15:13:05 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 | */ |
| @@ -36,7 +36,10 @@ | |||
| 36 | 36 | ||
| 37 | 37 | ||
| 38 | typedef union { | 38 | typedef union { |
| 39 | void *v; | 39 | struct TString *ts; |
| 40 | struct Closure *cl; | ||
| 41 | struct Hash *h; | ||
| 42 | struct CallInfo *info; | ||
| 40 | lua_Number n; /* LUA_TNUMBER */ | 43 | lua_Number n; /* LUA_TNUMBER */ |
| 41 | } Value; | 44 | } Value; |
| 42 | 45 | ||
| @@ -50,10 +53,10 @@ typedef struct lua_TObject { | |||
| 50 | /* Macros to access values */ | 53 | /* Macros to access values */ |
| 51 | #define ttype(o) ((o)->tt) | 54 | #define ttype(o) ((o)->tt) |
| 52 | #define nvalue(o) ((o)->value.n) | 55 | #define nvalue(o) ((o)->value.n) |
| 53 | #define tsvalue(o) ((struct TString *)(o)->value.v) | 56 | #define tsvalue(o) ((o)->value.ts) |
| 54 | #define clvalue(o) ((struct Closure *)(o)->value.v) | 57 | #define clvalue(o) ((o)->value.cl) |
| 55 | #define hvalue(o) ((struct Hash *)(o)->value.v) | 58 | #define hvalue(o) ((o)->value.h) |
| 56 | #define infovalue(o) ((struct CallInfo *)(o)->value.v) | 59 | #define infovalue(o) ((o)->value.info) |
| 57 | #define svalue(o) (tsvalue(o)->str) | 60 | #define svalue(o) (tsvalue(o)->str) |
| 58 | 61 | ||
| 59 | 62 | ||
| @@ -62,24 +65,19 @@ typedef struct lua_TObject { | |||
| 62 | { TObject *_o=(obj); _o->tt=LUA_TNUMBER; _o->value.n=(x); } | 65 | { TObject *_o=(obj); _o->tt=LUA_TNUMBER; _o->value.n=(x); } |
| 63 | 66 | ||
| 64 | #define setsvalue(obj,x) \ | 67 | #define setsvalue(obj,x) \ |
| 65 | { TObject *_o=(obj); struct TString *_v=(x); \ | 68 | { TObject *_o=(obj); _o->tt=LUA_TSTRING; _o->value.ts=(x); } |
| 66 | _o->tt=LUA_TSTRING; _o->value.v=_v; } | ||
| 67 | 69 | ||
| 68 | #define setuvalue(obj,x) \ | 70 | #define setuvalue(obj,x) \ |
| 69 | { TObject *_o=(obj); struct TString *_v=(x); \ | 71 | { TObject *_o=(obj); _o->tt=LUA_TUSERDATA; _o->value.ts=(x); } |
| 70 | _o->tt=LUA_TUSERDATA; _o->value.v=_v; } | ||
| 71 | 72 | ||
| 72 | #define setclvalue(obj,x) \ | 73 | #define setclvalue(obj,x) \ |
| 73 | { TObject *_o=(obj); struct Closure *_v=(x); \ | 74 | { TObject *_o=(obj); _o->tt=LUA_TFUNCTION; _o->value.cl=(x); } |
| 74 | _o->tt=LUA_TFUNCTION; _o->value.v=_v; } | ||
| 75 | 75 | ||
| 76 | #define sethvalue(obj,x) \ | 76 | #define sethvalue(obj,x) \ |
| 77 | { TObject *_o=(obj); struct Hash *_v=(x); \ | 77 | { TObject *_o=(obj); _o->tt=LUA_TTABLE; _o->value.h=(x); } |
| 78 | _o->tt=LUA_TTABLE; _o->value.v=_v; } | ||
| 79 | 78 | ||
| 80 | #define setivalue(obj,x) \ | 79 | #define setivalue(obj,x) \ |
| 81 | { TObject *_o=(obj); struct CallInfo *_v=(x); \ | 80 | { TObject *_o=(obj); _o->tt=LUA_TMARK; _o->value.info=(x); } |
| 82 | _o->tt=LUA_TMARK; _o->value.v=_v; } | ||
| 83 | 81 | ||
| 84 | #define setnilvalue(obj) ((obj)->tt=LUA_TNIL) | 82 | #define setnilvalue(obj) ((obj)->tt=LUA_TNIL) |
| 85 | 83 | ||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: ltable.h,v 1.30 2001/01/29 13:02:20 roberto Exp roberto $ | 2 | ** $Id: ltable.h,v 1.31 2001/01/29 17:17:26 roberto Exp roberto $ |
| 3 | ** Lua tables (hash) | 3 | ** Lua tables (hash) |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -15,13 +15,13 @@ | |||
| 15 | 15 | ||
| 16 | #define ttype_key(_n) ((_n)->key_tt) | 16 | #define ttype_key(_n) ((_n)->key_tt) |
| 17 | #define nvalue_key(_n) ((_n)->key_value.n) | 17 | #define nvalue_key(_n) ((_n)->key_value.n) |
| 18 | #define tsvalue_key(_n) ((TString *)(_n)->key_value.v) | 18 | #define tsvalue_key(_n) ((_n)->key_value.ts) |
| 19 | #define setkey2obj(_o,_k) \ | 19 | #define setkey2obj(_o,_k) \ |
| 20 | ((_o)->tt = ttype_key(_k), (_o)->value = (_k)->key_value) | 20 | ((_o)->tt = ttype_key(_k), (_o)->value = (_k)->key_value) |
| 21 | #define setobj2key(_k,_o) \ | 21 | #define setobj2key(_k,_o) \ |
| 22 | (ttype_key(_k) = (_o)->tt, (_k)->key_value = (_o)->value) | 22 | (ttype_key(_k) = (_o)->tt, (_k)->key_value = (_o)->value) |
| 23 | 23 | ||
| 24 | #define luaH_get(_t,_k) luaH_set(NULL,_t,_k) | 24 | #define luaH_get(_t,_k) luaH_set(NULL,_t,_k) |
| 25 | #define luaH_getnum(_t,_k) luaH_setnum(NULL,_t,_k) | 25 | #define luaH_getnum(_t,_k) luaH_setnum(NULL,_t,_k) |
| 26 | #define luaH_getstr(_t,_k) luaH_setstr(NULL,_t,_k) | 26 | #define luaH_getstr(_t,_k) luaH_setstr(NULL,_t,_k) |
| 27 | 27 | ||
