~ubuntu-branches/ubuntu/vivid/emscripten/vivid

« back to all changes in this revision

Viewing changes to tests/lua/src/lua.h

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-02 13:11:51 UTC
  • Revision ID: package-import@ubuntu.com-20130502131151-q8dvteqr1ef2x7xz
Tags: upstream-1.4.1~20130504~adb56cb
ImportĀ upstreamĀ versionĀ 1.4.1~20130504~adb56cb

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
** $Id: lua.h,v 1.285 2013/03/15 13:04:22 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 <stdarg.h>
 
13
#include <stddef.h>
 
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     "2"
 
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-2013 Lua.org, PUC-Rio"
 
27
#define LUA_AUTHORS     "R. Ierusalimschy, L. H. de Figueiredo, W. Celes"
 
28
 
 
29
 
 
30
/* mark for precompiled code ('<esc>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
** RCS ident string
 
124
*/
 
125
extern const char lua_ident[];
 
126
 
 
127
 
 
128
/*
 
129
** state manipulation
 
130
*/
 
131
LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud);
 
132
LUA_API void       (lua_close) (lua_State *L);
 
133
LUA_API lua_State *(lua_newthread) (lua_State *L);
 
134
 
 
135
LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf);
 
136
 
 
137
 
 
138
LUA_API const lua_Number *(lua_version) (lua_State *L);
 
139
 
 
140
 
 
141
/*
 
142
** basic stack manipulation
 
143
*/
 
144
LUA_API int   (lua_absindex) (lua_State *L, int idx);
 
145
LUA_API int   (lua_gettop) (lua_State *L);
 
146
LUA_API void  (lua_settop) (lua_State *L, int idx);
 
147
LUA_API void  (lua_pushvalue) (lua_State *L, int idx);
 
148
LUA_API void  (lua_remove) (lua_State *L, int idx);
 
149
LUA_API void  (lua_insert) (lua_State *L, int idx);
 
150
LUA_API void  (lua_replace) (lua_State *L, int idx);
 
151
LUA_API void  (lua_copy) (lua_State *L, int fromidx, int toidx);
 
152
LUA_API int   (lua_checkstack) (lua_State *L, int sz);
 
153
 
 
154
LUA_API void  (lua_xmove) (lua_State *from, lua_State *to, int n);
 
155
 
 
156
 
 
157
/*
 
158
** access functions (stack -> C)
 
159
*/
 
160
 
 
161
LUA_API int             (lua_isnumber) (lua_State *L, int idx);
 
162
LUA_API int             (lua_isstring) (lua_State *L, int idx);
 
163
LUA_API int             (lua_iscfunction) (lua_State *L, int idx);
 
164
LUA_API int             (lua_isuserdata) (lua_State *L, int idx);
 
165
LUA_API int             (lua_type) (lua_State *L, int idx);
 
166
LUA_API const char     *(lua_typename) (lua_State *L, int tp);
 
167
 
 
168
LUA_API lua_Number      (lua_tonumberx) (lua_State *L, int idx, int *isnum);
 
169
LUA_API lua_Integer     (lua_tointegerx) (lua_State *L, int idx, int *isnum);
 
170
LUA_API lua_Unsigned    (lua_tounsignedx) (lua_State *L, int idx, int *isnum);
 
171
LUA_API int             (lua_toboolean) (lua_State *L, int idx);
 
172
LUA_API const char     *(lua_tolstring) (lua_State *L, int idx, size_t *len);
 
173
LUA_API size_t          (lua_rawlen) (lua_State *L, int idx);
 
174
LUA_API lua_CFunction   (lua_tocfunction) (lua_State *L, int idx);
 
175
LUA_API void           *(lua_touserdata) (lua_State *L, int idx);
 
176
LUA_API lua_State      *(lua_tothread) (lua_State *L, int idx);
 
177
LUA_API const void     *(lua_topointer) (lua_State *L, int idx);
 
178
 
 
179
 
 
180
/*
 
181
** Comparison and arithmetic functions
 
182
*/
 
183
 
 
184
#define LUA_OPADD       0       /* ORDER TM */
 
185
#define LUA_OPSUB       1
 
