Commit 92833475 authored by bar@deer.(none)'s avatar bar@deer.(none)

ctype-uca.c:

  Code optimization to make it look better and work faster.
parent efc2936e
......@@ -7473,55 +7473,62 @@ static int ch2x(int ch)
static my_coll_lexem_num my_coll_lexem_next(MY_COLL_LEXEM *lexem)
{
for ( ;lexem->beg < lexem->end ; lexem->beg++)
const char *beg;
my_coll_lexem_num rc;
for (beg= lexem->beg ; beg < lexem->end ; beg++)
{
lexem->prev= lexem->beg;
if (lexem->beg[0] == ' ' || lexem->beg[0] == '\t' ||
lexem->beg[0] == '\r' || lexem->beg[0] == '\n')
if (*beg == ' ' || *beg == '\t' || *beg == '\r' || *beg == '\n')
continue;
if (lexem->beg[0] == '&')
if (*beg == '&')
{
lexem->beg++;
return MY_COLL_LEXEM_SHIFT;
beg++;
rc= MY_COLL_LEXEM_SHIFT;
goto ex;
}
if (lexem->beg[0] == '<')
if (beg[0] == '<')
{
for (lexem->beg++, lexem->diff=1;
(lexem->beg < lexem->end) &&
(lexem->beg[0] == '<') && (lexem->diff<3);
lexem->beg++, lexem->diff++);
return MY_COLL_LEXEM_DIFF;
for (beg++, lexem->diff= 1;
(beg < lexem->end) &&
(*beg == '<') && (lexem->diff<3);
beg++, lexem->diff++);
rc= MY_COLL_LEXEM_DIFF;
goto ex;
}
if ((lexem->beg[0] >= 'a' && lexem->beg[0] <= 'z') ||
(lexem->beg[0] >= 'A' && lexem->beg[0] <= 'Z'))
if ((*beg >= 'a' && *beg <= 'z') || (*beg >= 'A' && *beg <= 'Z'))
{
lexem->code= lexem->beg[0];
lexem->beg++;
return MY_COLL_LEXEM_CHAR;
lexem->code= *beg++;
rc= MY_COLL_LEXEM_CHAR;
goto ex;
}
if ((lexem->beg[0] == '\\') &&
(lexem->beg+2 < lexem->end) &&
(lexem->beg[1] == 'u'))
if ((*beg == '\\') && (beg+2 < lexem->end) && (beg[1] == 'u'))
{
int ch;
beg+= 2;
lexem->code= 0;
for (lexem->beg+=2;
(lexem->beg < lexem->end) && ((ch= ch2x(lexem->beg[0])) >= 0) ;
lexem->beg++)
{
while ((beg < lexem->end) && ((ch= ch2x(beg[0])) >= 0))
{
lexem->code= (lexem->code << 4) + ch;
beg++;
}
return MY_COLL_LEXEM_CHAR;
rc= MY_COLL_LEXEM_CHAR;
goto ex;
}
return MY_COLL_LEXEM_ERROR;
rc= MY_COLL_LEXEM_ERROR;
goto ex;
}
return MY_COLL_LEXEM_EOF;
rc= MY_COLL_LEXEM_EOF;
ex:
lexem->prev= lexem->beg;
lexem->beg= beg;
return rc;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment