aboutsummaryrefslogtreecommitdiff
path: root/lua.h
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-11-22 11:12:07 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-11-22 11:12:07 -0200
commit29ede6aa13144ff7b69c57a87be1ee93f57ae896 (patch)
treeadcfb5dcff7db55481cd675349e23dec0e63c939 /lua.h
parent951897c09319ae5474a4b86bb7d615136577caa0 (diff)
downloadlua-29ede6aa13144ff7b69c57a87be1ee93f57ae896.tar.gz
lua-29ede6aa13144ff7b69c57a87be1ee93f57ae896.tar.bz2
lua-29ede6aa13144ff7b69c57a87be1ee93f57ae896.zip
first implementation of multiple states (reentrant code).
Diffstat (limited to 'lua.h')
-rw-r--r--lua.h235
1 files changed, 145 insertions, 90 deletions
diff --git a/lua.h b/lua.h
index 12cbb626..aed37bad 100644
--- a/lua.h
+++ b/lua.h
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lua.h,v 1.36 1999/10/07 19:04:30 roberto Exp roberto $ 2** $Id: lua.h,v 1.37 1999/11/11 17:02:40 roberto Exp roberto $
3** Lua - An Extensible Extension Language 3** Lua - An Extensible Extension Language
4** TeCGraf: Grupo de Tecnologia em Computacao Grafica, PUC-Rio, Brazil 4** TeCGraf: Grupo de Tecnologia em Computacao Grafica, PUC-Rio, Brazil
5** e-mail: lua@tecgraf.puc-rio.br 5** e-mail: lua@tecgraf.puc-rio.br
@@ -21,144 +21,199 @@
21#define LUA_NOREF (-2) 21#define LUA_NOREF (-2)
22#define LUA_REFNIL (-1) 22#define LUA_REFNIL (-1)
23 23
24#define LUA_ANYTAG (-1) 24#define LUA_ANYTAG (-1)
25 25
26typedef struct lua_State lua_State; 26typedef struct lua_State lua_State;
27extern lua_State *lua_state;
28 27
29typedef void (*lua_CFunction) (void); 28typedef void (*lua_CFunction) ();
30typedef unsigned int lua_Object; 29typedef unsigned int lua_Object;
31 30
32void lua_open (void); 31lua_State *lua_newstate (void);
33void lua_close (void); 32void lua_close (lua_State *L);
34lua_State *lua_setstate (lua_State *st);
35 33
36lua_Object lua_settagmethod (int tag, const char *event); 34lua_Object lua_settagmethod (lua_State *L, int tag, const char *event);
37 /* In: new method */ 35 /* In: new method */
38lua_Object lua_gettagmethod (int tag, const char *event); 36lua_Object lua_gettagmethod (lua_State *L, int tag, const char *event);
39 37
40int lua_newtag (void); 38int lua_newtag (lua_State *L);
41int lua_copytagmethods (int tagto, int tagfrom); 39int lua_copytagmethods (lua_State *L, int tagto, int tagfrom);
42void lua_settag (int tag); /* In: object */ 40void lua_settag (lua_State *L, int tag); /* In: object */
43 41
44void lua_error (const char *s); 42void lua_error (lua_State *L, const char *s);
45int lua_dofile (const char *filename); 43int lua_dofile (lua_State *L, const char *filename);
46 /* Out: returns */ 44 /* Out: returns */
47int lua_dostring (const char *string); 45int lua_dostring (lua_State *L, const char *string);
48 /* Out: returns */ 46 /* Out: returns */
49int lua_dobuffer (const char *buff, int size, 47int lua_dobuffer (lua_State *L, const char *buff, int size,
50 const char *name); /* Out: returns */ 48 const char *name); /* Out: returns */
51int lua_callfunction (lua_Object f); 49int lua_callfunction (lua_State *L, lua_Object f);
52 /* In: parameters; Out: returns */ 50 /* In: parameters; Out: returns */
53 51
54void lua_beginblock (void); 52void lua_beginblock (lua_State *L);
55void lua_endblock (void); 53void lua_endblock (lua_State *L);
56 54
57lua_Object lua_lua2C (int number); 55lua_Object lua_lua2C (lua_State *L, int number);
58#define lua_getparam(_) lua_lua2C(_) 56#define lua_getparam lua_lua2C
59#define lua_getresult(_) lua_lua2C(_) 57#define lua_getresult lua_lua2C
60 58
61const char *lua_type (lua_Object object); 59const char *lua_type (lua_State *L, lua_Object object);
62 60
63int lua_isnil (lua_Object object); 61int lua_isnil (lua_State *L, lua_Object object);
64int lua_istable (lua_Object object); 62int lua_istable (lua_State *L, lua_Object object);
65int lua_isuserdata (lua_Object object); 63int lua_isuserdata (lua_State *L, lua_Object object);
66int lua_iscfunction (lua_Object object); 64int lua_iscfunction (lua_State *L, lua_Object object);
67int lua_isnumber (lua_Object object); 65int lua_isnumber (lua_State *L, lua_Object object);
68int lua_isstring (lua_Object object); 66int lua_isstring (lua_State *L, lua_Object object);
69int lua_isfunction (lua_Object object); 67int lua_isfunction (lua_State *L, lua_Object object);
70 68
71int lua_equalobj (lua_Object o1, lua_Object o2); 69int lua_equalobj (lua_State *L, lua_Object o1, lua_Object o2);
72 70
73double lua_getnumber (lua_Object object); 71double lua_getnumber (lua_State *L, lua_Object object);
74const char *lua_getstring (lua_Object object); 72const char *lua_getstring (lua_State *L, lua_Object object);
75long lua_strlen (lua_Object object); 73long lua_strlen (lua_State *L, lua_Object object);
76lua_CFunction lua_getcfunction (lua_Object object); 74lua_CFunction lua_getcfunction (lua_State *L, lua_Object object);
77void *lua_getuserdata (lua_Object object); 75void *lua_getuserdata (lua_State *L, lua_Object object);
78 76
79 77
80void lua_pushnil (void); 78void lua_pushnil (lua_State *L);
81void lua_pushnumber (double n); 79void lua_pushnumber (lua_State *L, double n);
82void lua_pushlstring (const char *s, long len); 80void lua_pushlstring (lua_State *L, const char *s, long len);
83void lua_pushstring (const char *s); 81void lua_pushstring (lua_State *L, const char *s);
84void lua_pushcclosure (lua_CFunction fn, int n); 82void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n);
85void lua_pushusertag (void *u, int tag); 83void lua_pushusertag (lua_State *L, void *u, int tag);
86void lua_pushobject (lua_Object object); 84void lua_pushobject (lua_State *L, lua_Object object);
87 85
88lua_Object lua_pop (void); 86lua_Object lua_pop (lua_State *L);
89 87
90lua_Object lua_getglobal (const char *name); 88lua_Object lua_getglobal (lua_State *L, const char *name);
91lua_Object lua_rawgetglobal (const char *name); 89lua_Object lua_rawgetglobal (lua_State *L, const char *name);
92void lua_setglobal (const char *name); /* In: value */ 90void lua_setglobal (lua_State *L, const char *name); /* In: value */
93void lua_rawsetglobal (const char *name); /* In: value */ 91void lua_rawsetglobal (lua_State *L, const char *name);/* In: value */
94 92
95void lua_settable (void); /* In: table, index, value */ 93void lua_settable (lua_State *L); /* In: table, index, value */
96void lua_rawsettable (void); /* In: table, index, value */ 94void lua_rawsettable (lua_State *L); /* In: table, index, value */
97lua_Object lua_gettable (void); /* In: table, index */ 95lua_Object lua_gettable (lua_State *L); /* In: table, index */
98lua_Object lua_rawgettable (void); /* In: table, index */ 96lua_Object lua_rawgettable (lua_State *L); /* In: table, index */
99 97
100int lua_tag (lua_Object object); 98int lua_tag (lua_State *L, lua_Object object);
101 99
102const char *lua_nextvar (const char *varname); /* Out: value */ 100const char *lua_nextvar (lua_State *L, const char *varname); /* Out: value */
103int lua_next (lua_Object o, int i); 101int lua_next (lua_State *L, lua_Object o, int i);
104 /* Out: ref, value */ 102 /* Out: ref, value */
105 103
106int lua_ref (int lock); /* In: value */ 104int lua_ref (lua_State *L, int lock); /* In: value */
107lua_Object lua_getref (int ref); 105lua_Object lua_getref (lua_State *L, int ref);
108void lua_unref (int ref); 106void lua_unref (lua_State *L, int ref);
109 107
110lua_Object lua_createtable (void); 108lua_Object lua_createtable (lua_State *L);
111 109
112long lua_collectgarbage (long limit); 110long lua_collectgarbage (lua_State *L, long limit);
113 111
114 112
115/* =============================================================== */ 113lua_Object lua_seterrormethod (lua_State *L); /* In: new method */
116/* some useful macros/functions */
117 114
118#define lua_call(name) lua_callfunction(lua_getglobal(name)) 115lua_State *lua_setstate (lua_State *st);
119 116
120#define lua_pushref(ref) lua_pushobject(lua_getref(ref))
121 117
122#define lua_refobject(o,l) (lua_pushobject(o), lua_ref(l)) 118/*
119** ===============================================================
120** some useful macros
121** ===============================================================
122*/
123 123
124#define lua_register(n,f) (lua_pushcfunction(f), lua_setglobal(n)) 124#ifdef LUA_REENTRANT
125 125
126#define lua_pushuserdata(u) lua_pushusertag(u, 0) 126#define lua_call(L,name) lua_callfunction(L, lua_getglobal(L, name))
127#define lua_pushref(L,ref) lua_pushobject(L, lua_getref(L, ref))
128#define lua_refobject(L,o,l) (lua_pushobject(L, o), lua_ref(L, l))
129#define lua_register(L,n,f) (lua_pushcfunction(L, f), lua_setglobal(L, n))
130#define lua_pushuserdata(L,u) lua_pushusertag(L, u, 0)
131#define lua_pushcfunction(L,f) lua_pushcclosure(L, f, 0)
132#define lua_clonetag(L,t) lua_copytagmethods(L, lua_newtag(L), (t))
127 133
128#define lua_pushcfunction(f) lua_pushcclosure(f, 0) 134#else
129 135
136#define lua_call(name) lua_callfunction(lua_getglobal(name))
137#define lua_pushref(ref) lua_pushobject(lua_getref(ref))
138#define lua_refobject(o,l) (lua_pushobject(o), lua_ref(l))
139#define lua_register(n,f) (lua_pushcfunction(f), lua_setglobal(n))
140#define lua_pushuserdata(u) lua_pushusertag(u, 0)
141#define lua_pushcfunction(f) lua_pushcclosure(f, 0)
130#define lua_clonetag(t) lua_copytagmethods(lua_newtag(), (t)) 142#define lua_clonetag(t) lua_copytagmethods(lua_newtag(), (t))
131 143
132lua_Object lua_seterrormethod (void); /* In: new method */ 144#endif
133
134/* ==========================================================================
135** for compatibility with old versions. Avoid using these macros/functions
136** If your program does need any of these, define LUA_COMPAT2_5
137*/
138
139
140#ifdef LUA_COMPAT2_5
141
142
143 145
144#define lua_storeglobal lua_setglobal
145 146
146#define lua_lockobject(o) lua_refobject(o,1)
147#define lua_lock() lua_ref(1)
148#define lua_getlocked lua_getref
149#define lua_pushlocked lua_pushref
150#define lua_unlock lua_unref
151 147
152#define lua_pushliteral(o) lua_pushstring(o) 148#ifndef LUA_REENTRANT
149/*
150** ===============================================================
151** Macros for single-state use
152** ===============================================================
153*/
153 154
154#define lua_getindexed(o,n) (lua_pushobject(o), lua_pushnumber(n), lua_gettable()) 155extern lua_State *lua_state;
155#define lua_getfield(o,f) (lua_pushobject(o), lua_pushstring(f), lua_gettable())
156 156
157#define lua_getsubscript lua_gettable 157#define lua_open() ((void)(lua_state?0:(lua_state=lua_newstate())))
158#define lua_storesubscript lua_settable 158
159#define lua_close() (lua_close)(lua_state)
160#define lua_setstate(st) (lua_setstate)(lua_state, st)
161#define lua_settagmethod(tag,event) (lua_settagmethod)(lua_state, tag,event)
162#define lua_gettagmethod(tag,event) (lua_gettagmethod)(lua_state, tag,event)
163#define lua_newtag() (lua_newtag)(lua_state)
164#define lua_copytagmethods(tagto,tagfrom) \
165 (lua_copytagmethods)(lua_state, tagto,tagfrom)
166#define lua_settag(tag) (lua_settag)(lua_state, tag)
167#define lua_error(s) (lua_error)(lua_state, s)
168#define lua_dofile(filename) (lua_dofile)(lua_state, filename)
169#define lua_dostring(string) (lua_dostring)(lua_state, string)
170#define lua_callfunction(f) (lua_callfunction)(lua_state, f)
171#define lua_beginblock() (lua_beginblock)(lua_state)
172#define lua_endblock() (lua_endblock)(lua_state)
173#define lua_lua2C(number) (lua_lua2C)(lua_state, number)
174#define lua_type(object) (lua_type)(lua_state, object)
175#define lua_isnil(object) (lua_isnil)(lua_state, object)
176#define lua_istable(object) (lua_istable)(lua_state, object)
177#define lua_isuserdata(object) (lua_isuserdata)(lua_state, object)
178#define lua_iscfunction(object) (lua_iscfunction)(lua_state, object)
179#define lua_isnumber(object) (lua_isnumber)(lua_state, object)
180#define lua_isstring(object) (lua_isstring)(lua_state, object)
181#define lua_isfunction(object) (lua_isfunction)(lua_state, object)
182#define lua_equalobj(o1,o2) (lua_equalobj)(lua_state, o1,o2)
183#define lua_getnumber(object) (lua_getnumber)(lua_state, object)
184#define lua_getstring(object) (lua_getstring)(lua_state, object)
185#define lua_strlen(object) (lua_strlen)(lua_state, object)
186#define lua_getcfunction(object) (lua_getcfunction)(lua_state, object)
187#define lua_getuserdata(object) (lua_getuserdata)(lua_state, object)
188#define lua_pushnil() (lua_pushnil)(lua_state)
189#define lua_pushnumber(n) (lua_pushnumber)(lua_state, n)
190#define lua_pushlstring(s,len) (lua_pushlstring)(lua_state, s,len)
191#define lua_pushstring(s) (lua_pushstring)(lua_state, s)
192#define lua_pushcclosure(fn,n) (lua_pushcclosure)(lua_state, fn,n)
193#define lua_pushusertag(u,tag) (lua_pushusertag)(lua_state, u,tag)
194#define lua_pushobject(object) (lua_pushobject)(lua_state, object)
195#define lua_pop() (lua_pop)(lua_state)
196#define lua_getglobal(name) (lua_getglobal)(lua_state, name)
197#define lua_rawgetglobal(name) (lua_rawgetglobal)(lua_state, name)
198#define lua_setglobal(name) (lua_setglobal)(lua_state, name)
199#define lua_rawsetglobal(name) (lua_rawsetglobal)(lua_state, name)
200#define lua_settable() (lua_settable)(lua_state)
201#define lua_rawsettable() (lua_rawsettable)(lua_state)
202#define lua_gettable() (lua_gettable)(lua_state)
203#define lua_rawgettable() (lua_rawgettable)(lua_state)
204#define lua_tag(object) (lua_tag)(lua_state, object)
205#define lua_nextvar(varname) (lua_nextvar)(lua_state, varname)
206#define lua_next(o,i) (lua_next)(lua_state, o,i)
207#define lua_ref(lock) (lua_ref)(lua_state, lock)
208#define lua_getref(ref) (lua_getref)(lua_state, ref)
209#define lua_unref(ref) (lua_unref)(lua_state, ref)
210#define lua_createtable() (lua_createtable)(lua_state)
211#define lua_collectgarbage(limit) (lua_collectgarbage)(lua_state, limit)
212#define lua_seterrormethod() (lua_seterrormethod)(lua_state)
159 213
160#endif 214#endif
161 215
216
162#endif 217#endif
163 218
164 219