added wxCSConv::IsOk() (patch 1637944)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44251 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-01-18 20:39:10 +00:00
parent 646c7e13ea
commit 0f0298b10c
5 changed files with 48 additions and 2 deletions

View File

@@ -94,6 +94,7 @@ Major new features in 2.8 release
All: All:
- Added wxSizerFlags::Shaped() and FixedMinSize() methods - Added wxSizerFlags::Shaped() and FixedMinSize() methods
- Added wxCSConv::IsOk() (Manuel Martin)
- Added wxDateTime::GetDateOnly() - Added wxDateTime::GetDateOnly()
- Made wxTextFile work with unseekable files again (David Hart) - Made wxTextFile work with unseekable files again (David Hart)

View File

@@ -32,8 +32,8 @@ default user character set.
\func{}{wxCSConv}{\param{wxFontEncoding }{encoding}} \func{}{wxCSConv}{\param{wxFontEncoding }{encoding}}
Constructor. You may specify either the name of the character set you want to Constructor. You may specify either the name of the character set you want to
convert from/to or an encoding constant. If the character set name is not convert from/to or an encoding constant. If the character set name (or the
recognized, ISO 8859-1 is used as fall back. encoding) is not recognized, ISO 8859-1 is used as fall back.
\membersection{wxCSConv::\destruct{wxCSConv}}\label{wxcsconvdtor} \membersection{wxCSConv::\destruct{wxCSConv}}\label{wxcsconvdtor}
@@ -43,12 +43,26 @@ recognized, ISO 8859-1 is used as fall back.
Destructor frees any resources needed to perform the conversion. Destructor frees any resources needed to perform the conversion.
\membersection{wxCSConv::IsOk}\label{wxcsconvisok}
\constfunc{bool}{IsOk}{\void}
Returns \true if the charset (or the encoding) given at constructor is really
available to use. Returns \false if ISO 8859-1 will be used instead.
Note this does \emph{not} mean that a given string will be correctly converted.
A malformed string may still make conversion functions return \texttt{wxCONV\_FAILED}.
\newsince{2.8.2}
\membersection{wxCSConv::MB2WC}\label{wxcsconvmb2wc} \membersection{wxCSConv::MB2WC}\label{wxcsconvmb2wc}
\constfunc{size\_t}{MB2WC}{\param{wchar\_t* }{buf}, \param{const char* }{psz}, \param{size\_t }{n}} \constfunc{size\_t}{MB2WC}{\param{wchar\_t* }{buf}, \param{const char* }{psz}, \param{size\_t }{n}}
Converts from the selected character set to Unicode. Returns length of string written to destination buffer. Converts from the selected character set to Unicode. Returns length of string written to destination buffer.
\membersection{wxCSConv::WC2MB}\label{wxcsconvwc2mb} \membersection{wxCSConv::WC2MB}\label{wxcsconvwc2mb}
\constfunc{size\_t}{WC2MB}{\param{char* }{buf}, \param{const wchar\_t* }{psz}, \param{size\_t }{n}} \constfunc{size\_t}{WC2MB}{\param{char* }{buf}, \param{const wchar\_t* }{psz}, \param{size\_t }{n}}

View File

@@ -385,6 +385,11 @@ public:
void Clear(); void Clear();
#if wxABI_VERSION >= 20802
// return true if the conversion could be initilized successfully
bool IsOk() const;
#endif // wx 2.8.2+
private: private:
// common part of all ctors // common part of all ctors
void Init(); void Init();

View File

@@ -3518,6 +3518,19 @@ void wxCSConv::CreateConvIfNeeded() const
} }
} }
bool wxCSConv::IsOk() const
{
CreateConvIfNeeded();
// special case: no convReal created for wxFONTENCODING_ISO8859_1
if ( m_encoding == wxFONTENCODING_ISO8859_1 )
return true; // always ok as we do it ourselves
// m_convReal->IsOk() is called at its own creation, so we know it must
// be ok if m_convReal is non-NULL
return m_convReal != NULL;
}
size_t wxCSConv::ToWChar(wchar_t *dst, size_t dstLen, size_t wxCSConv::ToWChar(wchar_t *dst, size_t dstLen,
const char *src, size_t srcLen) const const char *src, size_t srcLen) const
{ {

View File

@@ -59,6 +59,7 @@ private:
CPPUNIT_TEST( ConversionUTF8 ); CPPUNIT_TEST( ConversionUTF8 );
CPPUNIT_TEST( ConversionUTF16 ); CPPUNIT_TEST( ConversionUTF16 );
CPPUNIT_TEST( ConversionUTF32 ); CPPUNIT_TEST( ConversionUTF32 );
CPPUNIT_TEST( IsConvOk );
#endif // wxUSE_WCHAR_T #endif // wxUSE_WCHAR_T
CPPUNIT_TEST_SUITE_END(); CPPUNIT_TEST_SUITE_END();
@@ -71,6 +72,7 @@ private:
void ConversionUTF8(); void ConversionUTF8();
void ConversionUTF16(); void ConversionUTF16();
void ConversionUTF32(); void ConversionUTF32();
void IsConvOk();
// test if converting s using the given encoding gives ws and vice versa // test if converting s using the given encoding gives ws and vice versa
// //
@@ -317,5 +319,16 @@ void UnicodeTestCase::ConversionUTF32()
CPPUNIT_ASSERT_EQUAL( (size_t)3, len ); CPPUNIT_ASSERT_EQUAL( (size_t)3, len );
} }
void UnicodeTestCase::IsConvOk()
{
CPPUNIT_ASSERT( wxCSConv(wxFONTENCODING_SYSTEM).IsOk() );
CPPUNIT_ASSERT( wxCSConv(_T("UTF-8")).IsOk() );
CPPUNIT_ASSERT( !wxCSConv(_T("NoSuchConversion")).IsOk() );
#ifdef __WINDOWS__
CPPUNIT_ASSERT( wxCSConv(_T("WINDOWS-437")).IsOk() );
#endif
}
#endif // wxUSE_WCHAR_T #endif // wxUSE_WCHAR_T