Make wxUString compilable with VC6.

Provide replacements for std::basic_string functionality missing from this
compiler standard library.

Closes #12357.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65917 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2010-10-24 23:06:11 +00:00
parent f73785b104
commit b2e04188bd

View File

@@ -200,17 +200,43 @@ public:
return (wxUString &) base->assign( str, pos, n );
}
wxUString &assign( wxChar32 ch )
{
std::basic_string<wxChar32> *base = this;
return (wxUString &) base->assign( (size_type) 1, ch );
}
// FIXME-VC6: VC 6.0 stl does not support all types of assign functions
#ifdef __VISUALC6__
wxUString &assign( wxChar32 ch )
{
wxChar32 chh[1];
chh[0] = ch;
std::basic_string<wxChar32> *base = this;
return (wxUString &)base->assign(chh);
}
wxUString &assign( size_type n, wxChar32 ch )
{
std::basic_string<wxChar32> *base = this;
return (wxUString &) base->assign( n, ch );
}
wxUString &assign( size_type n, wxChar32 ch )
{
wxU32CharBuffer buffer(n);
wxChar32 *p = buffer.data();
size_type i;
for (i = 0; i < n; i++)
{
*p = ch;
p++;
}
std::basic_string<wxChar32> *base = this;
return (wxUString &)base->assign(buffer.data());
}
#else
wxUString &assign( wxChar32 ch )
{
std::basic_string<wxChar32> *base = this;
return (wxUString &) base->assign( (size_type) 1, ch );
}
wxUString &assign( size_type n, wxChar32 ch )
{
std::basic_string<wxChar32> *base = this;
return (wxUString &) base->assign( n, ch );
}
#endif // __VISUALC6__
wxUString &assign( const wxScopedU32CharBuffer &buf )
{
@@ -357,11 +383,29 @@ public:
return (wxUString &) base->append( s, n );
}
wxUString &append( size_type n, wxChar32 c )
{
std::basic_string<wxChar32> *base = this;
return (wxUString &) base->append( n, c );
}
// FIXME-VC6: VC 6.0 stl does not support all types of append functions
#ifdef __VISUALC6__
wxUString &append( size_type n, wxChar32 c )
{
wxU32CharBuffer buffer(n);
wxChar32 *p = buffer.data();
size_type i;
for (i = 0; i < n; i++)
{
*p = c;
p++;
}
std::basic_string<wxChar32> *base = this;
return (wxUString &) base->append(buffer.data());
}
#else
wxUString &append( size_type n, wxChar32 c )
{
std::basic_string<wxChar32> *base = this;
return (wxUString &) base->append( n, c );
}
#endif // __VISUALC6__
wxUString &append( wxChar32 c )
{