Improve the logic in some decoders
unichar Ascii::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
unichar Ascii::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
- return error("No input");
else if(*i&0x80)
{
unichar result = error("Undefined ASCII character");
else if(*i&0x80)
{
unichar result = error("Undefined ASCII character");
unichar Iso2022Jp::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
unichar Iso2022Jp::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
- return error("No input");
unichar Iso646Fi::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
unichar Iso646Fi::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
- return error("No input");
- int tch = (ch<=0x7F ? transform_mapping_or_direct(mapping, map_size, ch, true) : -1);
-
result = error("Undefined ISO-646-FI character");
else
result = error("Undefined ISO-646-FI character");
else
+ result = transform_mapping_or_direct(mapping, map_size, ch, true);
unichar Iso88591::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
unichar Iso88591::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
- return error("No input");
return static_cast<unsigned char>(*i++);
}
return static_cast<unsigned char>(*i++);
}
unichar Iso885915::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
unichar Iso885915::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
- return error("No input");
- unsigned char ch = *i;
- int tch = transform_mapping_or_direct(mapping, map_size, ch, true);
-
- unichar result;
- if(tch==-1)
- result = error("Undefined ISO-8859-15 character");
- else
- result = tch;
-
- ++i;
- return result;
+ unsigned char ch = *i++;
+ return transform_mapping_or_direct(mapping, map_size, ch, true);
}
} // namespace StringCodec
}
} // namespace StringCodec
unichar JisX0201::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
unichar JisX0201::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
- return error("No input");
unsigned char ch = *i;
unichar result;
unsigned char ch = *i;
unichar result;
unichar JisX0208::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
unichar JisX0208::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
- return error("No input");
string::const_iterator j = i;
Kuten jis;
string::const_iterator j = i;
Kuten jis;
unichar Utf8::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
unichar Utf8::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
- return error("No input");
unichar Windows1252::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
unichar Windows1252::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
- return error("No input");
int ch = static_cast<unsigned char>(*i);
unichar result;
int ch = static_cast<unsigned char>(*i);
unichar result;