?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2. ** $Id: lfunc.h,v 2.15.1.1 2017/04/19 17:39:34 roberto Exp $
  3. ** Auxiliary functions to manipulate prototypes and closures
  4. ** See Copyright Notice in lua.h
  5. */
  6.  
  7. #ifndef lfunc_h
  8. #define lfunc_h
  9.  
  10.  
  11. #include "lobject.h"
  12.  
  13.  
  14. #define sizeCclosure(n) (cast(int, sizeof(CClosure)) + \
  15.                          cast(int, sizeof(TValue)*((n)-1)))
  16.  
  17. #define sizeLclosure(n) (cast(int, sizeof(LClosure)) + \
  18.                          cast(int, sizeof(TValue *)*((n)-1)))
  19.  
  20.  
  21. /* test whether thread is in 'twups' list */
  22. #define isintwups(L)    (L->twups != L)
  23.  
  24.  
  25. /*
  26. ** maximum number of upvalues in a closure (both C and Lua). (Value
  27. ** must fit in a VM register.)
  28. */
  29. #define MAXUPVAL        255
  30.  
  31.  
  32. /*
  33. ** Upvalues for Lua closures
  34. */
  35. struct UpVal {
  36.   TValue *v;  /* points to stack or to its own value */
  37.   lu_mem refcount;  /* reference counter */
  38.   union {
  39.     struct {  /* (when open) */
  40.       UpVal *next;  /* linked list */
  41.       int touched;  /* mark to avoid cycles with dead threads */
  42.     } open;
  43.     TValue value;  /* the value (when closed) */
  44.   } u;
  45. };
  46.  
  47. #define upisopen(up)    ((up)->v != &(up)->u.value)
  48.  
  49.  
  50. LUAI_FUNC Proto *luaF_newproto (lua_State *L);
  51. LUAI_FUNC CClosure *luaF_newCclosure (lua_State *L, int nelems);
  52. LUAI_FUNC LClosure *luaF_newLclosure (lua_State *L, int nelems);
  53. LUAI_FUNC void luaF_initupvals (lua_State *L, LClosure *cl);
  54. LUAI_FUNC UpVal *luaF_findupval (lua_State *L, StkId level);
  55. LUAI_FUNC void luaF_close (lua_State *L, StkId level);
  56. LUAI_FUNC void luaF_freeproto (lua_State *L, Proto *f);
  57. LUAI_FUNC const char *luaF_getlocalname (const Proto *func, int local_number,
  58.                                          int pc);
  59.  
  60.  
  61. #endif
  62.