Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4680 right-hear 1
/*
2
** $Id: lua.h,v 1.276 2010/10/26 19:32:19 roberto Exp $
3
** Lua - A Scripting Language
4
** Lua.org, PUC-Rio, Brazil (http://www.lua.org)
5
** See Copyright Notice at the end of this file
6
*/
7
 
8
 
9
#ifndef lua_h
10
#define lua_h
11
 
12
#include 
13
#include 
14
 
15
 
16
#include "luaconf.h"
17
 
18
 
19
#define LUA_VERSION_MAJOR	"5"
20
#define LUA_VERSION_MINOR	"2"
21
#define LUA_VERSION_RELEASE	"0" " (alpha)"
22
 
23
#define LUA_VERSION	"Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
24
#define LUA_RELEASE	LUA_VERSION "." LUA_VERSION_RELEASE
25
#define LUA_VERSION_NUM	502
26
#define LUA_COPYRIGHT	LUA_RELEASE "  Copyright (C) 1994-2010 Lua.org, PUC-Rio"
27
#define LUA_AUTHORS	"R. Ierusalimschy, L. H. de Figueiredo, W. Celes"
28
 
29
 
30
/* mark for precompiled code ('Lua') */
31
#define LUA_SIGNATURE	"\033Lua"
32
 
33
/* option for multiple returns in 'lua_pcall' and 'lua_call' */
34
#define LUA_MULTRET	(-1)
35
 
36
 
37
/*
38
** pseudo-indices
39
*/
40
#define LUA_REGISTRYINDEX	LUAI_FIRSTPSEUDOIDX
41
#define lua_upvalueindex(i)	(LUA_REGISTRYINDEX - (i))
42
 
43
 
44
/* thread status */
45
#define LUA_OK		0
46
#define LUA_YIELD	1
47
#define LUA_ERRRUN	2
48
#define LUA_ERRSYNTAX	3
49
#define LUA_ERRMEM	4
50
#define LUA_ERRGCMM	5
51
#define LUA_ERRERR	6
52
 
53
 
54
typedef struct lua_State lua_State;
55
 
56
typedef int (*lua_CFunction) (lua_State *L);
57
 
58
 
59
/*
60
** functions that read/write blocks when loading/dumping Lua chunks
61
*/
62
typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz);
63
 
64
typedef int (*lua_Writer) (lua_State *L, const void* p, size_t sz, void* ud);
65
 
66
 
67
/*
68
** prototype for memory-allocation functions
69
*/
70
typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize);
71
 
72
 
73
/*
74
** basic types
75
*/
76
#define LUA_TNONE		(-1)
77
 
78
#define LUA_TNIL		0
79
#define LUA_TBOOLEAN		1
80
#define LUA_TLIGHTUSERDATA	2
81
#define LUA_TNUMBER		3
82
#define LUA_TSTRING		4
83
#define LUA_TTABLE		5
84
#define LUA_TFUNCTION		6
85
#define LUA_TUSERDATA		7
86
#define LUA_TTHREAD		8
87
 
88
#define LUA_NUMTAGS		9
89
 
90
 
91
 
92
/* minimum Lua stack available to a C function */
93
#define LUA_MINSTACK	20
94
 
95
 
96
/* predefined values in the registry */
97
#define LUA_RIDX_MAINTHREAD	1
98
#define LUA_RIDX_GLOBALS	2
99
#define LUA_RIDX_LAST		LUA_RIDX_GLOBALS
100
 
101
 
102
/* type of numbers in Lua */
103
typedef LUA_NUMBER lua_Number;
104
 
105
 
106
/* type for integer functions */
107
typedef LUA_INTEGER lua_Integer;
108
 
109
/* unsigned integer type */
110
typedef LUA_UNSIGNED lua_Unsigned;
111
 
112
 
113
 
114
/*
115
** generic extra include file
116
*/
117
#if defined(LUA_USER_H)
118
#include LUA_USER_H
119
#endif
120
 
121
 
122
 
123
/*
124
** state manipulation
125
*/
126
LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud);
127
LUA_API void       (lua_close) (lua_State *L);
128
LUA_API lua_State *(lua_newthread) (lua_State *L);
129
 
130
LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf);
131
 
132
 
133
LUA_API const lua_Number *(lua_version) (lua_State *L);
134
 
135
 
