#ifdef HAVE_ICONV_H
#include <iconv.h>
#endif
-#ifdef HAVE_LANGINFO_H
- #include <langinfo.h>
-#endif
#ifdef __WXMSW__
#include <windows.h>
#define BSWAP_UTF32(str, len) BSWAP_UCS4(str, len)
#define BSWAP_UTF16(str, len) BSWAP_UCS2(str, len)
+// under Unix SIZEOF_WCHAR_T is defined by configure, but under other platforms
+// it might be not defined - assume the most common value
+#ifndef SIZEOF_WCHAR_T
+ #define SIZEOF_WCHAR_T 2
+#endif // !defined(SIZEOF_WCHAR_T)
+
#if SIZEOF_WCHAR_T == 4
-#define WC_NAME "UCS4"
-#define WC_BSWAP BSWAP_UCS4
+ #define WC_NAME "UCS4"
+ #define WC_BSWAP BSWAP_UCS4
#elif SIZEOF_WCHAR_T == 2
-#define WC_NAME "UTF16"
-#define WC_BSWAP BSWAP_UTF16
-#define WC_UTF16
+ #define WC_NAME "UTF16"
+ #define WC_BSWAP BSWAP_UTF16
+ #define WC_UTF16
+#else // sizeof(wchar_t) != 2 nor 4
+ // I don't know what to do about this
+ #error "Weird sizeof(wchar_t): please report your platform details to wx-users mailing list"
#endif
// ----------------------------------------------------------------------------
#ifdef WC_UTF16
-static size_t encode_utf16(wxUint32 input,wxUint16*output)
+static size_t encode_utf16(wxUint32 input, wchar_t *output)
{
if (input<=0xffff)
{
}
}
-static size_t decode_utf16(wxUint16*input,wxUint32&output)
+static size_t decode_utf16(const wchar_t* input, wxUint32& output)
{
if ((*input<0xd800) || (*input>0xdfff))
{
{
wxUint32 cc;
#ifdef WC_UTF16
- size_t pa = decode_utf16(psz,cc);
+ size_t pa = decode_utf16(psz, cc);
psz += (pa == (size_t)-1) ? 1 : pa;
#else
cc=(*psz++) & 0x7fffffff;