root/lauxlib.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 /* extra error code for `luaL_load' */
  19 #define LUA_ERRFILE     (LUA_ERRERR+1)
  20 
  21 typedef struct luaL_Reg {
  22   const char *name;
  23   lua_CFunction func;
  24 } luaL_Reg;
  25 
  26 LUALIB_API void (luaL_openlib) (lua_State *L, const char *libname,
  27                                 const luaL_Reg *l, int nup);
  28 LUALIB_API void (luaL_register) (lua_State *L, const char *libname,
  29                                 const luaL_Reg *l);
  30 LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e);
  31 LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e);
  32 LUALIB_API int (luaL_typerror) (lua_State *L, int narg, const char *tname);
  33 LUALIB_API int (luaL_argerror) (lua_State *L, int numarg, const char *extramsg);
  34 LUALIB_API const char *(luaL_checklstring) (lua_State *L, int numArg,
  35                                                           size_t *l);
  36 LUALIB_API const char *(luaL_optlstring) (lua_State *L, int numArg,
  37                                           const char *def, size_t *l);
  38 LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int numArg);
  39 LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int nArg, lua_Number def);
  40 
  41 LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int numArg);
  42 LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int nArg,
  43                                           lua_Integer def);
  44 
  45 LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg);
  46 LUALIB_API void (luaL_checktype) (lua_State *L, int narg, int t);
  47 LUALIB_API void (luaL_checkany) (lua_State *L, int narg);
  48 
  49 LUALIB_API int   (luaL_newmetatable) (lua_State *L, const char *tname);
  50 LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname);
  51 
  52 LUALIB_API void (luaL_where) (lua_State *L, int lvl);
  53 LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...);
  54 
  55 LUALIB_API int (luaL_checkoption) (lua_State *L, int narg, const char *def,
  56                                    const char *const lst[]);
  57 
  58 /* pre-defined references */
  59 #define LUA_NOREF       (-2)
  60 #define LUA_REFNIL      (-1)
  61 
  62 LUALIB_API int (luaL_ref) (lua_State *L, int t);
  63 LUALIB_API void (luaL_unref) (lua_State *L, int t, int ref);
  64 
  65 LUALIB_API int (luaL_loadfile) (lua_State *L, const char *filename);
  66 LUALIB_API int (luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz,
  67                                   const char *name);
  68 LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s);
  69 
  70 LUALIB_API lua_State *(luaL_newstate) (void);
  71 
  72 
  73 LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s, const char *p,
  74                                                   const char *r);
  75 
  76 LUALIB_API const char *(luaL_findtable) (lua_State *L, int idx,
  77                                          const char *fname, int szhint);
  78 
  79 /* From Lua 5.2. */
  80 LUALIB_API int luaL_fileresult(lua_State *L, int stat, const char *fname);
  81 LUALIB_API int luaL_execresult(lua_State *L, int stat);
  82 LUALIB_API int (luaL_loadfilex) (lua_State *L, const char *filename,
  83                                  const char *mode);
  84 LUALIB_API int (luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz,
  85                                    const char *name, const char *mode);
  86 LUALIB_API void luaL_traceback (lua_State *L, lua_State *L1, const char *msg,
  87                                 int level);
  88 LUALIB_API void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup);
  89 LUALIB_API void (luaL_pushmodule) (lua_State *L, const char *modname,
  90                                    int sizehint);
  91 LUALIB_API void *(luaL_testudata) (lua_State *L, int ud, const char *tname);
  92 LUALIB_API void (luaL_setmetatable) (lua_State *L, const char *tname);
  93 
  94 
  95 /*
  96 ** ===============================================================
  97 ** some useful macros
  98 ** ===============================================================
  99 */
 100 
 101 #define luaL_argcheck(L, cond,numarg,extramsg)  \
 102                 ((void)((cond) || luaL_argerror(L, (numarg), (extramsg))))
 103 #define luaL_checkstring(L,n)   (luaL_checklstring(L, (n), NULL))
 104 #define luaL_optstring(L,n,d)   (luaL_optlstring(L, (n), (d), NULL))
 105 #define luaL_checkint(L,n)      ((int)luaL_checkinteger(L, (n)))
 106 #define luaL_optint(L,n,d)      ((int)luaL_optinteger(L, (n), (d)))
 107 #define luaL_checklong(L,n)     ((long)luaL_checkinteger(L, (n)))
 108 #define luaL_optlong(L,n,d)     ((long)luaL_optinteger(L, (n), (d)))
 109 
 110 #define luaL_typename(L,i)      lua_typename(L, lua_type(L,(i)))
 111 
 112 #define luaL_dofile(L, fn) \
 113         (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0))
 114 
 115 #define luaL_dostring(L, s) \
 116         (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0))
 117 
 118 #define luaL_getmetatable(L,n)  (lua_getfield(L, LUA_REGISTRYINDEX, (n)))
 119 
 120 #define luaL_opt(L,f,n,d)       (lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))
 121 
 122 /* From Lua 5.2. */
 123 #define luaL_newlibtable(L, l) \
 124         lua_createtable(L, 0, sizeof(l)/sizeof((l)[0]) - 1)
 125 #define luaL_newlib(L, l)       (luaL_newlibtable(L, l), luaL_setfuncs(L, l, 0))
 126 
 127 /*
 128 ** {======================================================
 129 ** Generic Buffer manipulation
 130 ** =======================================================
 131 */
 132 
 133 
 134 
 135 typedef struct luaL_Buffer {
 136   char *p;                      /* current position in buffer */
 137   int lvl;  /* number of strings in the stack (level) */
 138   lua_State *L;
 139   char buffer[LUAL_BUFFERSIZE];
 140 } luaL_Buffer;
 141 
 142 #define luaL_addchar(B,c) \
 143   ((void)((B)->p < ((B)->buffer+LUAL_BUFFERSIZE) || luaL_prepbuffer(B)), \
 144    (*(B)->p++ = (char)(c)))
 145 
 146 /* compatibility only */
 147 #define luaL_putchar(B,c)       luaL_addchar(B,c)
 148 
 149 #define luaL_addsize(B,n)       ((B)->p += (n))
 150 
 151 LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B);
 152 LUALIB_API char *(luaL_prepbuffer) (luaL_Buffer *B);
 153 LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l);
 154 LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s);
 155 LUALIB_API void (luaL_addvalue) (luaL_Buffer *B);
 156 LUALIB_API void (luaL_pushresult) (luaL_Buffer *B);
 157 
 158 
 159 /* }====================================================== */
 160 
 161 #endif

/* [<][>][^][v][top][bottom][index][help] */