136
/*
137
** basic stack manipulation
138
*/
139
LUA_API int   (lua_absindex) (lua_State *L, int idx);
140
LUA_API int   (lua_gettop) (lua_State *L);
141
LUA_API void  (lua_settop) (lua_State *L, int idx);
142
LUA_API void  (lua_pushvalue) (lua_State *L, int idx);
143
LUA_API void  (lua_remove) (lua_State *L, int idx);
144
LUA_API void  (lua_insert) (lua_State *L, int idx);
145
LUA_API void  (lua_replace) (lua_State *L, int idx);
146
LUA_API void  (lua_copy) (lua_State *L, int fromidx, int toidx);
147
LUA_API int   (lua_checkstack) (lua_State *L, int sz);
148
 
149
LUA_API void  (lua_xmove) (lua_State *from, lua_State *to, int n);
150
 
151
 
152
/*
153
** access functions (stack -> C)
154
*/
155
 
156
LUA_API int             (lua_isnumber) (lua_State *L, int idx);
157
LUA_API int             (lua_isstring) (lua_State *L, int idx);
158
LUA_API int             (lua_iscfunction) (lua_State *L, int idx);
159
LUA_API int             (lua_isuserdata) (lua_State *L, int idx);
160
LUA_API int             (lua_type) (lua_State *L, int idx);
161
LUA_API const char     *(lua_typename) (lua_State *L, int tp);
162
 
163
LUA_API lua_Number      (lua_tonumberx) (lua_State *L, int idx, int *isnum);
164
LUA_API lua_Integer     (lua_tointegerx) (lua_State *L, int idx, int *isnum);
165
LUA_API lua_Unsigned    (lua_tounsignedx) (lua_State *L, int idx, int *isnum);
166
LUA_API int             (lua_toboolean) (lua_State *L, int idx);
167
LUA_API const char     *(lua_tolstring) (lua_State *L, int idx, size_t *len);
168
LUA_API size_t          (lua_rawlen) (lua_State *L, int idx);
169
LUA_API lua_CFunction   (lua_tocfunction) (lua_State *L, int idx);
170
LUA_API void	       *(lua_touserdata) (lua_State *L, int idx);
171
LUA_API lua_State      *(lua_tothread) (lua_State *L, int idx);
172
LUA_API const void     *(lua_topointer) (lua_State *L, int idx);
173
 
174
 
175
/*
176
** Comparison and arithmetic functions
177
*/
178
 
179
#define LUA_OPADD	0	/* ORDER TM */
180
#define LUA_OPSUB	1
181
#define LUA_OPMUL	2
182
#define LUA_OPDIV	3
183
#define LUA_OPMOD	4
184
#define LUA_OPPOW	5
185
#define LUA_OPUNM	6
186
 
187
LUA_API void  (lua_arith) (lua_State *L, int op);
188
 
189
#define LUA_OPEQ	0
190
#define LUA_OPLT	1
191
#define LUA_OPLE	2
192
 
193
LUA_API int   (lua_rawequal) (lua_State *L, int idx1, int idx2);
194
LUA_API int   (lua_compare) (lua_State *L, int idx1, int idx2, int op);
195
 
196
 
197
/*
198
** push functions (C -> stack)
199
*/
200
LUA_API void        (lua_pushnil) (lua_State *L);
201
LUA_API void        (lua_pushnumber) (lua_State *L, lua_Number n);
202
LUA_API void        (lua_pushinteger) (lua_State *L, lua_Integer n);
203
LUA_API void        (lua_pushunsigned) (lua_State *L, lua_Unsigned n);
204
LUA_API const char *(lua_pushlstring) (lua_State *L, const char *s, size_t l);
205
LUA_API const char *(lua_pushstring) (lua_State *L, const char *s);
206
LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt,
207
                                                      va_list argp);
208
LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...);
209
LUA_API void  (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n);
210
LUA_API void  (lua_pushboolean) (lua_State *L, int b);
211
LUA_API void  (lua_pushlightuserdata) (lua_State *L, void *p);
212
LUA_API int   (lua_pushthread) (lua_State *L);
213
 
214
 
215
/*
216
** get functions (Lua -> stack)
217
*/
218
LUA_API void  (lua_gettable) (lua_State *L, int idx);
219
LUA_API void  (lua_getfield) (lua_State *L, int idx, const char *k);
220
LUA_API void  (lua_rawget) (lua_State *L, int idx);
221
LUA_API void  (lua_rawgeti) (lua_State *L, int idx, int n);
222
LUA_API void  (lua_createtable) (lua_State *L, int narr, int nrec);
223
LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz);
224
LUA_API int   (lua_getmetatable) (lua_State *L, int objindex);
225
LUA_API void  (lua_getuservalue) (lua_State *L, int idx);
226
 
