From 31d3a6408d045eadaff094d4c11bf017817743d7 Mon Sep 17 00:00:00 2001 From: sje Date: Wed, 1 Nov 2006 14:28:18 +0000 Subject: git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@4 4f64403b-2f21-0410-a795-97e2b3489a10 --- attache/str_utils.cpp | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 attache/str_utils.cpp (limited to 'attache/str_utils.cpp') diff --git a/attache/str_utils.cpp b/attache/str_utils.cpp new file mode 100644 index 0000000..cadb7b8 --- /dev/null +++ b/attache/str_utils.cpp @@ -0,0 +1,99 @@ +#include "common.h" +#include "str_utils.h" + +int code_page = CP_ACP; + +void set_codepage() { + if(ServiceExists(MS_LANGPACK_GETCODEPAGE)) + code_page = CallService(MS_LANGPACK_GETCODEPAGE, 0, 0); +} + +char *w2u(const wchar_t *ws) { + if(ws) { + int size = WideCharToMultiByte(CP_UTF8, 0, ws, -1, 0, 0, 0, 0); + char *buff = (char *)malloc(size); + WideCharToMultiByte(CP_UTF8, 0, ws, -1, buff, 2048, 0, 0); + return buff; + } else + return 0; +} + +wchar_t *u2w(const char *utfs) { + if(utfs) { + int size = MultiByteToWideChar(CP_UTF8, 0, utfs, -1, 0, 0); + wchar_t *buff = (wchar_t *)malloc(size * sizeof(wchar_t)); + MultiByteToWideChar(CP_UTF8, 0, utfs, -1, buff, size); + return buff; + } else + return 0; +} + +wchar_t *a2w(const char *as) { + int code_page = CP_ACP; + if(ServiceExists(MS_LANGPACK_GETCODEPAGE)) code_page = CallService(MS_LANGPACK_GETCODEPAGE, 0, 0); + int size = MultiByteToWideChar(code_page, 0, as, -1, 0, 0); + wchar_t *buff = (wchar_t *)malloc(size * sizeof(wchar_t)); + MultiByteToWideChar(code_page, 0, as, -1, buff, size); + return buff; +} + +char *w2a(const wchar_t *ws) { + int code_page = CP_ACP; + if(ServiceExists(MS_LANGPACK_GETCODEPAGE)) code_page = CallService(MS_LANGPACK_GETCODEPAGE, 0, 0); + int size = WideCharToMultiByte(code_page, 0, ws, -1, 0, 0, 0, 0); + char *buff = (char *)malloc(size); + WideCharToMultiByte(code_page, 0, ws, -1, buff, 2048, 0, 0); + return buff; +} + +char *t2a(const TCHAR *ts) { +#ifdef _UNICODE + return w2a(ts); +#else + return _strdup(ts); +#endif +} + +TCHAR *a2t(const char *as) { +#ifdef _UNICODE + return a2w(as); +#else + return _strdup(as); +#endif +} + +TCHAR *u2t(const char *utfs) { +#ifdef _UNICODE + return u2w(utfs); +#else + wchar_t *ws = u2w(utfs); + char *ret = w2a(ws); + free(ws); + return ret; +#endif +} + +char *t2u(const TCHAR *ts) { +#ifdef _UNICODE + return w2u(ts); +#else + wchar_t *ws = a2w(ts); + char *ret = w2u(ws); + free(ws); + return ret; +#endif +} + +char *u2a(const char *utfs) { + wchar_t *ws = u2w(utfs); + char *ret = w2a(ws); + free(ws); + return ret; +} + +char *a2u(const char *as) { + wchar_t *ws = a2w(as); + char *ret = w2u(ws); + free(ws); + return ret; +} -- cgit v1.2.3