X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f7bd26981f1c8d46d3909e3de90df081de4df33b..bd5e2346d39a5465b8b15da90cef6138735fd76b:/include/wx/string.h diff --git a/include/wx/string.h b/include/wx/string.h index efe6e9fbe4..1db45300c4 100644 --- a/include/wx/string.h +++ b/include/wx/string.h @@ -9,8 +9,8 @@ // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// -#ifndef __WXSTRINGH__ -#define __WXSTRINGH__ +#ifndef _WX_WXSTRINGH__ +#define _WX_WXSTRINGH__ #ifdef __GNUG__ #pragma interface "string.h" @@ -125,7 +125,7 @@ inline const wxString& wxGetEmptyString() { return *(wxString *)&g_szNul; } struct WXDLLEXPORT wxStringData { int nRefs; // reference count - uint nDataLength, // actual string length + size_t nDataLength, // actual string length nAllocLength; // allocated memory size // mimics declaration 'char data[nAllocLength]' @@ -182,7 +182,7 @@ struct WXDLLEXPORT wxStringData { #endif //WXSTRING_IS_WXOBJECT -friend class wxArrayString; +friend class WXDLLEXPORT wxArrayString; // NB: special care was taken in arrangin the member functions in such order // that all inline functions can be effectively inlined @@ -254,13 +254,13 @@ public: /** @name generic attributes & operations */ //@{ /// as standard strlen() - uint Len() const { return GetStringData()->nDataLength; } + size_t Len() const { return GetStringData()->nDataLength; } /// string contains any characters? bool IsEmpty() const { return Len() == 0; } - /// reinitialize string (and free data!) + /// reinitialize string (and free memory) void Empty() { - if ( GetStringData()->nDataLength != 0 ) + if ( !IsEmpty() ) Reinit(); wxASSERT( GetStringData()->nDataLength == 0 ); @@ -360,15 +360,15 @@ public: /** @name return resulting string */ //@{ /// - friend wxString operator+(const wxString& string1, const wxString& string2); + friend wxString WXDLLEXPORT operator+(const wxString& string1, const wxString& string2); /// - friend wxString operator+(const wxString& string, char ch); + friend wxString WXDLLEXPORT operator+(const wxString& string, char ch); /// - friend wxString operator+(char ch, const wxString& string); + friend wxString WXDLLEXPORT operator+(char ch, const wxString& string); /// - friend wxString operator+(const wxString& string, const char *psz); + friend wxString WXDLLEXPORT operator+(const wxString& string, const char *psz); /// - friend wxString operator+(const char *psz, const wxString& string); + friend wxString WXDLLEXPORT operator+(const char *psz, const wxString& string); //@} //@} @@ -452,7 +452,7 @@ public: @param bReplaceAll: global replace (default) or only the first occurence @return the number of replacements made */ - uint Replace(const char *szOld, const char *szNew, bool bReplaceAll = TRUE); + size_t Replace(const char *szOld, const char *szNew, bool bReplaceAll = TRUE); //@} /// check if the string contents matches a mask containing '*' and '?' @@ -471,7 +471,7 @@ public: //@{ /// ensure that string has space for at least nLen characters // only works if the data of this string is not shared - void Alloc(uint nLen); + void Alloc(size_t nLen); /// minimize the string's memory // only works if the data of this string is not shared void Shrink(); @@ -480,7 +480,7 @@ public: Unget() *must* be called a.s.a.p. to put string back in a reasonable state! */ - char *GetWriteBuf(uint nLen); + char *GetWriteBuf(size_t nLen); /// call this immediately after GetWriteBuf() has been used void UngetWriteBuf(); //@} @@ -533,17 +533,13 @@ public: wxString& Remove(size_t pos) { return Truncate(pos); } wxString& RemoveLast() { return Truncate(Len() - 1); } - // Robert Roebling - wxString& Remove(size_t nStart, size_t nLen) - { return erase( nStart, nLen ); } + wxString& Remove(size_t nStart, size_t nLen) { return erase( nStart, nLen ); } - int First( const char ch ) const { size_t res = find(ch); return res == wxString::npos ? -1 : res; } - int First( const char* psz ) const { size_t res = find(psz); return res == wxString::npos ? -1 : res; } - int First( const wxString &str ) const { size_t res = find(str); return res == wxString::npos ? -1 : res; } + int First( const char ch ) const { return Find(ch); } + int First( const char* psz ) const { return Find(psz); } + int First( const wxString &str ) const { return Find(str); } - int Last( const char ch ) const { size_t res = rfind(ch,0); return res == wxString::npos ? -1 : res; } - int Last( const char* psz ) const { size_t res = rfind(psz,0); return res == wxString::npos ? -1 : res; } - int Last( const wxString &str ) const { size_t res = rfind(str,0); return res == wxString::npos ? -1 : res; } + int Last( const char ch ) const { return Find(ch, TRUE); } /// same as IsEmpty bool IsNull() const { return IsEmpty(); } @@ -560,7 +556,7 @@ public: //@{ /// take nLen chars starting at nPos wxString(const wxString& str, size_t nPos, size_t nLen = npos) - { + { wxASSERT( str.GetStringData()->IsValid() ); InitWith(str.c_str(), nPos, nLen == npos ? 0 : nLen); } @@ -690,7 +686,7 @@ public: size_t find(char ch, size_t nStart = 0) const; // wxWin compatibility - inline bool Contains(const wxString& str) { return Find(str) != -1; } + inline bool Contains(const wxString& str) const { return Find(str) != -1; } //@} @@ -792,7 +788,7 @@ public: @memo probably the most commonly used array type - array of strings */ // ---------------------------------------------------------------------------- -class wxArrayString +class WXDLLEXPORT wxArrayString { public: /** @name ctors and dtor */ @@ -822,7 +818,7 @@ public: /** @name simple accessors */ //@{ /// number of elements in the array - uint Count() const { return m_nCount; } + size_t Count() const { return m_nCount; } /// is it empty? bool IsEmpty() const { return m_nCount == 0; } //@} @@ -851,7 +847,7 @@ public: /// add new element at the end void Add (const wxString& str); /// add new element at given position - void Insert(const wxString& str, uint uiIndex); + void Insert(const wxString& str, size_t uiIndex); /// remove first item matching this value void Remove(const char *sz); /// remove item by index @@ -865,7 +861,7 @@ private: void Grow(); // makes array bigger if needed void Free(); // free the string stored - size_t m_nSize, // current size of the array + size_t m_nSize, // current size of the array m_nCount; // current number of elements char **m_pItems; // pointer to data @@ -913,6 +909,11 @@ inline bool operator>=(const wxString& s1, const char * s2) { return s1.Cmp(s2) /// inline bool operator>=(const char * s1, const wxString& s2) { return s2.Cmp(s1) <= 0; } //@} +wxString WXDLLEXPORT operator+(const wxString& string1, const wxString& string2); +wxString WXDLLEXPORT operator+(const wxString& string, char ch); +wxString WXDLLEXPORT operator+(char ch, const wxString& string); +wxString WXDLLEXPORT operator+(const wxString& string, const char *psz); +wxString WXDLLEXPORT operator+(const char *psz, const wxString& string); // --------------------------------------------------------------------------- /** @name Global functions complementing standard C string library @@ -923,12 +924,23 @@ inline bool operator>=(const char * s1, const wxString& s2) { return s2.Cmp(s1) #ifdef STD_STRING_COMPATIBILITY // fwd decl -class WXDLLEXPORT istream; +// Known not to work with wxUSE_IOSTREAMH set to 0, so +// replacing with includes (on advice of ungod@pasdex.com.au) +// class WXDLLEXPORT istream; +#if wxUSE_IOSTREAMH +// N.B. BC++ doesn't have istream.h, ostream.h +#include +#else +#include +# ifdef _MSC_VER + using namespace std; +# endif +#endif istream& WXDLLEXPORT operator>>(istream& is, wxString& str); #endif //std::string compatibility -#endif // __WXSTRINGH__ +#endif // _WX_WXSTRINGH__ //@}