2812
+ − 1
/*
+ − 2
** $Id: lua.h,v 1.218.1.5 2008/08/06 13:30:12 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.4"
+ − 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
+ − 50
typedef struct lua_State lua_State;
+ − 51
+ − 52
typedef int (*lua_CFunction) (lua_State *L);
+ − 53
+ − 54
+ − 55
/*
+ − 56
** functions that read/write blocks when loading/dumping Lua chunks
+ − 57
*/
+ − 58
typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz);
+ − 59
+ − 60
typedef int (*lua_Writer) (lua_State *L, const void* p, size_t sz, void* ud);
+ − 61
+ − 62
+ − 63
/*
+ − 64
** prototype for memory-allocation functions
+ − 65
*/
+ − 66
typedef 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 */
+ − 99
typedef LUA_NUMBER lua_Number;
+ − 100
+ − 101
+ − 102
/* type for integer functions */
+ − 103
typedef LUA_INTEGER lua_Integer;
+ − 104
+ − 105
+ − 106
+ − 107
/*
+ − 108
** state manipulation
+ − 109
*/
+ − 110
LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud);
+ − 111
LUA_API void (lua_close) (lua_State *L);
+ − 112
LUA_API lua_State *(lua_newthread) (lua_State *L);
+ − 113
+ − 114
LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf);
+ − 115
+ − 116
+ − 117
/*
+ − 118
** basic stack manipulation
+ − 119
*/
+ − 120
LUA_API int (lua_gettop) (lua_State *L);
+ − 121
LUA_API void (lua_settop) (lua_State *L, int idx);
+ − 122
LUA_API void (lua_pushvalue) (lua_State *L, int idx);
+ − 123
LUA_API void (lua_remove) (lua_State *L, int idx);
+ − 124
LUA_API void (lua_insert) (lua_State *L, int idx);
+ − 125
LUA_API void (lua_replace) (lua_State *L, int idx);
+ − 126
LUA_API int (lua_checkstack) (lua_State *L, int sz);
+ − 127
+ − 128
LUA_API void (lua_xmove) (lua_State *from, lua_State *to, int n);
+ − 129
+ − 130
+ − 131
/*
+ − 132
** access functions (stack -> C)
+ − 133
*/
+ − 134
+ − 135
LUA_API int (lua_isnumber) (lua_State *L, int idx);
+ − 136
LUA_API int (lua_isstring) (lua_State *L, int idx);
+ − 137
LUA_API int (lua_iscfunction) (lua_State *L, int idx);
+ − 138
LUA_API int (lua_isuserdata) (lua_State *L, int idx);
+ − 139
LUA_API int (lua_type) (lua_State *L, int idx);
+ − 140
LUA_API const char *(lua_typename) (lua_State *L, int tp);
+ − 141
+ − 142
LUA_API int (lua_equal) (lua_State *L, int idx1, int idx2);
+ − 143
LUA_API int (lua_rawequal) (lua_State *L, int idx1, int idx2);
+ − 144
LUA_API int (lua_lessthan) (lua_State *L, int idx1, int idx2);
+ − 145
+ − 146
LUA_API lua_Number (lua_tonumber) (lua_State *L, int idx);
+ − 147
LUA_API lua_Integer (lua_tointeger) (lua_State *L, int idx);
+ − 148
LUA_API int (lua_toboolean) (lua_State *L, int idx);
+ − 149
LUA_API const char *(lua_tolstring) (lua_State *L, int idx, size_t *len);
+ − 150
LUA_API size_t (lua_objlen) (lua_State *L, int idx);
+ − 151
LUA_API lua_CFunction (lua_tocfunction) (lua_State *L, int idx);
+ − 152
LUA_API void *(lua_touserdata) (lua_State *L, int idx);
+ − 153
LUA_API lua_State *(lua_tothread) (lua_State *L, int idx);
+ − 154
LUA_API const void *(lua_topointer) (lua_State *L, int idx);
+ − 155
+ − 156
+ − 157
/*
+ − 158
** push functions (C -> stack)
+ − 159
*/
+ − 160
LUA_API void (lua_pushnil) (lua_State *L);
+ − 161
LUA_API void (lua_pushnumber) (lua_State *L, lua_Number n);
+ − 162
LUA_API void (lua_pushinteger) (lua_State *L, lua_Integer n);
+ − 163
LUA_API void (lua_pushlstring) (lua_State *L, const char *s, size_t l);
+ − 164
LUA_API void (lua_pushstring) (lua_State *L, const char *s);
+ − 165
LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt,
+ − 166
va_list argp);
+ − 167
LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...);
+ − 168
LUA_API void (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n);
+ − 169
LUA_API void (lua_pushboolean) (lua_State *L, int b);
+ − 170
LUA_API void (lua_pushlightuserdata) (lua_State *L, void *p);
+ − 171
LUA_API int (lua_pushthread) (lua_State *L);
+ − 172
+ − 173
+ − 174
/*
+ − 175
** get functions (Lua -> stack)
+ − 176
*/
+ − 177
LUA_API void (lua_gettable) (lua_State *L, int idx);
+ − 178
LUA_API void (lua_getfield) (lua_State *L, int idx, const char *k);
+ − 179
LUA_API void (lua_rawget) (lua_State *L, int idx);
+ − 180
LUA_API void (lua_rawgeti) (lua_State *L, int idx, int n);
+ − 181
LUA_API void (lua_createtable) (lua_State *L, int narr, int nrec);
+ − 182
LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz);
+ − 183
LUA_API int (lua_getmetatable) (lua_State *L, int objindex);
+ − 184
LUA_API void (lua_getfenv) (lua_State *L, int idx);
+ − 185
+ − 186
+ − 187
/*
+ − 188
** set functions (stack -> Lua)
+ − 189
*/
+ − 190
LUA_API void (lua_settable) (lua_State *L, int idx);
+ − 191
LUA_API void (lua_setfield) (lua_State *L, int idx, const char *k);
+ − 192
LUA_API void (lua_rawset) (lua_State *L, int idx);
+ − 193
LUA_API void (lua_rawseti) (lua_State *L, int idx, int n);
+ − 194
LUA_API int (lua_setmetatable) (lua_State *L, int objindex);
+ − 195
LUA_API int (lua_setfenv) (lua_State *L, int idx);
+ − 196
+ − 197
+ − 198
/*
+ − 199
** `load' and `call' functions (load and run Lua code)
+ − 200
*/
+ − 201
LUA_API void (lua_call) (lua_State *L, int nargs, int nresults);
+ − 202
LUA_API int (lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc);
+ − 203
LUA_API int (lua_cpcall) (lua_State *L, lua_CFunction func, void *ud);
+ − 204
LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt,
+ − 205
const char *chunkname);
+ − 206
+ − 207
LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data);
+ − 208
+ − 209
+ − 210
/*
+ − 211
** coroutine functions
+ − 212
*/
+ − 213
LUA_API int (lua_yield) (lua_State *L, int nresults);
+ − 214
LUA_API int (lua_resume) (lua_State *L, int narg);
+ − 215
LUA_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
+ − 230
LUA_API int (lua_gc) (lua_State *L, int what, int data);
+ − 231
+ − 232
+ − 233
/*
+ − 234
** miscellaneous functions
+ − 235
*/
+ − 236
+ − 237
LUA_API int (lua_error) (lua_State *L);
+ − 238
+ − 239
LUA_API int (lua_next) (lua_State *L, int idx);
+ − 240
+ − 241
LUA_API void (lua_concat) (lua_State *L, int n);
+ − 242
+ − 243
LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud);
+ − 244
LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud);
+ − 245
+ − 246
+ − 247
3697
+ − 248
/*
2812
+ − 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 */
+ − 298
LUA_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
+ − 326
typedef struct lua_Debug lua_Debug; /* activation record */
+ − 327
+ − 328
+ − 329
/* Functions to be called by the debuger in specific events */
+ − 330
typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
+ − 331
+ − 332
+ − 333
LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar);
+ − 334
LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar);
+ − 335
LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n);
+ − 336
LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n);
+ − 337
LUA_API const char *lua_getupvalue (lua_State *L, int funcindex, int n);
+ − 338
LUA_API const char *lua_setupvalue (lua_State *L, int funcindex, int n);
+ − 339
+ − 340
LUA_API int lua_sethook (lua_State *L, lua_Hook func, int mask, int count);
+ − 341
LUA_API lua_Hook lua_gethook (lua_State *L);
+ − 342
LUA_API int lua_gethookmask (lua_State *L);
+ − 343
LUA_API int lua_gethookcount (lua_State *L);
+ − 344
+ − 345
+ − 346
struct 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