X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0fe1f685b4d05fefd042ebb4a88bb8789ed237c2..ce22d615fe940444602cf4c167f9ad29361a5d25:/include/wx/string.h diff --git a/include/wx/string.h b/include/wx/string.h index b5b8104dea..51583c89a3 100644 --- a/include/wx/string.h +++ b/include/wx/string.h @@ -29,15 +29,12 @@ // compile the std::string compatibility functions if defined #define wxSTD_STRING_COMPATIBILITY -// define to derive wxString from wxObject (deprecated!) -#ifdef WXSTRING_IS_WXOBJECT - #undef WXSTRING_IS_WXOBJECT -#endif - // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- +#include "wx/defs.h" // everybody should include this + #if defined(__WXMAC__) || defined(__VISAGECPP__) #include #endif @@ -65,29 +62,24 @@ #include // for strcasecmp() #endif // HAVE_STRINGS_H -#include "wx/defs.h" // everybody should include this #include "wx/wxchar.h" // for wxChar #include "wx/buffer.h" // for wxCharBuffer #include "wx/strconv.h" // for wxConvertXXX() macros and wxMBConv classes -#ifndef WX_PRECOMP - #ifdef WXSTRING_IS_WXOBJECT - #include "wx/object.h" // base class - #endif -#endif // !PCH - // --------------------------------------------------------------------------- // macros // --------------------------------------------------------------------------- -// 'naughty' cast +// casts [unfortunately!] needed to call some broken functions which require +// "char *" instead of "const char *" #define WXSTRINGCAST (wxChar *)(const wxChar *) #define wxCSTRINGCAST (wxChar *)(const wxChar *) #define wxMBSTRINGCAST (char *)(const char *) #define wxWCSTRINGCAST (wchar_t *)(const wchar_t *) // implementation only -#define ASSERT_VALID_INDEX(i) wxASSERT( (unsigned)(i) <= Len() ) +#define wxASSERT_VALID_INDEX(i) \ + wxASSERT_MSG( (size_t)(i) <= Len(), _T("invaid index in wxString") ) // ---------------------------------------------------------------------------- // constants @@ -243,15 +235,8 @@ struct WXDLLEXPORT wxStringData // - regular expressions support // --------------------------------------------------------------------------- -#ifdef WXSTRING_IS_WXOBJECT -class WXDLLEXPORT wxString : public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxString) -#else //WXSTRING_IS_WXOBJECT class WXDLLEXPORT wxString { -#endif //WXSTRING_IS_WXOBJECT - friend class WXDLLEXPORT wxArrayString; // NB: special care was taken in arranging the member functions in such order @@ -346,7 +331,7 @@ public: #if wxUSE_WCHAR_T // from wide (Unicode) string - wxString(const wchar_t *pwz, wxMBConv& conv = wxConvLibc); + wxString(const wchar_t *pwz, wxMBConv& conv = wxConvLibc, size_t nLength = wxSTRING_MAXLEN); #endif // !wxUSE_WCHAR_T // from wxCharBuffer @@ -394,13 +379,13 @@ public: // data access (all indexes are 0 based) // read access wxChar GetChar(size_t n) const - { ASSERT_VALID_INDEX( n ); return m_pchData[n]; } + { wxASSERT_VALID_INDEX( n ); return m_pchData[n]; } // read/write access wxChar& GetWritableChar(size_t n) - { ASSERT_VALID_INDEX( n ); CopyBeforeWrite(); return m_pchData[n]; } + { wxASSERT_VALID_INDEX( n ); CopyBeforeWrite(); return m_pchData[n]; } // write access void SetChar(size_t n, wxChar ch) - { ASSERT_VALID_INDEX( n ); CopyBeforeWrite(); m_pchData[n] = ch; } + { wxASSERT_VALID_INDEX( n ); CopyBeforeWrite(); m_pchData[n] = ch; } // get last character wxChar Last() const @@ -433,24 +418,24 @@ public: // operator version of GetChar wxChar operator[](size_t n) const - { ASSERT_VALID_INDEX( n ); return m_pchData[n]; } + { wxASSERT_VALID_INDEX( n ); return m_pchData[n]; } // operator version of GetChar wxChar operator[](int n) const - { ASSERT_VALID_INDEX( n ); return m_pchData[n]; } + { wxASSERT_VALID_INDEX( n ); return m_pchData[n]; } // operator version of GetWriteableChar wxChar& operator[](size_t n) - { ASSERT_VALID_INDEX( n ); CopyBeforeWrite(); return m_pchData[n]; } + { wxASSERT_VALID_INDEX( n ); CopyBeforeWrite(); return m_pchData[n]; } #ifndef wxSIZE_T_IS_UINT // operator version of GetChar wxChar operator[](unsigned int n) const - { ASSERT_VALID_INDEX( n ); return m_pchData[n]; } + { wxASSERT_VALID_INDEX( n ); return m_pchData[n]; } // operator version of GetWriteableChar wxChar& operator[](unsigned int n) - { ASSERT_VALID_INDEX( n ); CopyBeforeWrite(); return m_pchData[n]; } + { wxASSERT_VALID_INDEX( n ); CopyBeforeWrite(); return m_pchData[n]; } #endif // size_t != unsigned int // implicit conversion to C string @@ -688,12 +673,15 @@ public: // check if the string contents matches a mask containing '*' and '?' bool Matches(const wxChar *szMask) const; - // conversion to numbers: all functions return TRUE only if the whole string - // is a number and put the value of this number into the pointer provided + // conversion to numbers: all functions return TRUE only if the whole + // string is a number and put the value of this number into the pointer + // provided, the base is the numeric base in which the conversion should be + // done and must be comprised between 2 and 36 or be 0 in which case the + // standard C rules apply (leading '0' => octal, "0x" => hex) // convert to a signed integer - bool ToLong(long *val, int base = 0) const; + bool ToLong(long *val, int base = 10) const; // convert to an unsigned integer - bool ToULong(unsigned long *val, int base = 0) const; + bool ToULong(unsigned long *val, int base = 10) const; // convert to a double bool ToDouble(double *val) const; @@ -1207,7 +1195,7 @@ inline wxString operator+(const wxCharBuffer& buf, const wxString& string) // --------------------------------------------------------------------------- // don't pollute the library user's name space -#undef ASSERT_VALID_INDEX +#undef wxASSERT_VALID_INDEX #if defined(wxSTD_STRING_COMPATIBILITY) && wxUSE_STD_IOSTREAM