227
 
228
/*
229
** set functions (stack -> Lua)
230
*/
231
LUA_API void  (lua_settable) (lua_State *L, int idx);
232
LUA_API void  (lua_setfield) (lua_State *L, int idx, const char *k);
233
LUA_API void  (lua_rawset) (lua_State *L, int idx);
234
LUA_API void  (lua_rawseti) (lua_State *L, int idx, int n);
235
LUA_API int   (lua_setmetatable) (lua_State *L, int objindex);
236
LUA_API void  (lua_setuservalue) (lua_State *L, int idx);
237
 
238
 
239
/*
240
** 'load' and 'call' functions (load and run Lua code)
241
*/
242
LUA_API void  (lua_callk) (lua_State *L, int nargs, int nresults, int ctx,
243
                           lua_CFunction k);
244
#define lua_call(L,n,r)		lua_callk(L, (n), (r), 0, NULL)
245
 
246
LUA_API int   (lua_getctx) (lua_State *L, int *ctx);
247
 
248
LUA_API int   (lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc,
249
                            int ctx, lua_CFunction k);
250
#define lua_pcall(L,n,r,f)	lua_pcallk(L, (n), (r), (f), 0, NULL)
251
 
252
LUA_API int   (lua_load) (lua_State *L, lua_Reader reader, void *dt,
253
                                        const char *chunkname);
254
 
255
LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data);
256
 
257
 
258
/*
259
** coroutine functions
260
*/
261
LUA_API int  (lua_yieldk) (lua_State *L, int nresults, int ctx,
262
                           lua_CFunction k);
263
#define lua_yield(L,n)		lua_yieldk(L, (n), 0, NULL)
264
LUA_API int  (lua_resume) (lua_State *L, int narg);
265
LUA_API int  (lua_status) (lua_State *L);
266
 
267
/*
268
** garbage-collection function and options
269
*/
270
 
271
#define LUA_GCSTOP		0
272
#define LUA_GCRESTART		1
273
#define LUA_GCCOLLECT		2
274
#define LUA_GCCOUNT		3
275
#define LUA_GCCOUNTB		4
276
#define LUA_GCSTEP		5
277
#define LUA_GCSETPAUSE		6
278
#define LUA_GCSETSTEPMUL	7
279
#define LUA_GCSETMAJORINC	8
280
#define LUA_GCISRUNNING		9
281
#define LUA_GCGEN		10
282
#define LUA_GCINC		11
283
 
284
LUA_API int (lua_gc) (lua_State *L, int what, int data);
285
 
286
 
287
/*
288
** miscellaneous functions
289
*/
290
 
291
LUA_API int   (lua_error) (lua_State *L);
292
 
293
LUA_API int   (lua_next) (lua_State *L, int idx);
294
 
295
LUA_API void  (lua_concat) (lua_State *L, int n);
296
LUA_API void  (lua_len)    (lua_State *L, int idx);
297
 
298
LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud);
299
LUA_API void      (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud);
300
 
301
 
302
 
303
/*
304
** ===============================================================
305
** some useful macros
306
** ===============================================================
307
*/
308
 
309
#define lua_tonumber(L,i)	lua_tonumberx(L,i,NULL)
310
#define lua_tointeger(L,i)	lua_tointegerx(L,i,NULL)
311
#define lua_tounsigned(L,i)	lua_tounsignedx(L,i,NULL)
312
 
313
#define lua_pop(L,n)		lua_settop(L, -(n)-1)
314
 
315
#define lua_newtable(L)		lua_createtable(L, 0, 0)
316
 
317
#define lua_setglobal(L,s)  \
318
	(lua_pushglobaltable(L), lua_pushvalue(L, -2), \
319
	 lua_setfield(L, -2, (s)), lua_pop(L, 2))
320
 
321
#define lua_getglobal(L,s) \
322
	(lua_pushglobaltable(L), lua_getfield(L, -1, (s)), lua_remove(L, -2))
323
 
324
#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))
325
 
326
#define lua_pushcfunction(L,f)	lua_pushcclosure(L, (f), 0)
327
 
