Ignore:
Timestamp:
May 5, 2011, 5:36:53 AM (14 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/plugins/codecs/cn/qgb18030codec.cpp

    r651 r846  
    11/****************************************************************************
    22**
    3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
     3** Copyright (C) 201 Nokia Corporation and/or its subsidiary(-ies).
    44** All rights reserved.
    55** Contact: Nokia Corporation ([email protected])
     
    6161#define Is4thByte(c)        (InRange((c), 0x30, 0x39))
    6262
    63 #define QValidChar(u)        ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter))
     63#define (QChar::ReplacementCharacter))
    6464
    6565/* User-defined areas:        UDA 1: 0xAAA1 - 0xAFFE (564/0)
     
    161161    uchar buf[4];
    162162    int nbuf = 0;
    163     QChar replacement = QChar::ReplacementCharacter;
     163    replacement = QChar::ReplacementCharacter;
    164164    if (state) {
    165165        if (state->flags & ConvertInvalidToNull)
     
    174174
    175175    QString result;
     176
     177
     178
    176179    //qDebug("QGb18030Decoder::toUnicode(const char* chars, int len = %d)", len);
    177180    for (int i = 0; i < len; i++) {
     
    181184            if (ch < 0x80) {
    182185                // ASCII
    183                 result += QLatin1Char(ch);
     186                resultData[unicodeLen] = ch;
     187                ++unicodeLen;
    184188            } else if (Is1stByte(ch)) {
    185189                // GB18030?
     
    188192            } else {
    189193                // Invalid
    190                 result += replacement;
     194                resultData[unicodeLen] = replacement;
     195                ++unicodeLen;
    191196                ++invalid;
    192197            }
     
    199204                uint u = qt_Gb18030ToUnicode(buf, clen);
    200205                if (clen == 2) {
    201                     result += QValidChar(u);
     206                    resultData[unicodeLen] = qValidChar(static_cast<ushort>(u));
     207                    ++unicodeLen;
    202208                } else {
    203                     result += replacement;
     209                    resultData[unicodeLen] = replacement;
     210                    ++unicodeLen;
    204211                    ++invalid;
    205212                }
     
    210217            } else {
    211218                // Error
    212                 result += replacement;
     219                resultData[unicodeLen] = replacement;
     220                ++unicodeLen;
    213221                ++invalid;
    214222                nbuf = 0;
     
    221229                nbuf = 3;
    222230            } else {
    223                 result += replacement;
     231                resultData[unicodeLen] = replacement;
     232                ++unicodeLen;
    224233                ++invalid;
    225234                nbuf = 0;
     
    233242                uint u = qt_Gb18030ToUnicode(buf, clen);
    234243                if (clen == 4) {
    235                     result += QValidChar(u);
     244                    resultData[unicodeLen] = qValidChar(u);
     245                    ++unicodeLen;
    236246                } else {
    237                     result += replacement;
     247                    resultData[unicodeLen] = replacement;
     248                    ++unicodeLen;
    238249                    ++invalid;
    239250                }
    240251            } else {
    241                 result += replacement;
     252                resultData[unicodeLen] = replacement;
     253                ++unicodeLen;
    242254                ++invalid;
    243255            }
     
    246258        }
    247259    }
     260
     261
    248262    if (state) {
    249263        state->remainingChars = nbuf;
     
    306320    uchar buf[2];
    307321    int nbuf = 0;
    308     QChar replacement = QChar::ReplacementCharacter;
     322    replacement = QChar::ReplacementCharacter;
    309323    if (state) {
    310324        if (state->flags & ConvertInvalidToNull)
     
    317331
    318332    QString result;
     333
     334
     335
    319336
    320337    //qDebug("QGbkDecoder::toUnicode(const char* chars = \"%s\", int len = %d)", chars, len);
     
    325342            if (ch < 0x80) {
    326343                // ASCII
    327                 result += QLatin1Char(ch);
     344                resultData[unicodeLen] = ch;
     345                ++unicodeLen;
    328346            } else if (Is1stByte(ch)) {
    329347                // GBK 1st byte?
     
    332350            } else {
    333351                // Invalid
    334                 result += replacement;
     352                resultData[unicodeLen] = replacement;
     353                ++unicodeLen;
    335354                ++invalid;
    336355            }
     
    343362                uint u = qt_Gb18030ToUnicode(buf, clen);
    344363                if (clen == 2) {
    345                     result += QValidChar(u);
     364                    resultData[unicodeLen] = qValidChar(static_cast<ushort>(u));
     365                    ++unicodeLen;
    346366                } else {
    347                     result += replacement;
     367                    resultData[unicodeLen] = replacement;
     368                    ++unicodeLen;
    348369                    ++invalid;
    349370                }
     
    351372            } else {
    352373                // Error
    353                 result += replacement;
     374                resultData[unicodeLen] = replacement;
     375                ++unicodeLen;
    354376                ++invalid;
    355377                nbuf = 0;
     
    358380        }
    359381    }
     382
    360383
    361384    if (state) {
     
    446469    uchar buf[2];
    447470    int nbuf = 0;
    448     QChar replacement = QChar::ReplacementCharacter;
     471    replacement = QChar::ReplacementCharacter;
    449472    if (state) {
    450473        if (state->flags & ConvertInvalidToNull)
     
    457480
    458481    QString result;
     482
     483
     484
    459485    //qDebug("QGb2312Decoder::toUnicode(const char* chars, int len = %d)", len);
    460486    for (int i=0; i<len; i++) {
     
    464490            if (ch < 0x80) {
    465491                // ASCII
    466                 result += QLatin1Char(ch);
     492                resultData[unicodeLen] = ch;
     493                ++unicodeLen;
    467494            } else if (IsByteInGb2312(ch)) {
    468495                // GB2312 1st byte?
     
    471498            } else {
    472499                // Invalid
    473                 result += replacement;
     500                resultData[unicodeLen] = replacement;
     501                ++unicodeLen;
    474502                ++invalid;
    475503            }
     
    482510                uint u = qt_Gb18030ToUnicode(buf, clen);
    483511                if (clen == 2) {
    484                     result += QValidChar(u);
     512                    resultData[unicodeLen] = qValidChar(static_cast<ushort>(u));
     513                    ++unicodeLen;
    485514                } else {
    486                     result += replacement;
     515                    resultData[unicodeLen] = replacement;
     516                    ++unicodeLen;
    487517                    ++invalid;
    488518                }
     
    490520            } else {
    491521                // Error
    492                 result += replacement;
     522                resultData[unicodeLen] = replacement;
     523                ++unicodeLen;
    493524                ++invalid;
    494525                nbuf = 0;
     
    497528        }
    498529    }
     530
    499531
    500532    if (state) {
Note: See TracChangeset for help on using the changeset viewer.