Use the new utilities to format some strings
[libs/core.git] / source / stringcodec / except.cpp
1 #include <msp/strings/format.h>
2 #include <msp/strings/utils.h>
3 #include "except.h"
4
5 using namespace std;
6
7 namespace Msp {
8 namespace StringCodec {
9
10 invalid_character::invalid_character(unichar ch, const string &detail):
11         codec_error(format("U+%04X (%s)", ch, detail))
12 { }
13
14
15 invalid_sequence::invalid_sequence(const string::const_iterator &begin, const string::const_iterator &end, const string &detail):
16         codec_error(format("%s (%s)", format_sequence(begin, end), detail))
17 { }
18
19 string invalid_sequence::format_sequence(const string::const_iterator &begin, const string::const_iterator &end)
20 {
21         string result;
22         for(string::const_iterator i=begin; i!=end; ++i)
23                 append(result, " ", lexical_cast<string>(static_cast<unsigned char>(*i), Fmt().fill('0').width(2).hex().uppercase()));
24         return result;
25 }
26
27 } // namespace StringCodec
28 } // namespace Msp