22static bool qt_is_ascii( 
const char *&ptr, 
const char *end ) 
noexcept 
   24  while ( ptr + 4 <= end )
 
   26    quint32 data = qFromUnaligned<quint32>( ptr );
 
   27    if ( data &= 0x80808080U )
 
   29#if Q_BYTE_ORDER == Q_BIG_ENDIAN 
   30      uint idx = qCountLeadingZeroBits( data );
 
   32      const uint idx = qCountTrailingZeroBits( data );
 
   41    if ( quint8( *ptr ) & 0x80 )
 
   63  const char *in = ba.constData();
 
   64  const char *
const end = ba.constEnd();
 
   65  if ( qt_is_ascii( in, end ) )
 
   68    return QString::fromLatin1( ba, ba.size() );
 
   71  QByteArray intermediate = ba;
 
   72  intermediate.resize( ba.size() * 3 - ( in - ba.constData() ) );
 
   73  uchar *out = 
reinterpret_cast<uchar *
>( intermediate.data() + ( in - ba.constData() ) );
 
   74  for ( ; in < end; ++in )
 
   86      *out++ = uchar( *in );
 
   90  return QString::fromLatin1( intermediate, out - 
reinterpret_cast<uchar *
>( intermediate.data() ) );
 
QString fromEncodedComponent_helper(const QByteArray &ba)
 
ushort encodeNibble(ushort c)