Optimize fctypes.h macros is_ascii(), is_ascii9(), is_ascii3(), is_wspace_a() by using simple conditionals instead of table lookups

This commit is contained in:
Ivan Skytte Jørgensen
2015-11-05 11:42:28 +01:00
committed by Ai Lin Chia
parent 9d240694f0
commit 4f71098963
2 changed files with 4 additions and 77 deletions

@ -290,42 +290,6 @@ bool print128 ( key128_t *kp ) {
0,0,0,0,0,0,0,0, // 240
0,0,0,0,0,0,0,0}; // 248
// ' ' '\n' '\t' '\r'
const char g_map_is_wspace[] = {
0,0,0,0,0,0,0,0, // 0 -7
0,1,1,0,0,1,0,0, // \t=9 \n = 10 \r = 13
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0, // space=32
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0, // 64
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0, // 88
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0, // 15*8
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0, // 160 -- turn off 160, it might be utf8 byte
0,0,0,0,0,0,0,0, // 168
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0, // 192
0,0,0,0,0,0,0,0, // 200
0,0,0,0,0,0,0,0, // 208
0,0,0,0,0,0,0,0, // 216
0,0,0,0,0,0,0,0, // 224
0,0,0,0,0,0,0,0, // 232
0,0,0,0,0,0,0,0, // 240
0,0,0,0,0,0,0,0}; // 248
// '\n'
const char g_map_is_vspace[] = {
0,0,0,0,0,0,0,0, // 0 -7
@ -502,43 +466,6 @@ const char g_map_is_vowel[] = {
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0};
// just from 0-127, used by the inlined *_utf8() functions in fctypes.h
const char g_map_is_ascii3[] = { // 32 to 126
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,
1,1,1,1,1,1,1,1, // 32
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,
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,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0, // 128
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0};
const char g_map_is_iso[] = { // 32 to 126
0,0,0,0,0,0,0,0, // 0
0,0,0,0,0,0,0,0, // 8

@ -232,12 +232,12 @@ bool saveTimeAdjustment ( ) ;
#define canBeInTagName(c) g_map_canBeInTagName[(unsigned char)c]
#define is_control_a(c) g_map_is_control[(unsigned char)c]
#define is_binary_a(c) g_map_is_binary[(unsigned char)c]
#define is_wspace_a(c) g_map_is_wspace[(unsigned char)c]
#define is_wspace_a(c) (((c)==32) || ((c)==9) || ((c)==10) || ((c)==13))
#define is_vspace_a(c) g_map_is_vspace[(unsigned char)c]
#define is_hspace_a(c) g_map_is_hspace[(unsigned char)c]
#define is_ascii(c) g_map_is_ascii[(unsigned char)c]
#define is_ascii9(c) g_map_is_ascii[(unsigned char)c]
#define is_ascii3(c) ((unsigned char)c<128 || g_map_is_ascii3[(unsigned char)c])
#define is_ascii(c) (((c)>=32) && ((c)<=126))
#define is_ascii9(c) (((c)>=32) && ((c)<=126))
#define is_ascii3(c) ((unsigned char)c<128)
#define is_punct_a(c) g_map_is_punct[(unsigned char)c]
#define is_alnum_a(c) g_map_is_alnum[(unsigned char)c]
#define is_alpha_a(c) g_map_is_alpha[(unsigned char)c]