public:
// the actual conversion takes place here
//
- // note that n is the size of the output buffer, not the length of input
+ // note that outputSize is the size of the output buffer, not the length of input
// (the latter is always supposed to be NUL-terminated)
virtual size_t MB2WC(wchar_t *outputBuf, const char *psz, size_t outputSize) const = 0;
virtual size_t WC2MB(char *outputBuf, const wchar_t *psz, size_t outputSize) const = 0;
const wxWCharBuffer cMB2WC(const char *psz) const;
const wxCharBuffer cWC2MB(const wchar_t *psz) const;
+ // MB <-> WC for strings with embedded null characters
+ //
+ // pszLen length of the input string
+ // pOutSize gets the final size of the converted string
+ const wxWCharBuffer cMB2WC(const char *psz, size_t pszLen, size_t* pOutSize) const;
+ const wxCharBuffer cWC2MB(const wchar_t *psz, size_t pszLen, size_t* pOutSize) const;
+
// convenience functions for converting MB or WC to/from wxWin default
#if wxUSE_UNICODE
const wxWCharBuffer cMB2WX(const char *psz) const { return cMB2WC(psz); }
#endif // Unicode/ANSI
// virtual dtor for any base class
- virtual ~wxMBConv(){};
+ virtual ~wxMBConv();
};
// ----------------------------------------------------------------------------
bool m_deferred;
};
+#ifdef __WXOSX__
+#define wxConvFile wxConvUTF8
+#else
#define wxConvFile wxConvLocal
+#endif
+
WXDLLIMPEXP_DATA_BASE(extern wxCSConv&) wxConvLocal;
WXDLLIMPEXP_DATA_BASE(extern wxCSConv&) wxConvISO8859_1;
WXDLLIMPEXP_DATA_BASE(extern wxMBConv *) wxConvCurrent;
#if wxMBFILES && wxUSE_UNICODE
#define wxFNCONV(name) wxConvFile.cWX2MB(name)
#define wxFNSTRINGCAST wxMBSTRINGCAST
+#else
+#if defined( __WXOSX__ ) && wxMBFILES
+ #define wxFNCONV(name) wxConvFile.cWC2MB( wxConvLocal.cWX2WC(name) )
#else
#define wxFNCONV(name) name
+#endif
#define wxFNSTRINGCAST WXSTRINGCAST
#endif