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).
|
- Added bilinear image resizing algorithm to wxImage (bishop).
|
||||||
- Fix bug with position argument in wxImage::Size() (Byron Sorgdrager).
|
- Fix bug with position argument in wxImage::Size() (Byron Sorgdrager).
|
||||||
- Fix bug with parsing concatenated switches in wxCmdLineParser (Mike Funduc).
|
- Fix bug with parsing concatenated switches in wxCmdLineParser (Mike Funduc).
|
||||||
|
- Added wxMBConv::cMB2WC(wxCharBuffer) and cWC2MB(wxWCharBuffer) overloads.
|
||||||
|
|
||||||
All (GUI):
|
All (GUI):
|
||||||
|
|
||||||
|
@ -108,6 +108,12 @@ public:
|
|||||||
const wxCharBuffer
|
const wxCharBuffer
|
||||||
cWC2MB(const wchar_t *in, size_t inLen, size_t *outLen) const;
|
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
|
// convenience functions for converting MB or WC to/from wxWin default
|
||||||
#if wxUSE_UNICODE
|
#if wxUSE_UNICODE
|
||||||
const wxWCharBuffer cMB2WX(const char *psz) const { return cMB2WC(psz); }
|
const wxWCharBuffer cMB2WX(const char *psz) const { return cMB2WC(psz); }
|
||||||
|
@ -177,6 +177,23 @@ public:
|
|||||||
size_t inLen,
|
size_t inLen,
|
||||||
size_t *outLen) const;
|
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
|
Converts from multibyte encoding to the current wxChar type (which
|
||||||
@ -204,6 +221,23 @@ public:
|
|||||||
size_t inLen,
|
size_t inLen,
|
||||||
size_t *outLen) const;
|
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.
|
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();
|
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
|
// wxMBConvLibc
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user