Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5205 clevermous 1
/*
2
** $Id: lua.h,v 1.282 2011/11/29 15:55:08 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_NUM		502
22
#define LUA_VERSION_RELEASE	"0"
23
 
24
#define LUA_VERSION	"Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
25
#define LUA_RELEASE	LUA_VERSION "." LUA_VERSION_RELEASE
26
#define LUA_COPYRIGHT	LUA_RELEASE "  Copyright (C) 1994-2011 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_getglobal) (lua_State *L, const char *var);
219
LUA_API void  (lua_gettable) (lua_State *L, int idx);
220
LUA_API void  (lua_getfield) (lua_State *L, int idx, const char *k);
221
LUA_API void  (lua_rawget) (lua_State *L, int idx);
222
LUA_API void  (lua_rawgeti) (lua_State *L, int idx, int n);
223
LUA_API void  (lua_rawgetp) (lua_State *L, int idx, const void *p);
224
LUA_API void  (lua_createtable) (lua_State *L, int narr, int nrec);
225
LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz);
226
LUA_API int   (lua_getmetatable) (lua_State *L, int objindex);
227
LUA_API void  (lua_getuservalue) (lua_State *L, int idx);
228
 
229
 
230
/*
231
** set functions (stack -> Lua)
232
*/
233
LUA_API void  (lua_setglobal) (lua_State *L, const char *var);
234
LUA_API void  (lua_settable) (lua_State *L, int idx);
235
LUA_API void  (lua_setfield) (lua_State *L, int idx, const char *k);
236
LUA_API void  (lua_rawset) (lua_State *L, int idx);
237
LUA_API void  (lua_rawseti) (lua_State *L, int idx, int n);
238
LUA_API void  (lua_rawsetp) (lua_State *L, int idx, const void *p);
239
LUA_API int   (lua_setmetatable) (lua_State *L, int objindex);
240
LUA_API void  (lua_setuservalue) (lua_State *L, int idx);
241
 
242
 
243
/*
244
** 'load' and 'call' functions (load and run Lua code)
245
*/
246
LUA_API void  (lua_callk) (lua_State *L, int nargs, int nresults, int ctx,
247
                           lua_CFunction k);
248
#define lua_call(L,n,r)		lua_callk(L, (n), (r), 0, NULL)
249
 
250
LUA_API int   (lua_getctx) (lua_State *L, int *ctx);
251
 
252
LUA_API int   (lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc,
253
                            int ctx, lua_CFunction k);
254
#define lua_pcall(L,n,r,f)	lua_pcallk(L, (n), (r), (f), 0, NULL)
255
 
256
LUA_API int   (lua_load) (lua_State *L, lua_Reader reader, void *dt,
257
                                        const char *chunkname,
258
                                        const char *mode);
259
 
260
LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data);
261
 
262
 
263
/*
264
** coroutine functions
265
*/
266
LUA_API int  (lua_yieldk) (lua_State *L, int nresults, int ctx,
267
                           lua_CFunction k);
268
#define lua_yield(L,n)		lua_yieldk(L, (n), 0, NULL)
269
LUA_API int  (lua_resume) (lua_State *L, lua_State *from, int narg);
270
LUA_API int  (lua_status) (lua_State *L);
271
 
272
/*
273
** garbage-collection function and options
274
*/
275
 
276
#define LUA_GCSTOP		0
277
#define LUA_GCRESTART		1
278
#define LUA_GCCOLLECT		2
279
#define LUA_GCCOUNT		3
280
#define LUA_GCCOUNTB		4
281
#define LUA_GCSTEP		5
282
#define LUA_GCSETPAUSE		6
283
#define LUA_GCSETSTEPMUL	7
284
#define LUA_GCSETMAJORINC	8
285
#define LUA_GCISRUNNING		9
286
#define LUA_GCGEN		10
287
#define LUA_GCINC		11
288
 
289
LUA_API int (lua_gc) (lua_State *L, int what, int data);
290
 
291
 
292
/*
293
** miscellaneous functions
294
*/
295
 
296
LUA_API int   (lua_error) (lua_State *L);
297
 
298
LUA_API int   (lua_next) (lua_State *L, int idx);
299
 
300
LUA_API void  (lua_concat) (lua_State *L, int n);
301
LUA_API void  (lua_len)    (lua_State *L, int idx);
302
 
303
LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud);
304
LUA_API void      (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud);
305
 
306
 
307
 
308
/*
309
** ===============================================================
310
** some useful macros
311
** ===============================================================
312
*/
313
 
314
#define lua_tonumber(L,i)	lua_tonumberx(L,i,NULL)
315
#define lua_tointeger(L,i)	lua_tointegerx(L,i,NULL)
316
#define lua_tounsigned(L,i)	lua_tounsignedx(L,i,NULL)
317
 
318
#define lua_pop(L,n)		lua_settop(L, -(n)-1)
319
 
320
#define lua_newtable(L)		lua_createtable(L, 0, 0)
321
 
322
#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))
323
 
