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