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

📄 lcoco.h

📁 lua的即时编译器。支持lua 5.1.2版本
💻 H
字号:
/*** Lua/Coco glue.** Copyright (C) 2004-2007 Mike Pall. See copyright notice in lcoco.c*/#ifndef lcoco_h#define lcoco_h#define LUACOCO_VERSION		"Coco 1.1.3"#define LUACOCO_VERSION_NUM	10103/* Exported C API to add a C stack to a coroutine. */LUA_API lua_State *lua_newcthread(lua_State *L, int cstacksize);/* Internal support routines. */LUAI_FUNC void luaCOCO_free(lua_State *L);LUAI_FUNC int luaCOCO_resume(lua_State *L, int nargs);LUAI_FUNC int luaCOCO_yield(lua_State *L);LUAI_FUNC int luaCOCO_cstacksize(int cstacksize);/* Forward declaration. */typedef struct coco_State coco_State;/* These are redefined below. */#undef LUAI_EXTRASPACE#undef luai_userstateopen/* luai_userstateclose unused */#undef luai_userstatethread#undef luai_userstatefree#undef luai_userstateresume#undef luai_userstateyield/* Use Windows Fibers (Win98+). */#if defined(_WIN32)/* Fibers allocate their own stack. The whole Coco state is in front of L. */struct coco_State {  void *fib;			/* Own fiber (if any). */  void *back;			/* Fiber to switch back to. */  int nargs;			/* Number of arguments to pass. */  int dummy_align;};#define L2COCO(L)		(&((coco_State *)(L))[-1])#define LHASCOCO(L)		(L2COCO(L)->fib)#define LUAI_EXTRASPACE		sizeof(coco_State)#define luai_userstateopen(L)	L2COCO(L)->fib = NULL#define luai_userstatethread(L,L1)	L2COCO(L1)->fib = NULL#define COCO_USE_FIBERS#else /* !defined(_WIN32) *//* The Coco state depends on the context switch method used. See lcoco.c. *//* It's stored at the end of the stack. Only need a pointer in front of L. */#define L2COCO(L)		(((coco_State **)(L))[-1])#define LHASCOCO(L)		(L2COCO(L))/* This wastes some space on 32 bit systems, but gets better alignment. */#define LUAI_EXTRASPACE		sizeof(LUAI_USER_ALIGNMENT_T)#define luai_userstateopen(L)	L2COCO(L) = NULL#define luai_userstatethread(L,L1)	L2COCO(L1) = NULL#endif /* !defined(_WIN32) */#define luai_userstatefree(L)	if (LHASCOCO(L)) luaCOCO_free(L)#define luai_userstateresume(L, nargs) \  if (LHASCOCO(L)) return luaCOCO_resume(L, nargs)#define luai_userstateyield(L, nresults) \  do { if (LHASCOCO(L)) { \    L->base = L->top - (nresults);  /* Protect stack slots below. */ \    return luaCOCO_yield(L); } } while (0)#endif

⌨️ 快捷键说明

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