PageRenderTime 32ms CodeModel.GetById 13ms app.highlight 14ms RepoModel.GetById 2ms app.codeStats 0ms

/src/middleware/lua/lauxlib.h

https://bitbucket.org/vivkin/gam3b00bs/
C++ Header | 174 lines | 97 code | 57 blank | 20 comment | 4 complexity | 9ee455010892bdf666d56ba254ef06e5 MD5 | raw file
  1/*
  2** $Id: lauxlib.h,v 1.88.1.1 2007/12/27 13:02:25 roberto Exp $
  3** Auxiliary functions for building Lua libraries
  4** See Copyright Notice in lua.h
  5*/
  6
  7
  8#ifndef lauxlib_h
  9#define lauxlib_h
 10
 11
 12#include <stddef.h>
 13#include <stdio.h>
 14
 15#include "lua.h"
 16
 17
 18#if defined(LUA_COMPAT_GETN)
 19LUALIB_API int (luaL_getn) (lua_State *L, int t);
 20LUALIB_API void (luaL_setn) (lua_State *L, int t, int n);
 21#else
 22#define luaL_getn(L,i)          ((int)lua_objlen(L, i))
 23#define luaL_setn(L,i,j)        ((void)0)  /* no op! */
 24#endif
 25
 26#if defined(LUA_COMPAT_OPENLIB)
 27#define luaI_openlib	luaL_openlib
 28#endif
 29
 30
 31/* extra error code for `luaL_load' */
 32#define LUA_ERRFILE     (LUA_ERRERR+1)
 33
 34
 35typedef struct luaL_Reg {
 36  const char *name;
 37  lua_CFunction func;
 38} luaL_Reg;
 39
 40
 41
 42LUALIB_API void (luaI_openlib) (lua_State *L, const char *libname,
 43                                const luaL_Reg *l, int nup);
 44LUALIB_API void (luaL_register) (lua_State *L, const char *libname,
 45                                const luaL_Reg *l);
 46LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e);
 47LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e);
 48LUALIB_API int (luaL_typerror) (lua_State *L, int narg, const char *tname);
 49LUALIB_API int (luaL_argerror) (lua_State *L, int numarg, const char *extramsg);
 50LUALIB_API const char *(luaL_checklstring) (lua_State *L, int numArg,
 51                                                          size_t *l);
 52LUALIB_API const char *(luaL_optlstring) (lua_State *L, int numArg,
 53                                          const char *def, size_t *l);
 54LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int numArg);
 55LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int nArg, lua_Number def);
 56
 57LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int numArg);
 58LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int nArg,
 59                                          lua_Integer def);
 60
 61LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg);
 62LUALIB_API void (luaL_checktype) (lua_State *L, int narg, int t);
 63LUALIB_API void (luaL_checkany) (lua_State *L, int narg);
 64
 65LUALIB_API int   (luaL_newmetatable) (lua_State *L, const char *tname);
 66LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname);
 67
 68LUALIB_API void (luaL_where) (lua_State *L, int lvl);
 69LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...);
 70
 71LUALIB_API int (luaL_checkoption) (lua_State *L, int narg, const char *def,
 72                                   const char *const lst[]);
 73
 74LUALIB_API int (luaL_ref) (lua_State *L, int t);
 75LUALIB_API void (luaL_unref) (lua_State *L, int t, int ref);
 76
 77LUALIB_API int (luaL_loadfile) (lua_State *L, const char *filename);
 78LUALIB_API int (luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz,
 79                                  const char *name);
 80LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s);
 81
 82LUALIB_API lua_State *(luaL_newstate) (void);
 83
 84
 85LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s, const char *p,
 86                                                  const char *r);
 87
 88LUALIB_API const char *(luaL_findtable) (lua_State *L, int idx,
 89                                         const char *fname, int szhint);
 90
 91
 92
 93
 94/*
 95** ===============================================================
 96** some useful macros
 97** ===============================================================
 98*/
 99
100#define luaL_argcheck(L, cond,numarg,extramsg)	\
101		((void)((cond) || luaL_argerror(L, (numarg), (extramsg))))
102#define luaL_checkstring(L,n)	(luaL_checklstring(L, (n), NULL))
103#define luaL_optstring(L,n,d)	(luaL_optlstring(L, (n), (d), NULL))
104#define luaL_checkint(L,n)	((int)luaL_checkinteger(L, (n)))
105#define luaL_optint(L,n,d)	((int)luaL_optinteger(L, (n), (d)))
106#define luaL_checklong(L,n)	((long)luaL_checkinteger(L, (n)))
107#define luaL_optlong(L,n,d)	((long)luaL_optinteger(L, (n), (d)))
108
109#define luaL_typename(L,i)	lua_typename(L, lua_type(L,(i)))
110
111#define luaL_dofile(L, fn) \
112	(luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0))
113
114#define luaL_dostring(L, s) \
115	(luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0))
116
117#define luaL_getmetatable(L,n)	(lua_getfield(L, LUA_REGISTRYINDEX, (n)))
118
119#define luaL_opt(L,f,n,d)	(lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))
120
121/*
122** {======================================================
123** Generic Buffer manipulation
124** =======================================================
125*/
126
127
128
129typedef struct luaL_Buffer {
130  char *p;			/* current position in buffer */
131  int lvl;  /* number of strings in the stack (level) */
132  lua_State *L;
133  char buffer[LUAL_BUFFERSIZE];
134} luaL_Buffer;
135
136#define luaL_addchar(B,c) \
137  ((void)((B)->p < ((B)->buffer+LUAL_BUFFERSIZE) || luaL_prepbuffer(B)), \
138   (*(B)->p++ = (char)(c)))
139
140/* compatibility only */
141#define luaL_putchar(B,c)	luaL_addchar(B,c)
142
143#define luaL_addsize(B,n)	((B)->p += (n))
144
145LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B);
146LUALIB_API char *(luaL_prepbuffer) (luaL_Buffer *B);
147LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l);
148LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s);
149LUALIB_API void (luaL_addvalue) (luaL_Buffer *B);
150LUALIB_API void (luaL_pushresult) (luaL_Buffer *B);
151
152
153/* }====================================================== */
154
155
156/* compatibility with ref system */
157
158/* pre-defined references */
159#define LUA_NOREF       (-2)
160#define LUA_REFNIL      (-1)
161
162#define lua_ref(L,lock) ((lock) ? luaL_ref(L, LUA_REGISTRYINDEX) : \
163      (lua_pushstring(L, "unlocked references are obsolete"), lua_error(L), 0))
164
165#define lua_unref(L,ref)        luaL_unref(L, LUA_REGISTRYINDEX, (ref))
166
167#define lua_getref(L,ref)       lua_rawgeti(L, LUA_REGISTRYINDEX, (ref))
168
169
170#define luaL_reg	luaL_Reg
171
172#endif
173
174