1 Star 0 Fork 0

Jaesoon/luaEngine

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
lctype.h 2.13 KB
一键复制 编辑 原始数据 按行查看 历史
jaesonzhang 提交于 2024-05-13 21:10 . 注释代码提交
/*
** $Id: lctype.h,v 1.12.1.1 2013/04/12 18:48:47 roberto Exp $
** 'ctype' functions for Lua
** See Copyright Notice in lua.h
*/
#ifndef lctype_h
#define lctype_h
#include "lua.h"
/*
** WARNING: the functions defined here do not necessarily correspond
** to the similar functions in the standard C ctype.h. They are
** optimized for the specific needs of Lua
*/
#if !defined(LUA_USE_CTYPE)
#if 'A' == 65 && '0' == 48
/* ASCII case: can use its own tables; faster and fixed */
#define LUA_USE_CTYPE 0
#else
/* must use standard C ctype */
#define LUA_USE_CTYPE 1
#endif
#endif
#if !LUA_USE_CTYPE /* { */
#include <limits.h>
#include "llimits.h"
// 配合 luai_ctype_ 表来判断当前字符是哪种类型
#define ALPHABIT 0 // 字母位
#define DIGITBIT 1 // 数字位
#define PRINTBIT 2 // 可打印位
#define SPACEBIT 3 // 空白位
#define XDIGITBIT 4 // 十六进制数字位
#define MASK(B) (1 << (B))
/*
** add 1 to char to allow index -1 (EOZ)
*/
#define testprop(c, p) (luai_ctype_[(c)+1] & (p))
/*
** 'lalpha' (Lua alphabetic) and 'lalnum' (Lua alphanumeric) both include '_'
*/
#define lislalpha(c) testprop(c, MASK(ALPHABIT)) // 字母
#define lislalnum(c) testprop(c, (MASK(ALPHABIT) | MASK(DIGITBIT))) // 字母+数字
#define lisdigit(c) testprop(c, MASK(DIGITBIT)) // 数字
#define lisspace(c) testprop(c, MASK(SPACEBIT)) // 空白
#define lisprint(c) testprop(c, MASK(PRINTBIT)) // 可打印
#define lisxdigit(c) testprop(c, MASK(XDIGITBIT)) // 十六进制数字
/*
** this 'ltolower' only works for alphabetic characters
*/
#define ltolower(c) ((c) | ('A' ^ 'a'))
/* two more entries for 0 and -1 (EOZ) */
LUAI_DDEC const lu_byte luai_ctype_[UCHAR_MAX + 2];
#else /* }{ */
/*
** use standard C ctypes
*/
#include <ctype.h>
#define lislalpha(c) (isalpha(c) || (c) == '_')
#define lislalnum(c) (isalnum(c) || (c) == '_')
#define lisdigit(c) (isdigit(c))
#define lisspace(c) (isspace(c))
#define lisprint(c) (isprint(c))
#define lisxdigit(c) (isxdigit(c))
#define ltolower(c) (tolower(c))
#endif /* } */
#endif
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/jaesoon/lua-engine.git
[email protected]:jaesoon/lua-engine.git
jaesoon
lua-engine
luaEngine
master

搜索帮助