utf8.h

来自「MSYS在windows下模拟了一个类unix的终端」· C头文件 代码 · 共 73 行

H
73
字号
/*    utf8.h * *    Copyright (c) 1998-2001, Larry Wall * *    You may distribute under the terms of either the GNU General Public *    License or the Artistic License, as specified in the README file. * */START_EXTERN_C#ifdef DOINITEXTCONST unsigned char PL_utf8skip[] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* bogus */1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* bogus */2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, /* scripts */3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,	 /* cjk etc. */7,13, /* Perl extended (not UTF-8).  Up to 72bit allowed (64-bit + reserved). */};#elseEXTCONST unsigned char PL_utf8skip[];#endifEND_EXTERN_C#define UTF8_MAXLEN 13 /* how wide can a single UTF8 encoded character become *//* #define IN_UTF8 (PL_curcop->op_private & HINT_UTF8) */#define IN_BYTE (PL_curcop->op_private & HINT_BYTE)#define DO_UTF8(sv) (SvUTF8(sv) && !IN_BYTE)#define UTF8_ALLOW_EMPTY		0x0001#define UTF8_ALLOW_CONTINUATION		0x0002#define UTF8_ALLOW_NON_CONTINUATION	0x0004#define UTF8_ALLOW_FE_FF		0x0008#define UTF8_ALLOW_SHORT		0x0010#define UTF8_ALLOW_SURROGATE		0x0020#define UTF8_ALLOW_BOM			0x0040#define UTF8_ALLOW_FFFF			0x0080#define UTF8_ALLOW_LONG			0x0100#define UTF8_ALLOW_ANYUV		(UTF8_ALLOW_EMPTY|UTF8_ALLOW_FE_FF|\					 UTF8_ALLOW_SURROGATE|UTF8_ALLOW_BOM|\					 UTF8_ALLOW_FFFF|UTF8_ALLOW_LONG)#define UTF8_ALLOW_ANY			0x00ff#define UTF8_CHECK_ONLY			0x0100#define UNICODE_SURROGATE_FIRST		0xd800#define UNICODE_SURROGATE_LAST		0xdfff#define UNICODE_REPLACEMENT		0xfffd#define UNICODE_BYTER_ORDER_MARK	0xfffe#define UNICODE_ILLEGAL			0xffff#define UNICODE_IS_SURROGATE(c)		((c) >= UNICODE_SURROGATE_FIRST && \					 (c) <= UNICODE_SURROGATE_LAST)#define UNICODE_IS_REPLACEMENT(c)	((c) == UNICODE_REPLACMENT)#define UNICODE_IS_BYTE_ORDER_MARK(c)	((c) == UNICODE_BYTER_ORDER_MARK)#define UNICODE_IS_ILLEGAL(c)		((c) == UNICODE_ILLEGAL)#define UTF8SKIP(s) PL_utf8skip[*(U8*)s]#define UTF8_QUAD_MAX	UINT64_C(0x1000000000)/*  The following table is from Unicode 3.1. Code Points		1st Byte  2nd Byte  3rd Byte  4th Byte   U+0000..U+007F	00..7F牋

⌨️ 快捷键说明

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