namespace Msp {
namespace StringCodec {
-void Iso885915::Encoder::encode_char(UnicodeChar ch, string &buf)
+void Iso885915::Encoder::encode_char(unichar ch, string &buf)
{
int tch = transform_mapping_or_direct(mapping, map_size, ch, false);
if(tch<0 || tch>0xFF)
- error(ch, buf, "Can't express character in ISO-8859-15");
+ error(ch, buf, invalid_character(ch, "ISO-8859-15"));
else
buf += tch;
}
-void Iso885915::Encoder::transliterate(UnicodeChar, string &buf)
+void Iso885915::Encoder::transliterate(unichar, string &buf)
{
buf += '?';
}
-UnicodeChar Iso885915::Decoder::decode_char(const string &str, string::const_iterator &i)
+unichar Iso885915::Decoder::decode_char(const string &str, string::const_iterator &i)
{
if(i==str.end())
- return error("No input");
+ return -1;
- unsigned char ch = *i;
- int tch = transform_mapping_or_direct(mapping, map_size, ch, true);
-
- UnicodeChar 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