00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef TRANSCODE_H
00021 #define TRANSCODE_H
00022
00023 #include <string>
00024
00025 namespace cwidget
00026 {
00027 namespace util
00028 {
00040 bool transcode(const char *s,
00041 std::wstring &out,
00042 const char *encoding=NULL);
00043
00044 inline bool transcode(const std::string &s,
00045 std::wstring &out,
00046 const char *encoding=NULL)
00047 {
00048 return transcode(s.c_str(), out, encoding);
00049 }
00050
00056 extern std::wstring (*transcode_mbtow_err)(int error,
00057 const std::wstring &partial,
00058 const std::string &input);
00059
00072 std::wstring transcode(const std::string &s,
00073 const char *encoding=NULL,
00074 std::wstring (*errf)(int error,
00075 const std::wstring &partial,
00076 const std::string &input)=NULL);
00077
00090 std::wstring transcode(const char *s,
00091 const char *encoding=NULL,
00092 std::wstring (*errf)(int error,
00093 const std::wstring &partial,
00094 const std::string &input)=NULL);
00095
00096
00097
00109 bool transcode(const wchar_t *s,
00110 std::string &out,
00111 const char *encoding=NULL);
00112
00113
00114 inline bool transcode(const std::wstring &s,
00115 std::string &out,
00116 const char *encoding=NULL)
00117 {
00118 return transcode(s.c_str(), out, encoding);
00119 }
00120
00121
00127 extern std::string (*transcode_wtomb_err)(int error,
00128 const std::string &partial,
00129 const std::wstring &input);
00130
00143 std::string transcode(const std::wstring &s,
00144 const char *encoding=NULL,
00145 std::string (*errf)(int error,
00146 const std::string &partial,
00147 const std::wstring &input)=NULL);
00148
00161 std::string transcode(const wchar_t *s,
00162 const char *encoding=NULL,
00163 std::string (*errf)(int error,
00164 const std::string &partial,
00165 const std::wstring &input)=NULL);
00166 }
00167 }
00168
00169 #endif // TRANSCODE_H