struct WXDLLIMPEXP_BASE wxStringOperationsWchar
{
// moves the iterator to the next Unicode character
- static void IncIter(wxStringImpl::iterator& i) { ++i; }
- static void IncIter(wxStringImpl::const_iterator& i) { ++i; }
+ template <typename Iterator>
+ static void IncIter(Iterator& i) { ++i; }
// moves the iterator to the previous Unicode character
- static void DecIter(wxStringImpl::iterator& i) { --i; }
- static void DecIter(wxStringImpl::const_iterator& i) { --i; }
+ template <typename Iterator>
+ static void DecIter(Iterator& i) { --i; }
// moves the iterator by n Unicode characters
- static wxStringImpl::iterator AddToIter(const wxStringImpl::iterator& i, int n)
- { return i + n; }
- static wxStringImpl::const_iterator AddToIter(const wxStringImpl::const_iterator& i, int n)
+ template <typename Iterator>
+ static Iterator AddToIter(const Iterator& i, ptrdiff_t n)
{ return i + n; }
// returns distance of the two iterators in Unicode characters
- static int DiffIters(const wxStringImpl::iterator& i1,
- const wxStringImpl::iterator& i2)
- { return i1 - i2; }
- static int DiffIters(const wxStringImpl::const_iterator& i1,
- const wxStringImpl::const_iterator& i2)
+ template <typename Iterator>
+ static ptrdiff_t DiffIters(const Iterator& i1, const Iterator& i2)
{ return i1 - i2; }
// encodes the character to a form used to represent it in internal
// checks correctness of UTF-8 sequence
static bool IsValidUtf8String(const char *c,
size_t len = wxStringImpl::npos);
-#ifdef __WXDEBUG__
- static bool IsValidUtf8LeadByte(unsigned char c);
-#endif
+ static bool IsValidUtf8LeadByte(unsigned char c)
+ {
+ return (c <= 0x7F) || (c >= 0xC2 && c <= 0xF4);
+ }
// table of offsets to skip forward when iterating over UTF-8 sequence
- static unsigned char ms_utf8IterTable[256];
+ static const unsigned char ms_utf8IterTable[256];
template<typename Iterator>
}
template<typename Iterator>
- static Iterator AddToIter(const Iterator& i, int n)
+ static Iterator AddToIter(const Iterator& i, ptrdiff_t n)
{
Iterator out(i);
if ( n > 0 )
{
- for ( int j = 0; j < n; ++j )
+ for ( ptrdiff_t j = 0; j < n; ++j )
IncIter(out);
}
else if ( n < 0 )
{
- for ( int j = 0; j > n; --j )
+ for ( ptrdiff_t j = 0; j > n; --j )
DecIter(out);
}
}
template<typename Iterator>
- static int DiffIters(Iterator i1, Iterator i2)
+ static ptrdiff_t DiffIters(Iterator i1, Iterator i2)
{
- int dist = 0;
+ ptrdiff_t dist = 0;
if ( i1 < i2 )
{