This commit was manufactured by cvs2svn to create tag 'WX_2_2_8'.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/tags/WX_2_2_8@12118 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -66,7 +66,6 @@
|
||||
#endif // AIX
|
||||
|
||||
#include "wx/defs.h" // everybody should include this
|
||||
#include "wx/debug.h" // for wxASSERT()
|
||||
#include "wx/wxchar.h" // for wxChar
|
||||
#include "wx/buffer.h" // for wxCharBuffer
|
||||
#include "wx/strconv.h" // for wxConvertXXX() macros and wxMBConv classes
|
||||
@@ -205,6 +204,12 @@ struct WXDLLEXPORT wxStringData
|
||||
|
||||
// lock/unlock
|
||||
void Lock() { if ( !IsEmpty() ) nRefs++; }
|
||||
|
||||
// VC++ will refuse to inline this function but profiling shows that it
|
||||
// is wrong
|
||||
#if defined(__VISUALC__) && (__VISUALC__ >= 1200)
|
||||
__forceinline
|
||||
#endif
|
||||
void Unlock() { if ( !IsEmpty() && --nRefs == 0) free(this); }
|
||||
|
||||
// if we had taken control over string memory (GetWriteBuf), it's
|
||||
@@ -315,6 +320,8 @@ public:
|
||||
// (default value of wxSTRING_MAXLEN means take all the string)
|
||||
wxString(const wxChar *psz, size_t nLength = wxSTRING_MAXLEN)
|
||||
{ InitWith(psz, 0, nLength); }
|
||||
wxString(const wxChar *psz, wxMBConv& WXUNUSED(conv), size_t nLength = wxSTRING_MAXLEN)
|
||||
{ InitWith(psz, 0, nLength); }
|
||||
|
||||
#if wxUSE_UNICODE
|
||||
// from multibyte string
|
||||
@@ -328,13 +335,10 @@ public:
|
||||
// from C string (for compilers using unsigned char)
|
||||
wxString(const unsigned char* psz, size_t nLength = wxSTRING_MAXLEN)
|
||||
{ InitWith((const char*)psz, 0, nLength); }
|
||||
// from multibyte string
|
||||
wxString(const char *psz, wxMBConv& WXUNUSED(conv) , size_t nLength = wxSTRING_MAXLEN)
|
||||
{ InitWith(psz, 0, nLength); }
|
||||
|
||||
#if wxUSE_WCHAR_T
|
||||
// from wide (Unicode) string
|
||||
wxString(const wchar_t *pwz);
|
||||
wxString(const wchar_t *pwz, wxMBConv& conv = wxConvLibc);
|
||||
#endif // !wxUSE_WCHAR_T
|
||||
|
||||
// from wxCharBuffer
|
||||
@@ -423,18 +427,30 @@ public:
|
||||
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()!)
|
||||
// identical to c_str()
|
||||
const wxChar* wx_str() const { return m_pchData; }
|
||||
// identical to c_str()
|
||||
const wxChar* GetData() const { return m_pchData; }
|
||||
|
||||
// conversions with (possible) format convertions: have to return a
|
||||
// buffer with temporary data
|
||||
//
|
||||
// the functions defined (in either Unicode or ANSI) mode are mb_str() to
|
||||
// return an ANSI (multibyte) string, wc_str() to return a wide string and
|
||||
// fn_str() to return a string which should be used with the OS APIs
|
||||
// accepting the file names. The return value is always the same, but the
|
||||
// type differs because a function may either return pointer to the buffer
|
||||
// directly or have to use intermediate buffer for translation.
|
||||
#if wxUSE_UNICODE
|
||||
const wxCharBuffer mb_str(wxMBConv& conv = wxConvLibc) const { return conv.cWC2MB(m_pchData); }
|
||||
const wxCharBuffer mb_str(wxMBConv& conv = wxConvLibc) const
|
||||
{ return conv.cWC2MB(m_pchData); }
|
||||
|
||||
const wxWX2MBbuf mbc_str() const { return mb_str(*wxConvCurrent); }
|
||||
|
||||
const wxChar* wc_str(wxMBConv& WXUNUSED(conv) = wxConvLibc) const { return m_pchData; }
|
||||
const wxChar* wc_str() const { return m_pchData; }
|
||||
|
||||
// for compatibility with !wxUSE_UNICODE version
|
||||
const wxChar* wc_str(wxMBConv& WXUNUSED(conv)) const { return m_pchData; }
|
||||
|
||||
#if wxMBFILES
|
||||
const wxCharBuffer fn_str() const { return mb_str(wxConvFile); }
|
||||
@@ -442,17 +458,18 @@ public:
|
||||
const wxChar* fn_str() const { return m_pchData; }
|
||||
#endif // wxMBFILES/!wxMBFILES
|
||||
#else // ANSI
|
||||
#if wxUSE_MULTIBYTE
|
||||
const wxChar* mb_str(wxMBConv& WXUNUSED(conv) = wxConvLibc) const
|
||||
{ return m_pchData; }
|
||||
const wxWX2MBbuf mbc_str() const { return mb_str(*wxConvCurrent); }
|
||||
#else // !mmultibyte
|
||||
const wxChar* mb_str() const { return m_pchData; }
|
||||
|
||||
// for compatibility with wxUSE_UNICODE version
|
||||
const wxChar* mb_str(wxMBConv& WXUNUSED(conv)) const { return m_pchData; }
|
||||
|
||||
const wxWX2MBbuf mbc_str() const { return mb_str(); }
|
||||
#endif // multibyte/!multibyte
|
||||
|
||||
#if wxUSE_WCHAR_T
|
||||
const wxWCharBuffer wc_str(wxMBConv& conv) const { return conv.cMB2WC(m_pchData); }
|
||||
const wxWCharBuffer wc_str(wxMBConv& conv) const
|
||||
{ return conv.cMB2WC(m_pchData); }
|
||||
#endif // wxUSE_WCHAR_T
|
||||
|
||||
const wxChar* fn_str() const { return m_pchData; }
|
||||
#endif // Unicode/ANSI
|
||||
|
||||
@@ -580,10 +597,15 @@ public:
|
||||
// if nCount = default value)
|
||||
wxString Mid(size_t nFirst, size_t nCount = wxSTRING_MAXLEN) const;
|
||||
|
||||
// operator version of Mid()
|
||||
// operator version of Mid()
|
||||
wxString operator()(size_t start, size_t len) const
|
||||
{ return Mid(start, len); }
|
||||
|
||||
// check that the tring starts with prefix and return the rest of the
|
||||
// string in the provided pointer if it is not NULL, otherwise return
|
||||
// FALSE
|
||||
bool StartsWith(const wxChar *prefix, wxString *rest = NULL) const;
|
||||
|
||||
// get first nCount characters
|
||||
wxString Left(size_t nCount) const;
|
||||
// get last nCount characters
|
||||
@@ -816,8 +838,8 @@ public:
|
||||
wxString& replace(size_t nStart, size_t nLen,
|
||||
const wxString& str, size_t nStart2, size_t nLen2);
|
||||
// replaces the substring with first nCount chars of sz
|
||||
wxString& replace(size_t nStart, size_t nLen,
|
||||
const wxChar* sz, size_t nCount);
|
||||
wxString& replace(size_t nStart, size_t nLen,
|
||||
const wxChar* sz, size_t nCount);
|
||||
|
||||
// swap two strings
|
||||
void swap(wxString& str);
|
||||
@@ -833,7 +855,7 @@ public:
|
||||
#if !defined(__VISUALC__) || defined(__WIN32__)
|
||||
// find first n characters of sz
|
||||
size_t find(const wxChar* sz, size_t nStart = 0, size_t n = npos) const;
|
||||
#endif
|
||||
#endif // VC++ 1.5
|
||||
|
||||
// Gives a duplicate symbol (presumably a case-insensitivity problem)
|
||||
#if !defined(__BORLANDC__)
|
||||
@@ -852,7 +874,7 @@ public:
|
||||
size_t n = npos) const;
|
||||
// as find, but from the end
|
||||
size_t rfind(wxChar ch, size_t nStart = npos) const;
|
||||
#endif
|
||||
#endif // VC++ 1.5
|
||||
|
||||
// find first/last occurence of any character in the set
|
||||
|
||||
@@ -883,7 +905,8 @@ public:
|
||||
// same as above
|
||||
size_t find_first_not_of(wxChar ch, size_t nStart = 0) const;
|
||||
// as strcspn()
|
||||
size_t find_last_not_of(const wxString& str, size_t nStart=npos) const;
|
||||
size_t find_last_not_of(const wxString& str, size_t nStart = npos) const
|
||||
{ return find_first_not_of(str.c_str(), nStart); }
|
||||
// same as above
|
||||
size_t find_last_not_of(const wxChar* sz, size_t nStart = npos) const;
|
||||
// same as above
|
||||
@@ -895,15 +918,18 @@ public:
|
||||
// just like strcmp()
|
||||
int compare(const wxString& str) const { return Cmp(str); }
|
||||
// comparison with a substring
|
||||
int compare(size_t nStart, size_t nLen, const wxString& str) const;
|
||||
int compare(size_t nStart, size_t nLen, const wxString& str) const
|
||||
{ return Mid(nStart, nLen).Cmp(str); }
|
||||
// comparison of 2 substrings
|
||||
int compare(size_t nStart, size_t nLen,
|
||||
const wxString& str, size_t nStart2, size_t nLen2) const;
|
||||
const wxString& str, size_t nStart2, size_t nLen2) const
|
||||
{ return Mid(nStart, nLen).Cmp(str.Mid(nStart2, nLen2)); }
|
||||
// just like strcmp()
|
||||
int compare(const wxChar* sz) const { return Cmp(sz); }
|
||||
// substring comparison with first nCount characters of sz
|
||||
int compare(size_t nStart, size_t nLen,
|
||||
const wxChar* sz, size_t nCount = npos) const;
|
||||
const wxChar* sz, size_t nCount = npos) const
|
||||
{ return Mid(nStart, nLen).Cmp(wxString(sz, nCount)); }
|
||||
|
||||
// substring extraction
|
||||
wxString substr(size_t nStart = 0, size_t nLen = npos) const
|
||||
@@ -985,6 +1011,9 @@ public:
|
||||
// remove first item matching this value
|
||||
void Remove(const wxChar *sz);
|
||||
// remove item by index
|
||||
void RemoveAt(size_t nIndex);
|
||||
|
||||
// obsolete, use RemoveAt(), this one is going to disappear!
|
||||
void Remove(size_t nIndex);
|
||||
|
||||
// sorting
|
||||
@@ -994,6 +1023,12 @@ public:
|
||||
// sort array elements using specified comparaison function
|
||||
void Sort(CompareFunction compareFunction);
|
||||
|
||||
// comparison
|
||||
// compare two arrays case sensitively
|
||||
bool operator==(const wxArrayString& a) const;
|
||||
// compare two arrays case sensitively
|
||||
bool operator!=(const wxArrayString& a) const { return !(*this == a); }
|
||||
|
||||
protected:
|
||||
void Copy(const wxArrayString& src); // copies the contents of another array
|
||||
|
||||
@@ -1072,11 +1107,19 @@ inline bool operator==(const wxString& s1, const wxWCharBuffer& s2)
|
||||
{ return (s1.Cmp((const wchar_t *)s2) == 0); }
|
||||
inline bool operator==(const wxWCharBuffer& s1, const wxString& s2)
|
||||
{ return (s2.Cmp((const wchar_t *)s1) == 0); }
|
||||
inline bool operator!=(const wxString& s1, const wxWCharBuffer& s2)
|
||||
{ return (s1.Cmp((const wchar_t *)s2) != 0); }
|
||||
inline bool operator!=(const wxWCharBuffer& s1, const wxString& s2)
|
||||
{ return (s2.Cmp((const wchar_t *)s1) != 0); }
|
||||
#else
|
||||
inline bool operator==(const wxString& s1, const wxCharBuffer& s2)
|
||||
{ return (s1.Cmp((const char *)s2) == 0); }
|
||||
inline bool operator==(const wxCharBuffer& s1, const wxString& s2)
|
||||
{ return (s2.Cmp((const char *)s1) == 0); }
|
||||
inline bool operator!=(const wxString& s1, const wxCharBuffer& s2)
|
||||
{ return (s1.Cmp((const char *)s2) != 0); }
|
||||
inline bool operator!=(const wxCharBuffer& s1, const wxString& s2)
|
||||
{ return (s2.Cmp((const char *)s1) != 0); }
|
||||
#endif
|
||||
|
||||
wxString WXDLLEXPORT operator+(const wxString& string1, const wxString& string2);
|
||||
|
Reference in New Issue
Block a user