#include <string.h>
#include <stdlib.h>
+#include "wx/module.h"
#include "wx/strconv.h"
// ----------------------------------------------------------------------------
WXDLLEXPORT_DATA(wxMBConv *) wxConvCurrent = &wxConvLibc;
+class wxStrConvModule: public wxModule
+{
+public:
+ wxStrConvModule() : wxModule() { }
+ virtual bool OnInit() { return TRUE; }
+ virtual void OnExit()
+ {
+#if wxUSE_WCHAR_T
+ wxConvLocal.Clear();
+#endif
+ }
+
+ DECLARE_DYNAMIC_CLASS(wxStrConvModule)
+};
+
+IMPLEMENT_DYNAMIC_CLASS(wxStrConvModule, wxModule)
+
+
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
{
if (input<=0xffff)
{
- if (output) *output++ = input;
+ if (output) *output++ = (wchar_t) input;
return 1;
}
else if (input>=0x110000)
{
if (output)
{
- *output++ = (input >> 10)+0xd7c0;
- *output++ = (input&0x3ff)+0xdc00;
+ *output++ = (wchar_t) ((input >> 10)+0xd7c0);
+ *output++ = (wchar_t) ((input&0x3ff)+0xdc00);
}
return 2;
}
{
// plain ASCII char
if (buf)
- *buf++ = cc;
+ *buf++ = (char) cc;
len++;
}
len += cnt + 1;
if (buf)
{
- *buf++ = (-128 >> cnt) | ((cc >> (cnt * 6)) & (0x3f >> cnt));
+ *buf++ = (char) ((-128 >> cnt) | ((cc >> (cnt * 6)) & (0x3f >> cnt)));
while (cnt--)
- *buf++ = 0x80 | ((cc >> (cnt * 6)) & 0x3f);
+ *buf++ = (char) (0x80 | ((cc >> (cnt * 6)) & 0x3f));
}
}
}
enc(wxFONTENCODING_SYSTEM)
{
if (name)
- enc = wxTheFontMapper->CharsetToEncoding(name, FALSE);
+ enc = wxFontMapper::Get()->CharsetToEncoding(name, FALSE);
m_ok = m2w.Init(enc, wxFONTENCODING_UNICODE) &&
w2m.Init(wxFONTENCODING_UNICODE, enc);
}
- size_t MB2WC(wchar_t *buf, const char *psz, size_t n)
+ size_t MB2WC(wchar_t *buf, const char *psz, size_t WXUNUSED(n))
{
size_t inbuf = strlen(psz);
if (buf)
return inbuf;
}
- size_t WC2MB(char *buf, const wchar_t *psz, size_t n)
+ size_t WC2MB(char *buf, const wchar_t *psz, size_t WXUNUSED(n))
{
#if ( defined(__BORLANDC__) && (__BORLANDC__ > 0x530) ) \
|| ( defined(__MWERKS__) && defined(__WXMSW__) )
{
// check for the special case of ASCII charset
#if wxUSE_FONTMAP
- if ( wxTheFontMapper->CharsetToEncoding(name) == wxFONTENCODING_DEFAULT )
+ if ( wxFontMapper::Get()->CharsetToEncoding(name) == wxFONTENCODING_DEFAULT )
#else // wxUSE_FONTMAP
if ( !name )
#endif // wxUSE_FONTMAP/!wxUSE_FONTMAP
wxCSConv::~wxCSConv()
{
- free(m_name);
- delete m_cset;
+ Clear();
+}
+
+wxCSConv::wxCSConv(const wxCSConv& conv)
+ : wxMBConv()
+{
+ Clear();
+ SetName(conv.m_name);
+}
+
+wxCSConv& wxCSConv::operator=(const wxCSConv& conv)
+{
+ Clear();
+ SetName(conv.m_name);
+ return *this;
+}
+
+void wxCSConv::Clear()
+{
+ if (m_name)
+ free(m_name);
+ if (m_cset)
+ delete m_cset;
+ m_name = NULL;
+ m_cset = NULL;
}
void wxCSConv::SetName(const wxChar *charset)