资源简介

VS2013 Lua解决方案,包含lualib项目与Test项目。已编译出C、C++,win32、x64版本的静态库,请阅读README.txt。

资源截图

代码片段和文件信息

/*
** $Id: lapi.cv 2.244 2014/12/26 14:43:45 roberto Exp $
** Lua API
** See Copyright Notice in lua.h
*/

#define lapi_c
#define LUA_CORE

#include “lprefix.h“


#include 
#include 

#include “lua.h“

#include “lapi.h“
#include “ldebug.h“
#include “ldo.h“
#include “lfunc.h“
#include “lgc.h“
#include “lmem.h“
#include “lobject.h“
#include “lstate.h“
#include “lstring.h“
#include “ltable.h“
#include “ltm.h“
#include “lundump.h“
#include “lvm.h“



const char lua_ident[] =
  “$LuaVersion: “ LUA_COPYRIGHT “ $“
  “$LuaAuthors: “ LUA_AUTHORS “ $“;


/* value at a non-valid index */
#define NONVALIDVALUE cast(TValue * luaO_nilobject)

/* corresponding test */
#define isvalid(o) ((o) != luaO_nilobject)

/* test for pseudo index */
#define ispseudo(i) ((i) <= LUA_REGISTRYINDEX)

/* test for upvalue */
#define isupvalue(i) ((i) < LUA_REGISTRYINDEX)

/* test for valid but not pseudo index */
#define isstackindex(i o) (isvalid(o) && !ispseudo(i))

#define api_checkvalidindex(o)  api_check(isvalid(o) “invalid index“)

#define api_checkstackindex(i o)  \
api_check(isstackindex(i o) “index not in the stack“)


static TValue *index2addr (lua_State *L int idx) {
  CallInfo *ci = L->ci;
  if (idx > 0) {
    TValue *o = ci->func + idx;
    api_check(idx <= ci->top - (ci->func + 1) “unacceptable index“);
    if (o >= L->top) return NONVALIDVALUE;
    else return o;
  }
  else if (!ispseudo(idx)) {  /* negative index */
    api_check(idx != 0 && -idx <= L->top - (ci->func + 1) “invalid index“);
    return L->top + idx;
  }
  else if (idx == LUA_REGISTRYINDEX)
    return &G(L)->l_registry;
  else {  /* upvalues */
    idx = LUA_REGISTRYINDEX - idx;
    api_check(idx <= MAXUPVAL + 1 “upvalue index too large“);
    if (ttislcf(ci->func))  /* light C function? */
      return NONVALIDVALUE;  /* it has no upvalues */
    else {
      CClosure *func = clCvalue(ci->func);
      return (idx <= func->nupvalues) ? &func->upvalue[idx-1] : NONVALIDVALUE;
    }
  }
}


/*
** to be called by ‘lua_checkstack‘ in protected mode to grow stack
** capturing memory errors
*/
static void growstack (lua_State *L void *ud) {
  int size = *(int *)ud;
  luaD_growstack(L size);
}


LUA_API int lua_checkstack (lua_State *L int n) {
  int res;
  CallInfo *ci = L->ci;
  lua_lock(L);
  api_check(n >= 0 “negative ‘n‘“);
  if (L->stack_last - L->top > n)  /* stack large enough? */
    res = 1;  /* yes; check is OK */
  else {  /* no; need to grow stack */
    int inuse = cast_int(L->top - L->stack) + EXTRA_STACK;
    if (inuse > LUAI_MAXSTACK - n)  /* can grow without overflow? */
      res = 0;  /* no */
    else  /* try to grow stack */
      res = (luaD_rawrunprotected(L &growstack &n) == LUA_OK);
  }
  if (res && ci->top < L->top + n)
    ci->top = L->top + n;  /* adjust frame top */
  lua_unlock(L);
  return res;
}


LUA_API void lua_xmove (lua_State *from lua_State *to int n) {
  int i;
  if (from == to) return;
  lua_lock(to);
  api_checknelems(fr

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-10-09 23:28  lualib\
     目录           0  2015-10-09 22:28  lualib\lualib\
     文件    37421056  2015-10-09 23:28  lualib\lualib.sdf
     文件        1411  2015-10-09 22:24  lualib\lualib.sln
     文件       23552  2015-10-09 23:28  lualib\lualib.v12.suo
     目录           0  2015-10-09 21:29  lualib\lualib\C\
     目录           0  2015-10-09 21:31  lualib\lualib\Cpp\
     目录           0  2015-10-09 21:31  lualib\lualib\Cpp\x64\
     文件     1657892  2015-10-09 21:31  lualib\lualib\Cpp\x64\lualib.lib
     目录           0  2015-10-09 22:09  lualib\lualib\Cpp\x86\
     文件     1667022  2015-10-09 22:09  lualib\lualib\Cpp\x86\lualib.lib
     目录           0  2015-10-09 22:24  lualib\lualib\C\x64\
     文件     1256732  2015-10-09 22:24  lualib\lualib\C\x64\lualib.lib
     目录           0  2015-10-09 22:23  lualib\lualib\C\x86\
     文件     1264662  2015-10-09 22:23  lualib\lualib\C\x86\lualib.lib
     文件       10408  2015-10-09 22:24  lualib\lualib\lualib.vcxproj
     文件        6540  2015-10-09 21:11  lualib\lualib\lualib.vcxproj.filters
     文件         165  2015-10-09 21:15  lualib\lualib\lualib.vcxproj.user
     文件        1147  2015-10-09 20:55  lualib\lualib\ReadMe.txt
     目录           0  2015-10-09 22:10  lualib\lualib\src\
     文件       30159  2014-12-26 22:43  lualib\lualib\src\lapi.c
     文件         535  2014-07-16 05:26  lualib\lualib\src\lapi.h
     文件       28389  2014-12-15 02:32  lualib\lualib\src\lauxlib.c
     文件        8433  2014-10-30 00:11  lualib\lualib\src\lauxlib.h
     文件       14507  2014-12-10 20:26  lualib\lualib\src\lbaselib.c
     文件        4946  2014-11-03 03:19  lualib\lualib\src\lbitlib.c
     文件       24737  2014-12-30 00:49  lualib\lualib\src\lcode.c
     文件        3189  2013-12-31 04:47  lualib\lualib\src\lcode.h
     文件        3752  2014-11-03 03:19  lualib\lualib\src\lcorolib.c
     文件        2318  2014-11-03 03:19  lualib\lualib\src\lctype.c
     文件        1837  2011-07-15 20:50  lualib\lualib\src\lctype.h
............此处省略89个文件信息

评论

共有 条评论