324
#define lua_pushcfunction(L,f)	lua_pushcclosure(L, (f), 0)
325
 
326
#define lua_isfunction(L,n)	(lua_type(L, (n)) == LUA_TFUNCTION)
327
#define lua_istable(L,n)	(lua_type(L, (n)) == LUA_TTABLE)
328
#define lua_islightuserdata(L,n)	(lua_type(L, (n)) == LUA_TLIGHTUSERDATA)
329
#define lua_isnil(L,n)		(lua_type(L, (n)) == LUA_TNIL)
330
#define lua_isboolean(L,n)	(lua_type(L, (n)) == LUA_TBOOLEAN)
331
#define lua_isthread(L,n)	(lua_type(L, (n)) == LUA_TTHREAD)
332
#define lua_isnone(L,n)		(lua_type(L, (n)) == LUA_TNONE)
333
#define lua_isnoneornil(L, n)	(lua_type(L, (n)) <= 0)
334
 
335
#define lua_pushliteral(L, s)	\
336
	lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1)
337
 
338
#define lua_pushglobaltable(L)  \
339
	lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS)
340
 
341
#define lua_tostring(L,i)	lua_tolstring(L, (i), NULL)
342
 
343
 
344
 
345
/*
346
** {======================================================================
347
** Debug API
348
** =======================================================================
349
*/
350
 
351
 
352
/*
353
** Event codes
354
*/
355
#define LUA_HOOKCALL	0
356
#define LUA_HOOKRET	1
357
#define LUA_HOOKLINE	2
358
#define LUA_HOOKCOUNT	3
359
#define LUA_HOOKTAILCALL 4
360
 
361
 
362
/*
363
** Event masks
364
*/
365
#define LUA_MASKCALL	(1 << LUA_HOOKCALL)
366
#define LUA_MASKRET	(1 << LUA_HOOKRET)
367
#define LUA_MASKLINE	(1 << LUA_HOOKLINE)
368
#define LUA_MASKCOUNT	(1 << LUA_HOOKCOUNT)
369
 
370
typedef struct lua_Debug lua_Debug;  /* activation record */
371
 
372
 
373
/* Functions to be called by the debugger in specific events */
374
typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
375
 
376
 
377
LUA_API int (lua_getstack) (lua_State *L, int level, lua_Debug *ar);
378
LUA_API int (lua_getinfo) (lua_State *L, const char *what, lua_Debug *ar);
379
LUA_API const char *(lua_getlocal) (lua_State *L, const lua_Debug *ar, int n);
380
LUA_API const char *(lua_setlocal) (lua_State *L, const lua_Debug *ar, int n);
381
LUA_API const char *(lua_getupvalue) (lua_State *L, int funcindex, int n);
382
LUA_API const char *(lua_setupvalue) (lua_State *L, int funcindex, int n);
383
 
384
LUA_API void *(lua_upvalueid) (lua_State *L, int fidx, int n);
385
LUA_API void  (lua_upvaluejoin) (lua_State *L, int fidx1, int n1,
386
                                               int fidx2, int n2);
387
 
388
LUA_API int (lua_sethook) (lua_State *L, lua_Hook func, int mask, int count);
389
LUA_API lua_Hook (lua_gethook) (lua_State *L);
390
LUA_API int (lua_gethookmask) (lua_State *L);
391
LUA_API int (lua_gethookcount) (lua_State *L);
392
 
393
 
394
struct lua_Debug {
395
  int event;
396
  const char *name;	/* (n) */
397
  const char *namewhat;	/* (n) 'global', 'local', 'field', 'method' */
398
  const char *what;	/* (S) 'Lua', 'C', 'main', 'tail' */
399
  const char *source;	/* (S) */
400
  int currentline;	/* (l) */
401
  int linedefined;	/* (S) */
402
  int lastlinedefined;	/* (S) */
403
  unsigned char nups;	/* (u) number of upvalues */
404
  unsigned char nparams;/* (u) number of parameters */
405
  char isvararg;        /* (u) */
406
  char istailcall;	/* (t) */
407
  char short_src[LUA_IDSIZE]; /* (S) */
408
  /* private part */
409
  struct CallInfo *i_ci;  /* active function */
410
};
411
 
412
/* }====================================================================== */
413
 
414
 
415
/******************************************************************************
416
* Copyright (C) 1994-2011 Lua.org, PUC-Rio.  All rights reserved.
417
*
418
* Permission is hereby granted, free of charge, to any person obtaining
419
* a copy of this software and associated documentation files (the
420
* "Software"), to deal in the Software without restriction, including
421
* without limitation the rights to use, copy, modify, merge, publish,
422
* distribute, sublicense, and/or sell copies of the Software, and to
423
* permit persons to whom the Software is furnished to do so, subject to
424
* the following conditions:
425
*
426
* The above copyright notice and this permission notice shall be
427
* included in all copies or substantial portions of the Software.
428
*
429
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
430
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
431
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
432
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
433
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
434
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
435
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
436
******************************************************************************/
437
 
438
 
439
#endif