⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lapi.c

📁 wifi 无线网络路由协议OLSR linux下C代码
💻 C
📖 第 1 页 / 共 2 页
字号:
LUA_API void lua_pushboolean (lua_State *L, int b) {  lua_lock(L);  setbvalue(L->top, (b != 0));  /* ensure that true is 1 */  api_incr_top(L);  lua_unlock(L);}LUA_API void lua_pushlightuserdata (lua_State *L, void *p) {  lua_lock(L);  setpvalue(L->top, p);  api_incr_top(L);  lua_unlock(L);}/*** get functions (Lua -> stack)*/LUA_API void lua_gettable (lua_State *L, int idx) {  StkId t;  lua_lock(L);  t = luaA_index(L, idx);  setobj2s(L->top - 1, luaV_gettable(L, t, L->top - 1, 0));  lua_unlock(L);}LUA_API void lua_rawget (lua_State *L, int idx) {  StkId t;  lua_lock(L);  t = luaA_index(L, idx);  api_check(L, ttistable(t));  setobj2s(L->top - 1, luaH_get(hvalue(t), L->top - 1));  lua_unlock(L);}LUA_API void lua_rawgeti (lua_State *L, int idx, int n) {  StkId o;  lua_lock(L);  o = luaA_index(L, idx);  api_check(L, ttistable(o));  setobj2s(L->top, luaH_getnum(hvalue(o), n));  api_incr_top(L);  lua_unlock(L);}LUA_API void lua_newtable (lua_State *L) {  lua_lock(L);  luaC_checkGC(L);  sethvalue(L->top, luaH_new(L, 0, 0));  api_incr_top(L);  lua_unlock(L);}LUA_API int lua_getmetatable (lua_State *L, int objindex) {  const TObject *obj;  Table *mt = NULL;  int res;  lua_lock(L);  obj = luaA_indexAcceptable(L, objindex);  if (obj != NULL) {    switch (ttype(obj)) {      case LUA_TTABLE:        mt = hvalue(obj)->metatable;        break;      case LUA_TUSERDATA:        mt = uvalue(obj)->uv.metatable;        break;    }  }  if (mt == NULL || mt == hvalue(defaultmeta(L)))    res = 0;  else {    sethvalue(L->top, mt);    api_incr_top(L);    res = 1;  }  lua_unlock(L);  return res;}LUA_API void lua_getfenv (lua_State *L, int idx) {  StkId o;  lua_lock(L);  o = luaA_index(L, idx);  setobj2s(L->top, isLfunction(o) ? &clvalue(o)->l.g : gt(L));  api_incr_top(L);  lua_unlock(L);}/*** set functions (stack -> Lua)*/LUA_API void lua_settable (lua_State *L, int idx) {  StkId t;  lua_lock(L);  api_checknelems(L, 2);  t = luaA_index(L, idx);  luaV_settable(L, t, L->top - 2, L->top - 1);  L->top -= 2;  /* pop index and value */  lua_unlock(L);}LUA_API void lua_rawset (lua_State *L, int idx) {  StkId t;  lua_lock(L);  api_checknelems(L, 2);  t = luaA_index(L, idx);  api_check(L, ttistable(t));  setobj2t(luaH_set(L, hvalue(t), L->top-2), L->top-1);  /* write barrier */  L->top -= 2;  lua_unlock(L);}LUA_API void lua_rawseti (lua_State *L, int idx, int n) {  StkId o;  lua_lock(L);  api_checknelems(L, 1);  o = luaA_index(L, idx);  api_check(L, ttistable(o));  setobj2t(luaH_setnum(L, hvalue(o), n), L->top-1);  /* write barrier */  L->top--;  lua_unlock(L);}LUA_API int lua_setmetatable (lua_State *L, int objindex) {  TObject *obj, *mt;  int res = 1;  lua_lock(L);  api_checknelems(L, 1);  obj = luaA_index(L, objindex);  mt = (!ttisnil(L->top - 1)) ? L->top - 1 : defaultmeta(L);  api_check(L, ttistable(mt));  switch (ttype(obj)) {    case LUA_TTABLE: {      hvalue(obj)->metatable = hvalue(mt);  /* write barrier */      break;    }    case LUA_TUSERDATA: {      uvalue(obj)->uv.metatable = hvalue(mt);  /* write barrier */      break;    }    default: {      res = 0;  /* cannot set */      break;    }  }  L->top--;  lua_unlock(L);  return res;}LUA_API int lua_setfenv (lua_State *L, int idx) {  StkId o;  int res = 0;  lua_lock(L);  api_checknelems(L, 1);  o = luaA_index(L, idx);  L->top--;  api_check(L, ttistable(L->top));  if (isLfunction(o)) {    res = 1;    clvalue(o)->l.g = *(L->top);  }  lua_unlock(L);  return res;}/*** `load' and `call' functions (run Lua code)*/LUA_API void lua_call (lua_State *L, int nargs, int nresults) {  StkId func;  lua_lock(L);  api_checknelems(L, nargs+1);  func = L->top - (nargs+1);  luaD_call(L, func, nresults);  lua_unlock(L);}/*** Execute a protected call.*/struct CallS {  /* data to `f_call' */  StkId func;  int nresults;};static void f_call (lua_State *L, void *ud) {  struct CallS *c = cast(struct CallS *, ud);  luaD_call(L, c->func, c->nresults);}LUA_API int lua_pcall (lua_State *L, int nargs, int nresults, int errfunc) {  struct CallS c;  int status;  ptrdiff_t func;  lua_lock(L);  func = (errfunc == 0) ? 0 : savestack(L, luaA_index(L, errfunc));  c.func = L->top - (nargs+1);  /* function to be called */  c.nresults = nresults;  status = luaD_pcall(L, f_call, &c, savestack(L, c.func), func);  lua_unlock(L);  return status;}/*** Execute a protected C call.*/struct CCallS {  /* data to `f_Ccall' */  lua_CFunction func;  void *ud;};static void f_Ccall (lua_State *L, void *ud) {  struct CCallS *c = cast(struct CCallS *, ud);  Closure *cl;  cl = luaF_newCclosure(L, 0);  cl->c.f = c->func;  setclvalue(L->top, cl);  /* push function */  incr_top(L);  setpvalue(L->top, c->ud);  /* push only argument */  incr_top(L);  luaD_call(L, L->top - 2, 0);}LUA_API int lua_cpcall (lua_State *L, lua_CFunction func, void *ud) {  struct CCallS c;  int status;  lua_lock(L);  c.func = func;  c.ud = ud;  status = luaD_pcall(L, f_Ccall, &c, savestack(L, L->top), 0);  lua_unlock(L);  return status;}LUA_API int lua_load (lua_State *L, lua_Chunkreader reader, void *data,                      const char *chunkname) {  ZIO z;  int status;  int c;  lua_lock(L);  if (!chunkname) chunkname = "?";  luaZ_init(&z, reader, data, chunkname);  c = luaZ_lookahead(&z);  status = luaD_protectedparser(L, &z, (c == LUA_SIGNATURE[0]));  lua_unlock(L);  return status;}LUA_API int lua_dump (lua_State *L, lua_Chunkwriter writer, void *data) {  int status;  TObject *o;  lua_lock(L);  api_checknelems(L, 1);  o = L->top - 1;  if (isLfunction(o) && clvalue(o)->l.nupvalues == 0) {    luaU_dump(L, clvalue(o)->l.p, writer, data);    status = 1;  }  else    status = 0;  lua_unlock(L);  return status;}/*** Garbage-collection functions*//* GC values are expressed in Kbytes: #bytes/2^10 */#define GCscalel(x)		((x)>>10)#define GCscale(x)		(cast(int, GCscalel(x)))#define GCunscale(x)		(cast(lu_mem, x)<<10)LUA_API int lua_getgcthreshold (lua_State *L) {  int threshold;  lua_lock(L);  threshold = GCscale(G(L)->GCthreshold);  lua_unlock(L);  return threshold;}LUA_API int lua_getgccount (lua_State *L) {  int count;  lua_lock(L);  count = GCscale(G(L)->nblocks);  lua_unlock(L);  return count;}LUA_API void lua_setgcthreshold (lua_State *L, int newthreshold) {  lua_lock(L);  if (cast(lu_mem, newthreshold) > GCscalel(MAX_LUMEM))    G(L)->GCthreshold = MAX_LUMEM;  else    G(L)->GCthreshold = GCunscale(newthreshold);  luaC_checkGC(L);  lua_unlock(L);}/*** miscellaneous functions*/LUA_API const char *lua_version (void) {  return LUA_VERSION;}LUA_API int lua_error (lua_State *L) {  lua_lock(L);  api_checknelems(L, 1);  luaG_errormsg(L);  lua_unlock(L);}LUA_API int lua_next (lua_State *L, int idx) {  StkId t;  int more;  lua_lock(L);  t = luaA_index(L, idx);  api_check(L, ttistable(t));  more = luaH_next(L, hvalue(t), L->top - 1);  if (more) {    api_incr_top(L);  }  else  /* no more elements */    L->top -= 1;  /* remove key */  lua_unlock(L);  return more;}LUA_API void lua_concat (lua_State *L, int n) {  lua_lock(L);  luaC_checkGC(L);  api_checknelems(L, n);  if (n >= 2) {    luaV_concat(L, n, L->top - L->base - 1);    L->top -= (n-1);  }  else if (n == 0) {  /* push empty string */    setsvalue2s(L->top, luaS_newlstr(L, NULL, 0));    api_incr_top(L);  }  /* else n == 1; nothing to do */  lua_unlock(L);}LUA_API void *lua_newuserdata (lua_State *L, size_t size) {  Udata *u;  lua_lock(L);  luaC_checkGC(L);  u = luaS_newudata(L, size);  setuvalue(L->top, u);  api_incr_top(L);  lua_unlock(L);  return u + 1;}LUA_API int lua_pushupvalues (lua_State *L) {  Closure *func;  int n, i;  lua_lock(L);  api_check(L, iscfunction(L->base - 1));  func = clvalue(L->base - 1);  n = func->c.nupvalues;  luaD_checkstack(L, n + LUA_MINSTACK);  for (i=0; i<n; i++) {    setobj2s(L->top, &func->c.upvalue[i]);    L->top++;  }  lua_unlock(L);  return n;}static const char *aux_upvalue (lua_State *L, int funcindex, int n,                                TObject **val) {  Closure *f;  StkId fi = luaA_index(L, funcindex);  if (!ttisfunction(fi)) return NULL;  f = clvalue(fi);  if (f->c.isC) {    if (n > f->c.nupvalues) return NULL;    *val = &f->c.upvalue[n-1];    return "";  }  else {    Proto *p = f->l.p;    if (n > p->sizeupvalues) return NULL;    *val = f->l.upvals[n-1]->v;    return getstr(p->upvalues[n-1]);  }}LUA_API const char *lua_getupvalue (lua_State *L, int funcindex, int n) {  const char *name;  TObject *val;  lua_lock(L);  name = aux_upvalue(L, funcindex, n, &val);  if (name) {    setobj2s(L->top, val);    api_incr_top(L);  }  lua_unlock(L);  return name;}LUA_API const char *lua_setupvalue (lua_State *L, int funcindex, int n) {  const char *name;  TObject *val;  lua_lock(L);  api_checknelems(L, 1);  name = aux_upvalue(L, funcindex, n, &val);  if (name) {    L->top--;    setobj(val, L->top);  /* write barrier */  }  lua_unlock(L);  return name;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -