Added wx_str() and WXCSTRINGCAST, which should be explicitly defined
to work on wxChar (doesn't look like people want c_str() to be
unconditionally defined as wxChar).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2279
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// 'naughty' cast
#define WXSTRINGCAST (wxChar *)(const wxChar *)
// 'naughty' cast
#define WXSTRINGCAST (wxChar *)(const wxChar *)
+#define WXCSTRINGCAST (wxChar *)(const wxChar *)
#define MBSTRINGCAST (char *)(const char *)
#define WCSTRINGCAST (wchar_t *)(const wchar_t *)
#define MBSTRINGCAST (char *)(const char *)
#define WCSTRINGCAST (wchar_t *)(const wchar_t *)
// ---------------------------------------------------------------------------
// types of multibyte<->Unicode conversions
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
// types of multibyte<->Unicode conversions
// ---------------------------------------------------------------------------
class WXDLLEXPORT wxMBConv
{
public:
class WXDLLEXPORT wxMBConv
{
public:
#define wxFNCONV(name) name
#define FNSTRINGCAST WXSTRINGCAST
#endif
#define wxFNCONV(name) name
#define FNSTRINGCAST WXSTRINGCAST
#endif
+#else//!wxUSE_WCHAR_T
+class WXDLLEXPORT wxMBConv {};
+WXDLLEXPORT_DATA(extern wxMBConv) wxConv_libc;
+#endif//wxUSE_WCHAR_T
// ---------------------------------------------------------------------------
// This is (yet another one) String class for C++ programmers. It doesn't use
// ---------------------------------------------------------------------------
// This is (yet another one) String class for C++ programmers. It doesn't use
// from multibyte string
wxString(const char *psz, wxMBConv& WXUNUSED(conv), size_t nLength = wxSTRING_MAXLEN)
{ InitWith(psz, 0, nLength); }
// from multibyte string
wxString(const char *psz, wxMBConv& WXUNUSED(conv), size_t nLength = wxSTRING_MAXLEN)
{ InitWith(psz, 0, nLength); }
// from wide (Unicode) string
wxString(const wchar_t *pwz);
// from wide (Unicode) string
wxString(const wchar_t *pwz);
// from wxCharBuffer
wxString(const wxCharBuffer& psz)
{ InitWith(psz, 0, wxSTRING_MAXLEN); }
// from wxCharBuffer
wxString(const wxCharBuffer& psz)
{ InitWith(psz, 0, wxSTRING_MAXLEN); }
operator const wxChar*() const { return m_pchData; }
// explicit conversion to C string (use this with printf()!)
const wxChar* c_str() const { return m_pchData; }
operator const wxChar*() const { return m_pchData; }
// explicit conversion to C string (use this with printf()!)
const wxChar* c_str() const { return m_pchData; }
+ // (and this with [wx]Printf()!)
+ const wxChar* wx_str() const { return m_pchData; }
//
const wxChar* GetData() const { return m_pchData; }
#if wxUSE_UNICODE
//
const wxChar* GetData() const { return m_pchData; }
#if wxUSE_UNICODE
#endif
#else
const wxChar* mb_str(wxMBConv& WXUNUSED(conv) = wxConv_libc ) const { return m_pchData; }
#endif
#else
const wxChar* mb_str(wxMBConv& WXUNUSED(conv) = wxConv_libc ) const { return m_pchData; }
const wxWCharBuffer wc_str(wxMBConv& conv) const { return conv.cMB2WC(m_pchData); }
const wxWCharBuffer wc_str(wxMBConv& conv) const { return conv.cMB2WC(m_pchData); }
const wxChar* fn_str() const { return m_pchData; }
#endif
// for convenience
const wxChar* fn_str() const { return m_pchData; }
#endif
// for convenience
#else
// from another kind of C string
wxString& operator=(const unsigned char* psz);
#else
// from another kind of C string
wxString& operator=(const unsigned char* psz);
// from a wide string
wxString& operator=(const wchar_t *pwz);
// from a wide string
wxString& operator=(const wchar_t *pwz);
// from wxCharBuffer
wxString& operator=(const wxCharBuffer& psz) { return operator=((const char *)psz); }
#endif
// from wxCharBuffer
wxString& operator=(const wxCharBuffer& psz) { return operator=((const char *)psz); }
#endif