186
#define LUA_OPMUL       2
 
187
#define LUA_OPDIV       3
 
188
#define LUA_OPMOD       4
 
189
#define LUA_OPPOW       5
 
190
#define LUA_OPUNM       6
 
191
 
 
192
LUA_API void  (lua_arith) (lua_State *L, int op);
 
193
 
 
194
#define LUA_OPEQ        0
 
195
#define LUA_OPLT        1
 
196
#define LUA_OPLE        2
 
197
 
 
198
LUA_API int   (lua_rawequal) (lua_State *L, int idx1, int idx2);
 
199
LUA_API int   (lua_compare) (lua_State *L, int idx1, int idx2, int op);
 
200
 
 
201
 
 
202
/*
 
203
** push functions (C -> stack)
 
204
*/
 
205
LUA_API void        (lua_pushnil) (lua_State *L);
 
206
LUA_API void        (lua_pushnumber) (lua_State *L, lua_Number n);
 
207
LUA_API void        (lua_pushinteger) (lua_State *L, lua_Integer n);
 
208
LUA_API void        (lua_pushunsigned) (lua_State *L, lua_Unsigned n);
 
209
LUA_API const char *(lua_pushlstring) (lua_State *L, const char *s, size_t l);
 
210
LUA_API const char *(lua_pushstring) (lua_State *L, const char *s);
 
211
LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt,
 
212
                                                      va_list argp);
 
213
LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...);
 
214
LUA_API void  (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n);
 
215
LUA_API void  (lua_pushboolean) (lua_State *L, int b);
 
216
LUA_API void  (lua_pushlightuserdata) (lua_State *L, void *p);
 
217
LUA_API int   (lua_pushthread) (lua_State *L);
 
218
 
 
219
 
 
220
/*
 
221
** get functions (Lua -> stack)
 
222
*/
 
223
LUA_API void  (lua_getglobal) (lua_State *L, const char *var);
 
224
LUA_API void  (lua_gettable) (lua_State *L, int idx);
 
225
LUA_API void  (lua_getfield) (lua_State *L, int idx, const char *k);
 
226
LUA_API void  (lua_rawget) (lua_State *L, int idx);
 
227
LUA_API void  (lua_rawgeti) (lua_State *L, int idx, int n);
 
228
LUA_API void  (lua_rawgetp) (lua_State *L, int idx, const void *p);
 
229
LUA_API void  (lua_createtable) (lua_State *L, int narr, int nrec);
 
230
LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz);
 
231
LUA_API int   (lua_getmetatable) (lua_State *L, int objindex);
 
232
LUA_API void  (lua_getuservalue) (lua_State *L, int idx);
 
233
 
 
234
 
 
235
/*
 
236
** set functions (stack -> Lua)
 
237
*/
 
238
LUA_API void  (lua_setglobal) (lua_State *L, const char *var);
 
239
LUA_API void  (lua_settable) (lua_State *L, int idx);
 
240
LUA_API void  (lua_setfield) (lua_State *L, int idx, const char *k);
 
241
LUA_API void  (lua_rawset) (lua_State *L, int idx);
 
242
LUA_API void  (lua_rawseti) (lua_State *L, int idx, int n);
 
243
LUA_API void  (lua_rawsetp) (lua_State *L, int idx, const void *p);
 
244
LUA_API int   (lua_setmetatable) (lua_State *L, int objindex);
 
245
LUA_API void  (lua_setuservalue) (lua_State *L, int idx);
 
246
 
 
247
 
 
248
/*
 
249
** 'load' and 'call' functions (load and run Lua code)
 
250
*/
 
251
LUA_API void  (lua_callk) (lua_State *L, int nargs, int nresults, int ctx,
 
252
                           lua_CFunction k);
 
253
#define lua_call(L,n,r)         lua_callk(L, (n), (r), 0, NULL)
 
254
 
 
255
LUA_API int   (lua_getctx) (lua_State *L, int *ctx);
 
256
 
 
257
LUA_API int   (lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc,
 
258
                            int ctx, lua_CFunction k);
 
259
#define lua_pcall(L,n,r,f)      lua_pcallk(L, (n), (r), (f), 0, NULL)
 
260
 
 
261
LUA_API int   (lua_load) (lua_State *L, lua_Reader reader, void *dt,
 
262
                                        const char *chunkname,
 
263
                                        const char *mode);
 
264
 
 
265
LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data);
 
266
 
 
267
 
 
268
/*
 
269
** coroutine functions
 
270
*/
 
271
LUA_API int  (lua_yieldk) (lua_State *L, int nresults, int ctx,
 
272
                           lua_CFunction k);
 
273
#define lua_yield(L,n)          lua_yieldk(L, (n), 0, NULL)
 
274
LUA_API int  (lua_resume) (lua_State *L, lua_State *from, int narg);
 
275
LUA_API int  (lua_status) (lua_State *L);
 
276
 
 
277
/*
 
278
** garbage-collection function and options
 
279
*/
 
280
 
 
281
#define LUA_GCSTOP              0
 
282
#define LUA_GCRESTART           1
 
283
#define LUA_GCCOLLECT           2
 
284
#define LUA_GCCOUNT             3
 
285
#define LUA_GCCOUNTB            4
 
286
#define LUA_GCSTEP              5
 
287
#define LUA_GCSETPAUSE          6
 
288
#define LUA_GCSETSTEPMUL        7
 
289
#define LUA_GCSETMAJORINC       8
 
290
#define LUA_GCISRUNNING         9
 
291
#define LUA_GCGEN               10
 
292
#define LUA_GCINC               11
 
293
 
 
294
LUA_API int (lua_gc) (lua_State *L, int what, int data);
 
295
 
 
296
 
 
297
/*
 
298
** miscellaneous functions
 
299
*/
 
300
 
 
301
LUA_API int   (lua_error) (lua_State *L);
 
302
 
 
303
LUA_API int   (lua_next) (lua_State *L, int idx);
 
304
 
 
305
LUA_API void  (lua_concat) (lua_State *L, int n);
 
306
LUA_API void  (lua_len)    (lua_State *L, int idx);
 
307
 
 
308
LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud);
 
309
LUA_API void      (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud);
 
310
 
 
311
 
 
312
 
 
313
/*
 
314
** ===============================================================
 
315
** some useful macros
 
316
** ===============================================================
 
317
*/
 
318
 
 
319
#define lua_tonumber(L,i)       lua_tonumberx(L,i,NULL)
 
320
#define lua_tointeger(L,i)      lua_tointegerx(L,i,NULL)
 
321
#define lua_tounsigned(L,i)     lua_tounsignedx(L,i,NULL)
 
322
 
 
323
#define lua_pop(L,n)            lua_settop(L, -(n)-1)
 
324
 
 
325
#define lua_newtable(L)         lua_createtable(L, 0, 0)
 
326
 
 
327
#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))
 
328
 
 
329
#define lua_pushcfunction(L,f)  lua_pushcclosure(L, (f), 0)
 
330
 
 
331
#define lua_isfunction(L,n)     (lua_type(L, (n)) == LUA_TFUNCTION)
 
332
#define lua_istable(L,n)        (lua_type(L, (n)) == LUA_TTABLE)
 
333
#define lua_islightuserdata(L,n)        (lua_type(L, (n)) == LUA_TLIGHTUSERDATA)
 
334
#define lua_isnil(L,n)          (lua_type(L, (n)) == LUA_TNIL)
 
335
#define lua_isboolean(L,n)      (lua_type(L, (n)) == LUA_TBOOLEAN)
 
336
#define lua_isthread(L,n)       (lua_type(L, (n)) == LUA_TTHREAD)
 
337
#define lua_isnone(L,n)         (lua_type(L, (n)) == LUA_TNONE)
 
338
#define lua_isnoneornil(L, n)   (lua_type(L, (n)) <= 0)
 
339
 
 
340
#define lua_pushliteral(L, s)   \
 
341
        lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1)
 
342
 
 
343
#define lua_pushglobaltable(L)  \
 
344
        lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS)
 
345
 
 
346
#define lua_tostring(L,i)       lua_tolstring(L, (i), NULL)
 
347
 
 
348
 
 
349
 
 
350
/*
 
351
** {======================================================================
 
352
** Debug API
 
353
** =======================================================================
 
354
*/
 
