allow creating wxString from char*, assigning to it from char* and comparing with char* values
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44543 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -717,7 +717,9 @@ public:
|
||||
|
||||
#if wxUSE_UNICODE
|
||||
// from multibyte string
|
||||
wxString(const char *psz, const wxMBConv& conv, size_t nLength = npos);
|
||||
wxString(const char *psz,
|
||||
const wxMBConv& conv = wxConvLibc,
|
||||
size_t nLength = npos);
|
||||
// from wxWCharBuffer (i.e. return from wxGetString)
|
||||
wxString(const wxWCharBuffer& psz) : wxStringBase(psz.data()) { }
|
||||
#else // ANSI
|
||||
@@ -915,6 +917,9 @@ public:
|
||||
// from wxWCharBuffer
|
||||
wxString& operator=(const wxWCharBuffer& psz)
|
||||
{ (void) operator=((const wchar_t *)psz); return *this; }
|
||||
// from C string
|
||||
wxString& operator=(const char* psz)
|
||||
{ return operator=(wxString(psz)); }
|
||||
#else // ANSI
|
||||
// from another kind of C string
|
||||
wxString& operator=(const unsigned char* psz);
|
||||
@@ -954,16 +959,24 @@ public:
|
||||
// string += buffer (i.e. from wxGetString)
|
||||
#if wxUSE_UNICODE
|
||||
wxString& operator<<(const wxWCharBuffer& s)
|
||||
{ (void)operator<<((const wchar_t *)s); return *this; }
|
||||
void operator+=(const wxWCharBuffer& s)
|
||||
{ (void)operator<<((const wchar_t *)s); }
|
||||
{ return operator<<((const wchar_t *)s); }
|
||||
wxString& operator+=(const wxWCharBuffer& s)
|
||||
{ return operator<<((const wchar_t *)s); }
|
||||
#else // !wxUSE_UNICODE
|
||||
wxString& operator<<(const wxCharBuffer& s)
|
||||
{ (void)operator<<((const char *)s); return *this; }
|
||||
void operator+=(const wxCharBuffer& s)
|
||||
{ (void)operator<<((const char *)s); }
|
||||
{ return operator<<((const char *)s); }
|
||||
wxString& operator+=(const wxCharBuffer& s)
|
||||
{ return operator<<((const char *)s); }
|
||||
#endif // wxUSE_UNICODE/!wxUSE_UNICODE
|
||||
|
||||
#if wxUSE_UNICODE
|
||||
// string += C string in Unicode build (with conversion)
|
||||
wxString& operator<<(const char *s)
|
||||
{ return operator<<(wxString(s)); }
|
||||
wxString& operator+=(const char *s)
|
||||
{ return operator+=(wxString(s)); }
|
||||
#endif // wxUSE_UNICODE
|
||||
|
||||
// string += C string
|
||||
wxString& Append(const wxString& s)
|
||||
{
|
||||
@@ -1581,6 +1594,34 @@ inline bool operator==(const wxString& s, wxChar c) { return s.IsSameAs(c); }
|
||||
inline bool operator!=(wxChar c, const wxString& s) { return !s.IsSameAs(c); }
|
||||
inline bool operator!=(const wxString& s, wxChar c) { return !s.IsSameAs(c); }
|
||||
|
||||
// comparison with C string in Unicode build
|
||||
#if wxUSE_UNICODE
|
||||
inline bool operator==(const wxString& s1, const char* s2)
|
||||
{ return s1 == wxString(s2); }
|
||||
inline bool operator==(const char* s1, const wxString& s2)
|
||||
{ return wxString(s1) == s2; }
|
||||
inline bool operator!=(const wxString& s1, const char* s2)
|
||||
{ return s1 != wxString(s2); }
|
||||
inline bool operator!=(const char* s1, const wxString& s2)
|
||||
{ return wxString(s1) != s2; }
|
||||
inline bool operator< (const wxString& s1, const char* s2)
|
||||
{ return s1 < wxString(s2); }
|
||||
inline bool operator< (const char* s1, const wxString& s2)
|
||||
{ return wxString(s1) < s2; }
|
||||
inline bool operator> (const wxString& s1, const char* s2)
|
||||
{ return s1 > wxString(s2); }
|
||||
inline bool operator> (const char* s1, const wxString& s2)
|
||||
{ return wxString(s1) > s2; }
|
||||
inline bool operator<=(const wxString& s1, const char* s2)
|
||||
{ return s1 <= wxString(s2); }
|
||||
inline bool operator<=(const char* s1, const wxString& s2)
|
||||
{ return wxString(s1) <= s2; }
|
||||
inline bool operator>=(const wxString& s1, const char* s2)
|
||||
{ return s1 >= wxString(s2); }
|
||||
inline bool operator>=(const char* s1, const wxString& s2)
|
||||
{ return wxString(s1) >= s2; }
|
||||
#endif // wxUSE_UNICODE
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Implementation only from here until the end of file
|
||||
// ---------------------------------------------------------------------------
|
||||
|
@@ -355,6 +355,26 @@ void StringTestCase::Compare()
|
||||
CPPUNIT_ASSERT( s1 != neq3 );
|
||||
CPPUNIT_ASSERT( s1 != neq4 );
|
||||
|
||||
CPPUNIT_ASSERT( s1 == wxT("AHH") );
|
||||
CPPUNIT_ASSERT( s1 != wxT("no") );
|
||||
CPPUNIT_ASSERT( s1 < wxT("AZ") );
|
||||
CPPUNIT_ASSERT( s1 <= wxT("AZ") );
|
||||
CPPUNIT_ASSERT( s1 <= wxT("AHH") );
|
||||
CPPUNIT_ASSERT( s1 > wxT("AA") );
|
||||
CPPUNIT_ASSERT( s1 >= wxT("AA") );
|
||||
CPPUNIT_ASSERT( s1 >= wxT("AHH") );
|
||||
|
||||
// test comparison with C strings in Unicode build (must work in ANSI as
|
||||
// well, of course):
|
||||
CPPUNIT_ASSERT( s1 == "AHH" );
|
||||
CPPUNIT_ASSERT( s1 != "no" );
|
||||
CPPUNIT_ASSERT( s1 < "AZ" );
|
||||
CPPUNIT_ASSERT( s1 <= "AZ" );
|
||||
CPPUNIT_ASSERT( s1 <= "AHH" );
|
||||
CPPUNIT_ASSERT( s1 > "AA" );
|
||||
CPPUNIT_ASSERT( s1 >= "AA" );
|
||||
CPPUNIT_ASSERT( s1 >= "AHH" );
|
||||
|
||||
// wxString _s1 = wxT("A\0HH");
|
||||
// wxString _eq = wxT("A\0HH");
|
||||
// wxString _neq1 = wxT("H\0AH");
|
||||
|
@@ -141,6 +141,18 @@ void UnicodeTestCase::ConstructorsWithConversion()
|
||||
CPPUNIT_ASSERT ( wxString("\t[pl]open.format.Sformatuj dyskietk<74>=gfloppy %f",
|
||||
wxConvUTF8) == wxT("") ); //should stop at pos 35
|
||||
#endif
|
||||
|
||||
|
||||
// test using Unicode strings together with char* strings (this must work
|
||||
// in ANSI mode as well, of course):
|
||||
wxString s5("ascii");
|
||||
CPPUNIT_ASSERT( s5 == "ascii" );
|
||||
|
||||
s5 += " value";
|
||||
|
||||
CPPUNIT_ASSERT( strcmp(s5.mb_str(), "ascii value") == 0 );
|
||||
CPPUNIT_ASSERT( s5 == "ascii value" );
|
||||
CPPUNIT_ASSERT( s5 != "SomethingElse" );
|
||||
}
|
||||
|
||||
void UnicodeTestCase::ConversionEmpty()
|
||||
|
Reference in New Issue
Block a user