replace case ... branches by if-else cascade. :-/

JSON-23
Roker 6 years ago
parent e606bcb34e
commit 30caa39910

@ -71,13 +71,18 @@ namespace
while(c<end)
{
const uint8_t u = uint8_t(*c);
switch(u)
if (u<=0x7f)
{
return u;
} else if (u<=0xBF)
{
throw cont_without_start(u);
} else if (u<=0xC1)
{
throw overlong_sequence(u);
} else if (u<=0xDF) // 2 octet sequence
{
case 0x00 ... 0x7f : return u;
case 0x80 ... 0xBF : throw cont_without_start(u);
case 0xC0 ... 0xC1 : throw overlong_sequence(u);
case 0xC2 ... 0xDF : // 2 octet sequence
{
++c;
if(c==end) throw unexpected_end(u);
const uint8_t uu = uint8_t(*c);
@ -86,9 +91,8 @@ namespace
throw unexpected_end(uu);
}
return ((u & 0x1F) << 6) + (uu & 0x3F);
}
case 0xE0 ... 0xEF : // 3 octet sequence
{
} else if (u<=0xEF) // 3 octet sequence
{
++c;
if(c==end) throw unexpected_end(u);
const uint8_t uu = uint8_t(*c);
@ -107,9 +111,8 @@ namespace
const uint32_t ret = ((u & 0xF) << 12) + ((uu & 0x3F)<<6) + (uuu & 0x3F);
if(ret<0x800) throw overlong_sequence(u);
return ret;
}
case 0xF0 ... 0xF4 : // 4 octet sequence
{
} else if (u<=0xF4) // 4 octet sequence
{
++c;
if(c==end) throw unexpected_end(u);
const uint8_t uu = uint8_t(*c);
@ -136,8 +139,8 @@ namespace
if(ret<0x10000) throw overlong_sequence(u);
if(ret>0x10FFFF) throw no_unicode(u);
return ret;
}
default:
} else
{
throw no_unicode(u);
}

Loading…
Cancel
Save