355
 
 
356
 
 
357
/*
 
358
** Event codes
 
359
*/
 
360
#define LUA_HOOKCALL    0
 
361
#define LUA_HOOKRET     1
 
362
#define LUA_HOOKLINE    2
 
363
#define LUA_HOOKCOUNT   3
 
364
#define LUA_HOOKTAILCALL 4
 
365
 
 
366
 
 
367
/*
 
368
** Event masks
 
369
*/
 
370
#define LUA_MASKCALL    (1 << LUA_HOOKCALL)
 
371
#define LUA_MASKRET     (1 << LUA_HOOKRET)
 
372
#define LUA_MASKLINE    (1 << LUA_HOOKLINE)
 
373
#define LUA_MASKCOUNT   (1 << LUA_HOOKCOUNT)
 
374
 
 
375
typedef struct lua_Debug lua_Debug;  /* activation record */
 
376
 
 
377
 
 
378
/* Functions to be called by the debugger in specific events */
 
379
typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
 
380
 
 
381
 
 
382
LUA_API int (lua_getstack) (lua_State *L, int level, lua_Debug *ar);
 
383
LUA_API int (lua_getinfo) (lua_State *L, const char *what, lua_Debug *ar);
 
384
LUA_API const char *(lua_getlocal) (lua_State *L, const lua_Debug *ar, int n);
 
385
LUA_API const char *(lua_setlocal) (lua_State *L, const lua_Debug *ar, int n);
 
386
LUA_API const char *(lua_getupvalue) (lua_State *L, int funcindex, int n);
 
387
LUA_API const char *(lua_setupvalue) (lua_State *L, int funcindex, int n);
 
388
 
 
389
LUA_API void *(lua_upvalueid) (lua_State *L, int fidx, int n);
 
390
LUA_API void  (lua_upvaluejoin) (lua_State *L, int fidx1, int n1,
 
391
                                               int fidx2, int n2);
 
392
 
 
393
LUA_API int (lua_sethook) (lua_State *L, lua_Hook func, int mask, int count);
 
394
LUA_API lua_Hook (lua_gethook) (lua_State *L);
 
395
LUA_API int (lua_gethookmask) (lua_State *L);
 
396
LUA_API int (lua_gethookcount) (lua_State *L);
 
397
 
 
398
 
 
399
struct lua_Debug {
 
400
  int event;
 
401
  const char *name;     /* (n) */
 
402
  const char *namewhat; /* (n) 'global', 'local', 'field', 'method' */
 
403
  const char *what;     /* (S) 'Lua', 'C', 'main', 'tail' */
 
404
  const char *source;   /* (S) */
 
405
  int currentline;      /* (l) */
 
406
  int linedefined;      /* (S) */
 
407
  int lastlinedefined;  /* (S) */
 
408
  unsigned char nups;   /* (u) number of upvalues */
 
409
  unsigned char nparams;/* (u) number of parameters */
 
410
  char isvararg;        /* (u) */
 
411
  char istailcall;      /* (t) */
 
412
  char short_src[LUA_IDSIZE]; /* (S) */
 
413
  /* private part */
 
414
  struct CallInfo *i_ci;  /* active function */
 
415
};
 
416
 
 
417
/* }====================================================================== */
 
418
 
 
419
 
 
420
/******************************************************************************
 
421
* Copyright (C) 1994-2013 Lua.org, PUC-Rio.
 
422
*
 
423
* Permission is hereby granted, free of charge, to any person obtaining
 
424
* a copy of this software and associated documentation files (the
 
425
* "Software"), to deal in the Software without restriction, including
 
426
* without limitation the rights to use, copy, modify, merge, publish,
 
427
* distribute, sublicense, and/or sell copies of the Software, and to
 
428
* permit persons to whom the Software is furnished to do so, subject to
 
429
* the following conditions:
 
430
*
 
431
* The above copyright notice and this permission notice shall be
 
432
* included in all copies or substantial portions of the Software.
 
433
*
 
434
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 
435
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
436
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 
437
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 
438
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 
439
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 
440
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
441
******************************************************************************/
 
442
 
 
443
 
 
444
#endif