328
#define lua_isfunction(L,n)	(lua_type(L, (n)) == LUA_TFUNCTION)
329
#define lua_istable(L,n)	(lua_type(L, (n)) == LUA_TTABLE)
330
#define lua_islightuserdata(L,n)	(lua_type(L, (n)) == LUA_TLIGHTUSERDATA)
331
#define lua_isnil(L,n)		(lua_type(L, (n)) == LUA_TNIL)
332
#define lua_isboolean(L,n)	(lua_type(L, (n)) == LUA_TBOOLEAN)
333
#define lua_isthread(L,n)	(lua_type(L, (n)) == LUA_TTHREAD)
334
#define lua_isnone(L,n)		(lua_type(L, (n)) == LUA_TNONE)
335
#define lua_isnoneornil(L, n)	(lua_type(L, (n)) <= 0)
336
 
337
#define lua_pushliteral(L, s)	\
338
	lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1)
339
 
340
#define lua_pushglobaltable(L)  \
341
	lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS)
342
 
343
#define lua_tostring(L,i)	lua_tolstring(L, (i), NULL)
344
 
345
 
346
 
347
/*
348
** {======================================================================
349
** Debug API
350
** =======================================================================
351
*/
352
 
353
 
354
/*
355
** Event codes
356
*/
357
#define LUA_HOOKCALL	0
358
#define LUA_HOOKRET	1
359
#define LUA_HOOKLINE	2
360
#define LUA_HOOKCOUNT	3
361
#define LUA_HOOKTAILCALL 4
362
 
363
 
364
/*
365
** Event masks
366
*/
367
#define LUA_MASKCALL	(1 << LUA_HOOKCALL)
368
#define LUA_MASKRET	(1 << LUA_HOOKRET)
369
#define LUA_MASKLINE	(1 << LUA_HOOKLINE)
370
#define LUA_MASKCOUNT	(1 << LUA_HOOKCOUNT)
371
 
372
typedef struct lua_Debug lua_Debug;  /* activation record */
373
 
374
 
375
/* Functions to be called by the debugger in specific events */
376
typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
377
 
378
 
379
LUA_API int (lua_getstack) (lua_State *L, int level, lua_Debug *ar);
380
LUA_API int (lua_getinfo) (lua_State *L, const char *what, lua_Debug *ar);
381
LUA_API const char *(lua_getlocal) (lua_State *L, const lua_Debug *ar, int n);
382
LUA_API const char *(lua_setlocal) (lua_State *L, const lua_Debug *ar, int n);
383
LUA_API const char *(lua_getupvalue) (lua_State *L, int funcindex, int n);
384
LUA_API const char *(lua_setupvalue) (lua_State *L, int funcindex, int n);
385
 
386
LUA_API void *(lua_upvalueid) (lua_State *L, int fidx, int n);
387
LUA_API void  (lua_upvaluejoin) (lua_State *L, int fidx1, int n1,
388
                                               int fidx2, int n2);
389
 
390
LUA_API int (lua_sethook) (lua_State *L, lua_Hook func, int mask, int count);
391
LUA_API lua_Hook (lua_gethook) (lua_State *L);
392
LUA_API int (lua_gethookmask) (lua_State *L);
393
LUA_API int (lua_gethookcount) (lua_State *L);
394
 
395
 
396
struct lua_Debug {
397
  int event;
398
  const char *name;	/* (n) */
399
  const char *namewhat;	/* (n) 'global', 'local', 'field', 'method' */
400
  const char *what;	/* (S) 'Lua', 'C', 'main', 'tail' */
401
  const char *source;	/* (S) */
402
  int currentline;	/* (l) */
403
  int linedefined;	/* (S) */
404
  int lastlinedefined;	/* (S) */
405
  unsigned char nups;	/* (u) number of upvalues */
406
  unsigned char nparams;/* (u) number of parameters */
407
  char isvararg;        /* (u) */
408
  char istailcall;	/* (t) */
409
  char short_src[LUA_IDSIZE]; /* (S) */
410
  /* private part */
411
  struct CallInfo *i_ci;  /* active function */
412
};
413
 
414
/* }====================================================================== */
415
 
416
 
417
/******************************************************************************
418
* Copyright (C) 1994-2010 Lua.org, PUC-Rio.  All rights reserved.
419
*
420
* Permission is hereby granted, free of charge, to any person obtaining
421
* a copy of this software and associated documentation files (the
422
* "Software"), to deal in the Software without restriction, including
423
* without limitation the rights to use, copy, modify, merge, publish,
424
* distribute, sublicense, and/or sell copies of the Software, and to
425
* permit persons to whom the Software is furnished to do so, subject to
426
* the following conditions:
427
*
428
* The above copyright notice and this permission notice shall be
429
* included in all copies or substantial portions of the Software.
430
*
431
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
432
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
433
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
434
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
435
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
436
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
437
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
438
******************************************************************************/
439
 
440
 
441
#endif