terminology: inline the most common case for a small 2% speed up.
This commit is contained in:
parent
8585c3e9c2
commit
c1b516f231
|
@ -5,21 +5,12 @@
|
|||
#include "termptydbl.h"
|
||||
|
||||
Eina_Bool
|
||||
_termpty_is_dblwidth_get(Termpty *ty, int g)
|
||||
_termpty_is_dblwidth_slow_get(Termpty *ty, int g)
|
||||
{
|
||||
#if defined(SUPPORT_DBLWIDTH)
|
||||
// check for east asian full-width (F), half-width (H), wide (W),
|
||||
// narrow (Na) or ambiguous (A) codepoints
|
||||
// ftp://ftp.unicode.org/Public/UNIDATA/EastAsianWidth.txt
|
||||
|
||||
// optimize for latin1 non-ambiguous
|
||||
if (g <= 0xa0)
|
||||
return EINA_FALSE;
|
||||
// (F)
|
||||
if ((g == 0x3000) ||
|
||||
((g >= 0xff01) && (g <= 0xff60)) ||
|
||||
((g >= 0xffe0) && (g <= 0xffe6)))
|
||||
return EINA_TRUE;
|
||||
// (W)
|
||||
if (
|
||||
// 1XXX
|
||||
|
@ -273,6 +264,5 @@ _termpty_is_dblwidth_get(Termpty *ty, int g)
|
|||
}
|
||||
|
||||
// Na, H -> not checked
|
||||
#endif
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
|
|
@ -1,2 +1,25 @@
|
|||
Eina_Bool _termpty_is_dblwidth_get(Termpty *ty, int g);
|
||||
Eina_Bool _termpty_is_dblwidth_slow_get(Termpty *ty, int g);
|
||||
|
||||
static inline Eina_Bool
|
||||
_termpty_is_dblwidth_get(Termpty *ty, int g)
|
||||
{
|
||||
#if defined(SUPPORT_DBLWIDTH)
|
||||
// check for east asian full-width (F), half-width (H), wide (W),
|
||||
// narrow (Na) or ambiguous (A) codepoints
|
||||
// ftp://ftp.unicode.org/Public/UNIDATA/EastAsianWidth.txt
|
||||
|
||||
// optimize for latin1 non-ambiguous
|
||||
if (g <= 0xa0)
|
||||
return EINA_FALSE;
|
||||
// (F)
|
||||
if ((g == 0x3000) ||
|
||||
((g >= 0xff01) && (g <= 0xff60)) ||
|
||||
((g >= 0xffe0) && (g <= 0xffe6)))
|
||||
return EINA_TRUE;
|
||||
|
||||
return _termpty_is_dblwidth_slow_get(ty, g);
|
||||
#else
|
||||
return EINA_FALSE;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue