aboutsummaryrefslogtreecommitdiff
path: root/lobject.h
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-12-23 16:19:57 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-12-23 16:19:57 -0200
commitb1b0c219f5255a0cd0921ebc0a77a81f99b72532 (patch)
tree7cb4d9cbbdb1309b94794eb75694b02f2b08f75a /lobject.h
parentbe3212de781786c0a68365dee1d3510407b5c325 (diff)
downloadlua-b1b0c219f5255a0cd0921ebc0a77a81f99b72532.tar.gz
lua-b1b0c219f5255a0cd0921ebc0a77a81f99b72532.tar.bz2
lua-b1b0c219f5255a0cd0921ebc0a77a81f99b72532.zip
new ttypes to distinguish between C closures and Lua closures.
Diffstat (limited to 'lobject.h')
-rw-r--r--lobject.h28
1 files changed, 18 insertions, 10 deletions
diff --git a/lobject.h b/lobject.h
index 8c6b63f1..8f63a9e3 100644
--- a/lobject.h
+++ b/lobject.h
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lobject.h,v 1.39 1999/12/02 16:24:45 roberto Exp roberto $ 2** $Id: lobject.h,v 1.40 1999/12/14 18:33:29 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*/
@@ -69,25 +69,33 @@ typedef enum {
69 LUA_T_NUMBER = -1, /* fixed tag for numbers */ 69 LUA_T_NUMBER = -1, /* fixed tag for numbers */
70 LUA_T_STRING = -2, /* fixed tag for strings */ 70 LUA_T_STRING = -2, /* fixed tag for strings */
71 LUA_T_ARRAY = -3, /* tag default for tables (or arrays) */ 71 LUA_T_ARRAY = -3, /* tag default for tables (or arrays) */
72 LUA_T_PROTO = -4, /* fixed tag for functions */ 72 LUA_T_LPROTO = -4, /* fixed tag for Lua functions */
73 LUA_T_CPROTO = -5, /* fixed tag for Cfunctions */ 73 LUA_T_CPROTO = -5, /* fixed tag for C functions */
74 LUA_T_NIL = -6, /* last "pre-defined" tag */ 74 LUA_T_NIL = -6, /* last "pre-defined" tag */
75 LUA_T_CLOSURE = -7, 75 LUA_T_LCLOSURE = -7, /* Lua closure */
76 LUA_T_CLMARK = -8, /* mark for closures */ 76 LUA_T_CCLOSURE = -8, /* C closure */
77 LUA_T_PMARK = -9, /* mark for Lua prototypes */ 77 LUA_T_LCLMARK = -9 ,/* mark for Lua closures */
78 LUA_T_CMARK = -10, /* mark for C prototypes */ 78 LUA_T_CCLMARK = -10,/* mark for C closures */
79 LUA_T_LINE = -11 79 LUA_T_LMARK = -11, /* mark for Lua prototypes */
80 LUA_T_CMARK = -12, /* mark for C prototypes */
81 LUA_T_LINE = -13
80} lua_Type; 82} lua_Type;
81 83
82#define NUM_TAGS 7 84#define NUM_TAGS 7
83 85
86/*
87** chech whether t is a mark; ttypes are negative numbers, so the
88** comparisons look reversed. (ORDER LUA_T)
89*/
90#define is_T_MARK(t) (LUA_T_CMARK <= (t) && (t) <= LUA_T_LCLMARK)
91
84 92
85typedef union { 93typedef union {
86 lua_CFunction f; /* LUA_T_CPROTO, LUA_T_CMARK */ 94 lua_CFunction f; /* LUA_T_CPROTO, LUA_T_CMARK */
87 real n; /* LUA_T_NUMBER */ 95 real n; /* LUA_T_NUMBER */
88 struct TaggedString *ts; /* LUA_T_STRING, LUA_T_USERDATA */ 96 struct TaggedString *ts; /* LUA_T_STRING, LUA_T_USERDATA */
89 struct TProtoFunc *tf; /* LUA_T_PROTO, LUA_T_PMARK */ 97 struct TProtoFunc *tf; /* LUA_T_LPROTO, LUA_T_LMARK */
90 struct Closure *cl; /* LUA_T_CLOSURE, LUA_T_CLMARK */ 98 struct Closure *cl; /* LUA_T_[CL]CLOSURE, LUA_T_[CL]CLMARK */
91 struct Hash *a; /* LUA_T_ARRAY */ 99 struct Hash *a; /* LUA_T_ARRAY */
92 int i; /* LUA_T_LINE */ 100 int i; /* LUA_T_LINE */
93} Value; 101} Value;