termiolink: switch case is better than broken bsearch

(list was not correctly sorted)
This commit is contained in:
Boris Faure 2020-06-04 23:27:10 +02:00
parent 6dc89a5f6a
commit 129cda9536
Signed by untrusted user who does not match committer: borisfaure
GPG Key ID: 35C0410516166BE8
1 changed files with 42 additions and 53 deletions

View File

@ -661,60 +661,49 @@ __attribute__((const))
static Eina_Bool
_is_authorized_in_color(const int codepoint)
{
static const Eina_Unicode authorized[] = {
'\t',
' ',
'#',
'(',
')',
'+',
',',
'/',
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
':',
'A',
'B',
'C',
'D',
'E',
'F',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'l',
'n',
'o',
'r',
's',
't',
'u',
};
size_t imax = (sizeof(authorized) / sizeof(authorized[0])) - 1,
imin = 0;
size_t imaxmax = imax;
while (imax >= imin)
switch (codepoint)
{
size_t imid = (imin + imax) / 2;
if (authorized[imid] == codepoint) return EINA_TRUE;
else if (authorized[imid] < codepoint) imin = imid + 1;
else imax = imid - 1;
if (imax > imaxmax) break;
case '\t': return EINA_TRUE;
case ' ': return EINA_TRUE;
case '#': return EINA_TRUE;
case '(': return EINA_TRUE;
case ')': return EINA_TRUE;
case '+': return EINA_TRUE;
case ',': return EINA_TRUE;
case '.': return EINA_TRUE;
case '/': return EINA_TRUE;
case '0': return EINA_TRUE;
case '1': return EINA_TRUE;
case '2': return EINA_TRUE;
case '3': return EINA_TRUE;
case '4': return EINA_TRUE;
case '5': return EINA_TRUE;
case '6': return EINA_TRUE;
case '7': return EINA_TRUE;
case '8': return EINA_TRUE;
case '9': return EINA_TRUE;
case ':': return EINA_TRUE;
case 'A': return EINA_TRUE;
case 'B': return EINA_TRUE;
case 'C': return EINA_TRUE;
case 'D': return EINA_TRUE;
case 'E': return EINA_TRUE;
case 'F': return EINA_TRUE;
case 'a': return EINA_TRUE;
case 'b': return EINA_TRUE;
case 'c': return EINA_TRUE;
case 'd': return EINA_TRUE;
case 'e': return EINA_TRUE;
case 'f': return EINA_TRUE;
case 'g': return EINA_TRUE;
case 'h': return EINA_TRUE;
case 'l': return EINA_TRUE;
case 'n': return EINA_TRUE;
case 'o': return EINA_TRUE;
case 'r': return EINA_TRUE;
case 's': return EINA_TRUE;
case 't': return EINA_TRUE;
case 'u': return EINA_TRUE;
}
return EINA_FALSE;
}