瀏覽代碼

"homemade" version of ctype.h

Roberto Ierusalimschy 16 年之前
父節點
當前提交
ada82930fd
共有 2 個文件被更改,包括 78 次插入0 次删除
  1. 44 0
      lctype.c
  2. 34 0
      lctype.h

+ 44 - 0
lctype.c

@@ -0,0 +1,44 @@
+/*
+** $Id: $
+** 'ctype' functions for Lua
+** See Copyright Notice in lua.h
+*/
+
+#include <limits.h>
+
+#include "lctype.h"
+
+const char lctypecode[UCHAR_MAX + 1] = {
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x08,  0x08,  0x08,  0x08,  0x08,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x0c,  0x04,  0x04,  0x04,  0x04,  0x04,  0x04,  0x04,
+  0x04,  0x04,  0x04,  0x04,  0x04,  0x04,  0x04,  0x04,
+  0x06,  0x06,  0x06,  0x06,  0x06,  0x06,  0x06,  0x06,
+  0x06,  0x06,  0x04,  0x04,  0x04,  0x04,  0x04,  0x04,
+  0x04,  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,
+  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,
+  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,
+  0x05,  0x05,  0x05,  0x04,  0x04,  0x04,  0x04,  0x04,
+  0x04,  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,
+  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,
+  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,  0x05,
+  0x05,  0x05,  0x05,  0x04,  0x04,  0x04,  0x04,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00
+};

+ 34 - 0
lctype.h

@@ -0,0 +1,34 @@
+/*
+** $Id: $
+** 'ctype' functions for Lua
+** See Copyright Notice in lua.h
+*/
+
+#ifndef lctype_h
+#define lctype_h
+
+
+#include <limits.h>
+
+#include "lua.h"
+
+
+#define ALPHABIT	0
+#define DIGITBIT	1
+#define PRINTBIT	2
+#define SPACEBIT	3
+
+
+#define MASK(B)		(1 << (B))
+
+
+#define lisalpha(x)	(lctypecode[x] & MASK(ALPHABIT))
+#define lisalnum(x)	(lctypecode[x] & (MASK(ALPHABIT) | MASK(DIGITBIT)))
+#define lisdigit(x)	(lctypecode[x] & MASK(DIGITBIT))
+#define lisspace(x)	(lctypecode[x] & MASK(SPACEBIT))
+#define lisprint(x)	(lctypecode[x] & MASK(PRINTBIT))
+
+LUAI_DATA const char lctypecode[UCHAR_MAX + 1];
+
+#endif
+