Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/ceguilua/src/lua/lua.h @ 2087

Last change on this file since 2087 was 1806, checked in by rgrieder, 16 years ago

added single 5.1.3 directory for lua since CEGUILua 0.5 can also build against lua 5.1

  • Property svn:eol-style set to native
File size: 11.4 KB
Line 
1/*
2** $Id: lua.h,v 1.218.1.4 2008/01/03 15:41:15 roberto Exp $
3** Lua - An Extensible Extension 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     "Lua 5.1"
20#define LUA_RELEASE     "Lua 5.1.3"
21#define LUA_VERSION_NUM 501
22#define LUA_COPYRIGHT   "Copyright (C) 1994-2008 Lua.org, PUC-Rio"
23#define LUA_AUTHORS     "R. Ierusalimschy, L. H. de Figueiredo & W. Celes"
24
25
26/* mark for precompiled code (`<esc>Lua') */
27#define LUA_SIGNATURE   "\033Lua"
28
29/* option for multiple returns in `lua_pcall' and `lua_call' */
30#define LUA_MULTRET     (-1)
31
32
33/*
34** pseudo-indices
35*/
36#define LUA_REGISTRYINDEX       (-10000)
37#define LUA_ENVIRONINDEX        (-10001)
38#define LUA_GLOBALSINDEX        (-10002)
39#define lua_upvalueindex(i)     (LUA_GLOBALSINDEX-(i))
40
41
42/* thread status; 0 is OK */
43#define LUA_YIELD       1
44#define LUA_ERRRUN      2
45#define LUA_ERRSYNTAX   3
46#define LUA_ERRMEM      4
47#define LUA_ERRERR      5
48
49
50typedef struct lua_State lua_State;
51
52typedef int (*lua_CFunction) (lua_State *L);
53
54
55/*
56** functions that read/write blocks when loading/dumping Lua chunks
57*/
58typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz);
59
60typedef int (*lua_Writer) (lua_State *L, const void* p, size_t sz, void* ud);
61
62
63/*
64** prototype for memory-allocation functions
65*/
66typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize);
67
68
69/*
70** basic types
71*/
72#define LUA_TNONE               (-1)
73
74#define LUA_TNIL                0
75#define LUA_TBOOLEAN            1
76#define LUA_TLIGHTUSERDATA      2
77#define LUA_TNUMBER             3
78#define LUA_TSTRING             4
79#define LUA_TTABLE              5
80#define LUA_TFUNCTION           6
81#define LUA_TUSERDATA           7
82#define LUA_TTHREAD             8
83
84
85
86/* minimum Lua stack available to a C function */
87#define LUA_MINSTACK    20
88
89
90/*
91** generic extra include file
92*/
93#if defined(LUA_USER_H)
94#include LUA_USER_H
95#endif
96
97
98/* type of numbers in Lua */
99typedef LUA_NUMBER lua_Number;
100
101
102/* type for integer functions */
103typedef LUA_INTEGER lua_Integer;
104
105
106
107/*
108** state manipulation
109*/
110LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud);
111LUA_API void       (lua_close) (lua_State *L);
112LUA_API lua_State *(lua_newthread) (lua_State *L);
113
114LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf);
115
116
117/*
118** basic stack manipulation
119*/
120LUA_API int   (lua_gettop) (lua_State *L);
121LUA_API void  (lua_settop) (lua_State *L, int idx);
122LUA_API void  (lua_pushvalue) (lua_State *L, int idx);
123LUA_API void  (lua_remove) (lua_State *L, int idx);
124LUA_API void  (lua_insert) (lua_State *L, int idx);
125LUA_API void  (lua_replace) (lua_State *L, int idx);
126LUA_API int   (lua_checkstack) (lua_State *L, int sz);
127
128LUA_API void  (lua_xmove) (lua_State *from, lua_State *to, int n);
129
130
131/*
132** access functions (stack -> C)
133*/
134
135LUA_API int             (lua_isnumber) (lua_State *L, int idx);
136LUA_API int             (lua_isstring) (lua_State *L, int idx);
137LUA_API int             (lua_iscfunction) (lua_State *L, int idx);
138LUA_API int             (lua_isuserdata) (lua_State *L, int idx);
139LUA_API int             (lua_type) (lua_State *L, int idx);
140LUA_API const char     *(lua_typename) (lua_State *L, int tp);
141
142LUA_API int            (lua_equal) (lua_State *L, int idx1, int idx2);
143LUA_API int            (lua_rawequal) (lua_State *L, int idx1, int idx2);
144LUA_API int            (lua_lessthan) (lua_State *L, int idx1, int idx2);
145
146LUA_API lua_Number      (lua_tonumber) (lua_State *L, int idx);
147LUA_API lua_Integer     (lua_tointeger) (lua_State *L, int idx);
148LUA_API int             (lua_toboolean) (lua_State *L, int idx);
149LUA_API const char     *(lua_tolstring) (lua_State *L, int idx, size_t *len);
150LUA_API size_t          (lua_objlen) (lua_State *L, int idx);
151LUA_API lua_CFunction   (lua_tocfunction) (lua_State *L, int idx);
152LUA_API void           *(lua_touserdata) (lua_State *L, int idx);
153LUA_API lua_State      *(lua_tothread) (lua_State *L, int idx);
154LUA_API const void     *(lua_topointer) (lua_State *L, int idx);
155
156
157/*
158** push functions (C -> stack)
159*/
160LUA_API void  (lua_pushnil) (lua_State *L);
161LUA_API void  (lua_pushnumber) (lua_State *L, lua_Number n);
162LUA_API void  (lua_pushinteger) (lua_State *L, lua_Integer n);
163LUA_API void  (lua_pushlstring) (lua_State *L, const char *s, size_t l);
164LUA_API void  (lua_pushstring) (lua_State *L, const char *s);
165LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt,
166                                                      va_list argp);
167LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...);
168LUA_API void  (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n);
169LUA_API void  (lua_pushboolean) (lua_State *L, int b);
170LUA_API void  (lua_pushlightuserdata) (lua_State *L, void *p);
171LUA_API int   (lua_pushthread) (lua_State *L);
172
173
174/*
175** get functions (Lua -> stack)
176*/
177LUA_API void  (lua_gettable) (lua_State *L, int idx);
178LUA_API void  (lua_getfield) (lua_State *L, int idx, const char *k);
179LUA_API void  (lua_rawget) (lua_State *L, int idx);
180LUA_API void  (lua_rawgeti) (lua_State *L, int idx, int n);
181LUA_API void  (lua_createtable) (lua_State *L, int narr, int nrec);
182LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz);
183LUA_API int   (lua_getmetatable) (lua_State *L, int objindex);
184LUA_API void  (lua_getfenv) (lua_State *L, int idx);
185
186
187/*
188** set functions (stack -> Lua)
189*/
190LUA_API void  (lua_settable) (lua_State *L, int idx);
191LUA_API void  (lua_setfield) (lua_State *L, int idx, const char *k);
192LUA_API void  (lua_rawset) (lua_State *L, int idx);
193LUA_API void  (lua_rawseti) (lua_State *L, int idx, int n);
194LUA_API int   (lua_setmetatable) (lua_State *L, int objindex);
195LUA_API int   (lua_setfenv) (lua_State *L, int idx);
196
197
198/*
199** `load' and `call' functions (load and run Lua code)
200*/
201LUA_API void  (lua_call) (lua_State *L, int nargs, int nresults);
202LUA_API int   (lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc);
203LUA_API int   (lua_cpcall) (lua_State *L, lua_CFunction func, void *ud);
204LUA_API int   (lua_load) (lua_State *L, lua_Reader reader, void *dt,
205                                        const char *chunkname);
206
207LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data);
208
209
210/*
211** coroutine functions
212*/
213LUA_API int  (lua_yield) (lua_State *L, int nresults);
214LUA_API int  (lua_resume) (lua_State *L, int narg);
215LUA_API int  (lua_status) (lua_State *L);
216
217/*
218** garbage-collection function and options
219*/
220
221#define LUA_GCSTOP              0
222#define LUA_GCRESTART           1
223#define LUA_GCCOLLECT           2
224#define LUA_GCCOUNT             3
225#define LUA_GCCOUNTB            4
226#define LUA_GCSTEP              5
227#define LUA_GCSETPAUSE          6
228#define LUA_GCSETSTEPMUL        7
229
230LUA_API int (lua_gc) (lua_State *L, int what, int data);
231
232
233/*
234** miscellaneous functions
235*/
236
237LUA_API int   (lua_error) (lua_State *L);
238
239LUA_API int   (lua_next) (lua_State *L, int idx);
240
241LUA_API void  (lua_concat) (lua_State *L, int n);
242
243LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud);
244LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud);
245
246
247
248/*
249** ===============================================================
250** some useful macros
251** ===============================================================
252*/
253
254#define lua_pop(L,n)            lua_settop(L, -(n)-1)
255
256#define lua_newtable(L)         lua_createtable(L, 0, 0)
257
258#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))
259
260#define lua_pushcfunction(L,f)  lua_pushcclosure(L, (f), 0)
261
262#define lua_strlen(L,i)         lua_objlen(L, (i))
263
264#define lua_isfunction(L,n)     (lua_type(L, (n)) == LUA_TFUNCTION)
265#define lua_istable(L,n)        (lua_type(L, (n)) == LUA_TTABLE)
266#define lua_islightuserdata(L,n)        (lua_type(L, (n)) == LUA_TLIGHTUSERDATA)
267#define lua_isnil(L,n)          (lua_type(L, (n)) == LUA_TNIL)
268#define lua_isboolean(L,n)      (lua_type(L, (n)) == LUA_TBOOLEAN)
269#define lua_isthread(L,n)       (lua_type(L, (n)) == LUA_TTHREAD)
270#define lua_isnone(L,n)         (lua_type(L, (n)) == LUA_TNONE)
271#define lua_isnoneornil(L, n)   (lua_type(L, (n)) <= 0)
272
273#define lua_pushliteral(L, s)   \
274        lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1)
275
276#define lua_setglobal(L,s)      lua_setfield(L, LUA_GLOBALSINDEX, (s))
277#define lua_getglobal(L,s)      lua_getfield(L, LUA_GLOBALSINDEX, (s))
278
279#define lua_tostring(L,i)       lua_tolstring(L, (i), NULL)
280
281
282
283/*
284** compatibility macros and functions
285*/
286
287#define lua_open()      luaL_newstate()
288
289#define lua_getregistry(L)      lua_pushvalue(L, LUA_REGISTRYINDEX)
290
291#define lua_getgccount(L)       lua_gc(L, LUA_GCCOUNT, 0)
292
293#define lua_Chunkreader         lua_Reader
294#define lua_Chunkwriter         lua_Writer
295
296
297/* hack */
298LUA_API void lua_setlevel       (lua_State *from, lua_State *to);
299
300
301/*
302** {======================================================================
303** Debug API
304** =======================================================================
305*/
306
307
308/*
309** Event codes
310*/
311#define LUA_HOOKCALL    0
312#define LUA_HOOKRET     1
313#define LUA_HOOKLINE    2
314#define LUA_HOOKCOUNT   3
315#define LUA_HOOKTAILRET 4
316
317
318/*
319** Event masks
320*/
321#define LUA_MASKCALL    (1 << LUA_HOOKCALL)
322#define LUA_MASKRET     (1 << LUA_HOOKRET)
323#define LUA_MASKLINE    (1 << LUA_HOOKLINE)
324#define LUA_MASKCOUNT   (1 << LUA_HOOKCOUNT)
325
326typedef struct lua_Debug lua_Debug;  /* activation record */
327
328
329/* Functions to be called by the debuger in specific events */
330typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
331
332
333LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar);
334LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar);
335LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n);
336LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n);
337LUA_API const char *lua_getupvalue (lua_State *L, int funcindex, int n);
338LUA_API const char *lua_setupvalue (lua_State *L, int funcindex, int n);
339
340LUA_API int lua_sethook (lua_State *L, lua_Hook func, int mask, int count);
341LUA_API lua_Hook lua_gethook (lua_State *L);
342LUA_API int lua_gethookmask (lua_State *L);
343LUA_API int lua_gethookcount (lua_State *L);
344
345
346struct lua_Debug {
347  int event;
348  const char *name;     /* (n) */
349  const char *namewhat; /* (n) `global', `local', `field', `method' */
350  const char *what;     /* (S) `Lua', `C', `main', `tail' */
351  const char *source;   /* (S) */
352  int currentline;      /* (l) */
353  int nups;             /* (u) number of upvalues */
354  int linedefined;      /* (S) */
355  int lastlinedefined;  /* (S) */
356  char short_src[LUA_IDSIZE]; /* (S) */
357  /* private part */
358  int i_ci;  /* active function */
359};
360
361/* }====================================================================== */
362
363
364/******************************************************************************
365* Copyright (C) 1994-2008 Lua.org, PUC-Rio.  All rights reserved.
366*
367* Permission is hereby granted, free of charge, to any person obtaining
368* a copy of this software and associated documentation files (the
369* "Software"), to deal in the Software without restriction, including
370* without limitation the rights to use, copy, modify, merge, publish,
371* distribute, sublicense, and/or sell copies of the Software, and to
372* permit persons to whom the Software is furnished to do so, subject to
373* the following conditions:
374*
375* The above copyright notice and this permission notice shall be
376* included in all copies or substantial portions of the Software.
377*
378* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
379* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
380* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
381* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
382* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
383* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
384* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
385******************************************************************************/
386
387
388#endif
Note: See TracBrowser for help on using the repository browser.