Add convenient wxMBConv::cMB2WC/WC2MB overloads taking buffers.
These overloads allow not to worry about buffer lengths and just convert between wxCharBuffer and wxWCharBuffer directly in a convenient way. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61896 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
c8299fa80c
commit
40ac5040ce
@ -380,6 +380,7 @@ All:
|
||||
- Added bilinear image resizing algorithm to wxImage (bishop).
|
||||
- Fix bug with position argument in wxImage::Size() (Byron Sorgdrager).
|
||||
- Fix bug with parsing concatenated switches in wxCmdLineParser (Mike Funduc).
|
||||
- Added wxMBConv::cMB2WC(wxCharBuffer) and cWC2MB(wxWCharBuffer) overloads.
|
||||
|
||||
All (GUI):
|
||||
|
||||
|
@ -108,6 +108,12 @@ public:
|
||||
const wxCharBuffer
|
||||
cWC2MB(const wchar_t *in, size_t inLen, size_t *outLen) const;
|
||||
|
||||
// And yet more convenience functions for converting the entire buffers:
|
||||
// these are the simplest and least error-prone as you never need to bother
|
||||
// with lengths/sizes directly.
|
||||
const wxWCharBuffer cMB2WC(const wxScopedCharBuffer& in) const;
|
||||
const wxCharBuffer cWC2MB(const wxScopedWCharBuffer& in) 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); }
|
||||
|
@ -177,6 +177,23 @@ public:
|
||||
size_t inLen,
|
||||
size_t *outLen) const;
|
||||
|
||||
/**
|
||||
Converts a char buffer to wide char one.
|
||||
|
||||
This is the most convenient and safest conversion function as you
|
||||
don't have to deal with the buffer lengths directly. Use it if the
|
||||
input buffer is known not to be empty or if you are sure that the
|
||||
conversion is going to succeed -- otherwise, use the overload above to
|
||||
be able to distinguish between empty input and conversion failure.
|
||||
|
||||
@return
|
||||
The buffer containing the converted text, empty if the input was
|
||||
empty or if the conversion failed.
|
||||
|
||||
@since 2.9.1
|
||||
*/
|
||||
const wxWCharBuffer cMB2WC(const wxCharBuffer& buf) const;
|
||||
|
||||
//@{
|
||||
/**
|
||||
Converts from multibyte encoding to the current wxChar type (which
|
||||
@ -204,6 +221,23 @@ public:
|
||||
size_t inLen,
|
||||
size_t *outLen) const;
|
||||
|
||||
/**
|
||||
Converts a wide char buffer to char one.
|
||||
|
||||
This is the most convenient and safest conversion function as you
|
||||
don't have to deal with the buffer lengths directly. Use it if the
|
||||
input buffer is known not to be empty or if you are sure that the
|
||||
conversion is going to succeed -- otherwise, use the overload above to
|
||||
be able to distinguish between empty input and conversion failure.
|
||||
|
||||
@return
|
||||
The buffer containing the converted text, empty if the input was
|
||||
empty or if the conversion failed.
|
||||
|
||||
@since 2.9.1
|
||||
*/
|
||||
const wxCharBuffer cWC2MB(const wxWCharBuffer& buf) const;
|
||||
|
||||
//@{
|
||||
/**
|
||||
Converts from Unicode to the current wxChar type.
|
||||
|
@ -490,6 +490,42 @@ wxMBConv::cWC2MB(const wchar_t *inBuff, size_t inLen, size_t *outLen) const
|
||||
return wxCharBuffer();
|
||||
}
|
||||
|
||||
const wxWCharBuffer wxMBConv::cMB2WC(const wxScopedCharBuffer& buf) const
|
||||
{
|
||||
const size_t srcLen = buf.length();
|
||||
if ( srcLen )
|
||||
{
|
||||
const size_t dstLen = ToWChar(NULL, 0, buf, srcLen);
|
||||
if ( dstLen != wxCONV_FAILED )
|
||||
{
|
||||
wxWCharBuffer wbuf(dstLen);
|
||||
wbuf.data()[dstLen] = L'\0';
|
||||
if ( ToWChar(wbuf.data(), dstLen, buf, srcLen) != wxCONV_FAILED )
|
||||
return wbuf;
|
||||
}
|
||||
}
|
||||
|
||||
return wxWCharBuffer();
|
||||
}
|
||||
|
||||
const wxCharBuffer wxMBConv::cWC2MB(const wxScopedWCharBuffer& wbuf) const
|
||||
{
|
||||
const size_t srcLen = wbuf.length();
|
||||
if ( srcLen )
|
||||
{
|
||||
const size_t dstLen = FromWChar(NULL, 0, wbuf, srcLen);
|
||||
if ( dstLen != wxCONV_FAILED )
|
||||
{
|
||||
wxCharBuffer buf(dstLen);
|
||||
buf.data()[dstLen] = '\0';
|
||||
if ( FromWChar(buf.data(), dstLen, wbuf, srcLen) != wxCONV_FAILED )
|
||||
return buf;
|
||||
}
|
||||
}
|
||||
|
||||
return wxCharBuffer();
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxMBConvLibc
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user