1 #include <cstdlib>
2 #include <cstring>
3 #include <iterator>
4 #include <string>
5 #include "utf8.h"
6 #include "char_utf8.h"
7 
8 /*
9 
10   character conversion (<-> utf-8 encoding)
11 
12   copyright (c) 2015 squell <squell@alumina.nl>
13 
14   use, modification, copying and distribution of this software is permitted
15   under the conditions described in the file 'COPYING'.
16 
17 */
18 
19 namespace charset {
20 
decode(const char * s,size_t len)21     template<> conv<>::data conv<utf8>::decode(const char* s, size_t len)
22     {
23         conv<>::data build;
24         build.reserve(len);
25         ::utf8::decode(s, s+len, std::back_inserter(build));
26         return build;
27     }
28 
encode(const void * p,size_t len)29     template<> std::string conv<utf8>::encode(const void* p, size_t len)
30     {
31         const wchar_t* s = (wchar_t*)p;
32         std::string build;
33         build.reserve(len);
34         ::utf8::encode(s, s+len, std::back_inserter(build));
35         return build;
36     }
37 
38 } // end of namespace
39 
40