removed const operator[]s (should fix 1162115)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32864 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -371,12 +371,9 @@ public:
|
|||||||
// return the character at position n
|
// return the character at position n
|
||||||
value_type at(size_type n) const
|
value_type at(size_type n) const
|
||||||
{ wxASSERT_VALID_INDEX( n ); return m_pchData[n]; }
|
{ wxASSERT_VALID_INDEX( n ); return m_pchData[n]; }
|
||||||
value_type operator[](size_type n) const { return at(n); }
|
|
||||||
// returns the writable character at position n
|
// returns the writable character at position n
|
||||||
reference at(size_type n)
|
reference at(size_type n)
|
||||||
{ wxASSERT_VALID_INDEX( n ); CopyBeforeWrite(); return m_pchData[n]; }
|
{ wxASSERT_VALID_INDEX( n ); CopyBeforeWrite(); return m_pchData[n]; }
|
||||||
reference operator[](size_type n)
|
|
||||||
{ wxASSERT_VALID_INDEX( n ); CopyBeforeWrite(); return m_pchData[n]; }
|
|
||||||
|
|
||||||
// lib.string.modifiers
|
// lib.string.modifiers
|
||||||
// append elements str[pos], ..., str[pos+n]
|
// append elements str[pos], ..., str[pos+n]
|
||||||
@@ -702,66 +699,44 @@ public:
|
|||||||
// data access (all indexes are 0 based)
|
// data access (all indexes are 0 based)
|
||||||
// read access
|
// read access
|
||||||
wxChar GetChar(size_t n) const
|
wxChar GetChar(size_t n) const
|
||||||
{ return operator[](n); }
|
{ return at(n); }
|
||||||
// read/write access
|
// read/write access
|
||||||
wxChar& GetWritableChar(size_t n)
|
wxChar& GetWritableChar(size_t n)
|
||||||
{ return operator[](n); }
|
{ return at(n); }
|
||||||
// write access
|
// write access
|
||||||
void SetChar(size_t n, wxChar ch)
|
void SetChar(size_t n, wxChar ch)
|
||||||
{ operator[](n) = ch; }
|
{ at(n) = ch; }
|
||||||
|
|
||||||
// get last character
|
// get last character
|
||||||
wxChar Last() const
|
wxChar Last() const
|
||||||
{
|
{
|
||||||
wxASSERT_MSG( !IsEmpty(), _T("wxString: index out of bounds") );
|
wxASSERT_MSG( !IsEmpty(), _T("wxString: index out of bounds") );
|
||||||
|
|
||||||
return operator[](length() - 1);
|
return at(length() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// get writable last character
|
// get writable last character
|
||||||
wxChar& Last()
|
wxChar& Last()
|
||||||
{
|
{
|
||||||
wxASSERT_MSG( !IsEmpty(), _T("wxString: index out of bounds") );
|
wxASSERT_MSG( !IsEmpty(), _T("wxString: index out of bounds") );
|
||||||
return operator[](length() - 1);
|
return at(length() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
So why do we have all these overloaded operator[]s? A bit of history:
|
Note that we we must define all of the overloads below to avoid
|
||||||
initially there was only one of them, taking size_t. Then people
|
ambiguity when using str[0]. Also note that we don't need const
|
||||||
started complaining because they wanted to use ints as indices (I
|
version of operatorp[] at all as indexed access to const string
|
||||||
wonder why) and compilers were giving warnings about it, so we had to
|
is provided by implicit conversion to "const wxChar *" below.
|
||||||
add the operator[](int). Then it became apparent that you couldn't
|
|
||||||
write str[0] any longer because there was ambiguity between two
|
|
||||||
overloads and so you now had to write str[0u] (or, of course, use the
|
|
||||||
explicit casts to either int or size_t but nobody did this).
|
|
||||||
|
|
||||||
Finally, someone decided to compile wxWin on an Alpha machine and got
|
|
||||||
a surprize: str[0u] didn't compile there because it is of type
|
|
||||||
unsigned int and size_t is unsigned _long_ on Alpha and so there was
|
|
||||||
ambiguity between converting uint to int or ulong. To fix this one we
|
|
||||||
now add operator[](uint) for the machines where size_t is not already
|
|
||||||
the same as unsigned int - hopefully this fixes the problem (for some
|
|
||||||
time)
|
|
||||||
|
|
||||||
The only real fix is, of course, to remove all versions but the one
|
|
||||||
taking size_t...
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// operator version of GetChar
|
// operator versions of GetWriteableChar()
|
||||||
wxChar operator[](int n) const
|
wxChar& operator[](int n)
|
||||||
{ return wxStringBase::operator[](n); }
|
{ return wxStringBase::at(n); }
|
||||||
wxChar& operator[](size_type n)
|
wxChar& operator[](size_type n)
|
||||||
{ return wxStringBase::operator[](n); }
|
{ return wxStringBase::at(n); }
|
||||||
wxChar operator[](size_type n) const
|
|
||||||
{ return wxStringBase::operator[](n); }
|
|
||||||
#ifndef wxSIZE_T_IS_UINT
|
#ifndef wxSIZE_T_IS_UINT
|
||||||
// operator version of GetChar
|
|
||||||
wxChar operator[](unsigned int n) const
|
|
||||||
{ return wxStringBase::operator[](n); }
|
|
||||||
|
|
||||||
// operator version of GetWriteableChar
|
|
||||||
wxChar& operator[](unsigned int n)
|
wxChar& operator[](unsigned int n)
|
||||||
{ return wxStringBase::operator[](n); }
|
{ return wxStringBase::at(n); }
|
||||||
#endif // size_t != unsigned int
|
#endif // size_t != unsigned int
|
||||||
|
|
||||||
// implicit conversion to C string
|
// implicit conversion to C string
|
||||||
|
Reference in New Issue
Block a user