亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qutfcodec.cpp

?? QT 開發環境里面一個很重要的文件
?? CPP
字號:
/******************************************************************************** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.**** This file is part of the QtCore module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include "qutfcodec_p.h"#include "qlist.h"#ifndef QT_NO_TEXTCODECQUtf8Codec::~QUtf8Codec(){}QByteArray QUtf8Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const{    uchar replacement = '?';    int rlen = 3*len;    int surrogate_high = -1;    if (state) {        if (state->flags & ConvertInvalidToNull)            replacement = 0;        if (!(state->flags & IgnoreHeader))            rlen += 3;        if (state->remainingChars)            surrogate_high = state->state_data[0];    }    QByteArray rstr;    rstr.resize(rlen);    uchar* cursor = (uchar*)rstr.data();    const QChar *ch = uc;    int invalid = 0;    if (state && !(state->flags & IgnoreHeader)) {        *cursor++ = 0xef;        *cursor++ = 0xbb;        *cursor++ = 0xbf;    }    for (int i=0; i < len; i++) {        uint u = ch->unicode();        if (surrogate_high >= 0) {            if (u >= 0xdc00 && u < 0xe000) {                ++ch;                ++i;                u = (surrogate_high - 0xd800)*0x400 + (u - 0xdc00) + 0x10000;                surrogate_high = -1;            } else {                // high surrogate without low                *cursor = replacement;                ++ch;                ++invalid;                surrogate_high = -1;                continue;            }        } else if (u >= 0xdc00 && u < 0xe000) {            // low surrogate without high            *cursor = replacement;            ++ch;            ++invalid;            continue;        } else if (u >= 0xd800 && u < 0xdc00) {            surrogate_high = u;            ++ch;            continue;        }        if (u < 0x80) {            *cursor++ = (uchar)u;        } else {            if (u < 0x0800) {                *cursor++ = 0xc0 | ((uchar) (u >> 6));            } else {                if (u > 0xffff) {                    // see QString::fromUtf8() and QString::utf8() for explanations                    if (u > 0x10fe00 && u < 0x10ff00) {                        *cursor++ = (u - 0x10fe00);                        ++ch;                        continue;                    } else {                        *cursor++ = 0xf0 | ((uchar) (u >> 18));                        *cursor++ = 0x80 | (((uchar) (u >> 12)) & 0x3f);                    }                } else {                    *cursor++ = 0xe0 | ((uchar) (u >> 12)) & 0x3f;                }                *cursor++ = 0x80 | (((uchar) (u >> 6)) & 0x3f);            }            *cursor++ = 0x80 | ((uchar) (u&0x3f));        }        ++ch;    }    rstr.resize(cursor - (const uchar*)rstr.constData());    if (state) {        state->invalidChars += invalid;        state->flags |= IgnoreHeader;        state->remainingChars = 0;        if (surrogate_high >= 0) {            state->remainingChars = 1;            state->state_data[0] = surrogate_high;        }    }    return rstr;}QString QUtf8Codec::convertToUnicode(const char *chars, int len, ConverterState *state) const{    bool headerdone = false;    QChar replacement = QChar::ReplacementCharacter;    int need = 0;    uint uc = 0;    if (state) {        if (state->flags & IgnoreHeader)            headerdone = true;        if (state->flags & ConvertInvalidToNull)            replacement = QChar::Null;        need = state->remainingChars;        if (need)            uc = state->state_data[0];    }    if (!headerdone && len > 3        && (uchar)chars[0] == 0xef && (uchar)chars[1] == 0xbb && (uchar)chars[2] == 0xbf) {        // starts with a byte order mark        chars += 3;        len -= 3;        headerdone = true;    }    QString result;    result.resize(len); // worst case    QChar *qch = result.data();    uchar ch;    int invalid = 0;    for (int i=0; i<len; i++) {        ch = *chars++;        if (need) {            if ((ch&0xc0) == 0x80) {                uc = (uc << 6) | (ch & 0x3f);                need--;                if (!need) {                    if (uc > 0xffff) {                        // surrogate pair                        uc -= 0x10000;                        unsigned short high = uc/0x400 + 0xd800;                        unsigned short low = uc%0x400 + 0xdc00;                        *qch++ = QChar(high);                        *qch++ = QChar(low);                    } else {                        *qch++ = uc;                    }                }            } else {                // error                *qch++ = QChar::ReplacementCharacter;                ++invalid;                need = 0;            }        } else {            if (ch < 128) {                *qch++ = QLatin1Char(ch);            } else if ((ch & 0xe0) == 0xc0) {                uc = ch & 0x1f;                need = 1;            } else if ((ch & 0xf0) == 0xe0) {                uc = ch & 0x0f;                need = 2;            } else if ((ch&0xf8) == 0xf0) {                uc = ch & 0x07;                need = 3;            }        }    }    result.truncate(qch - result.unicode());    if (state) {        state->invalidChars += invalid;        state->remainingChars = need;        if (headerdone)            state->flags |= IgnoreHeader;        state->state_data[0] = need ? uc : 0;    }    return result;}QByteArray QUtf8Codec::name() const{    return "UTF-8";}int QUtf8Codec::mibEnum() const{    return 106;}enum { Endian = 0, Data = 1 };QUtf16Codec::~QUtf16Codec(){}QByteArray QUtf16Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const{    Endianness endian = e;    int length =  2*len;    if (!state || (!(state->flags & IgnoreHeader))) {        length += 2;    }    if (e == Detect) {        endian = (QSysInfo::ByteOrder == QSysInfo::BigEndian) ? BE : LE;    }    QByteArray d;    d.resize(length);    char *data = d.data();    if (!state || !(state->flags & IgnoreHeader)) {        QChar bom(QChar::ByteOrderMark);        if (endian == BE) {            data[0] = bom.row();            data[1] = bom.cell();        } else {            data[0] = bom.cell();            data[1] = bom.row();        }        data += 2;    }    if (endian == BE) {        for (int i = 0; i < len; ++i) {            *(data++) = uc[i].row();            *(data++) = uc[i].cell();        }    } else {        for (int i = 0; i < len; ++i) {            *(data++) = uc[i].cell();            *(data++) = uc[i].row();        }    }    if (state) {        state->remainingChars = 0;        state->flags |= IgnoreHeader;    }    return d;}QString QUtf16Codec::convertToUnicode(const char *chars, int len, ConverterState *state) const{    Endianness endian = e;    bool half = false;    uchar buf = 0;    if (state) {        if (endian == Detect) {            if ((state->flags & IgnoreHeader) && state->state_data[Endian] == Detect)                state->state_data[Endian] = (QSysInfo::ByteOrder == QSysInfo::BigEndian) ? BE : LE;            endian = (Endianness)state->state_data[Endian];        }        if (state->remainingChars) {            half = true;            buf = state->state_data[Data];        }    }    QString result;    result.resize(len); // worst case    QChar *qch = (QChar *)result.unicode();    while (len--) {        if (half) {            QChar ch;            if (endian == LE) {                ch.setRow(*chars++);                ch.setCell(buf);            } else {                ch.setRow(buf);                ch.setCell(*chars++);            }            if (endian == Detect) {                if (ch == QChar::ByteOrderSwapped) {                    endian = LE;                } else if (ch == QChar::ByteOrderMark) {                    // ignore BOM                    endian = BE;                } else {                    if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {                        endian = BE;                    } else {                        endian = LE;                        ch = QChar((ch.unicode() >> 8) | ((ch.unicode() & 0xff) << 8));                    }                    *qch++ = ch;                }            } else {                *qch++ = ch;            }            half = false;        } else {            buf = *chars++;            half = true;        }    }    result.truncate(qch - result.unicode());    if (state) {        if (endian != Detect)            state->flags |= IgnoreHeader;        state->state_data[Endian] = endian;        if (half) {            state->remainingChars = 1;            state->state_data[Data] = buf;        } else {            state->remainingChars = 0;            state->state_data[Data] = 0;        }    }    return result;}int QUtf16Codec::mibEnum() const{    return 1015;}QByteArray QUtf16Codec::name() const{    return "UTF-16";}QList<QByteArray> QUtf16Codec::aliases() const{    QList<QByteArray> list;    list << "ISO-10646-UCS-2";    return list;}int QUtf16BECodec::mibEnum() const{    return 1013;}QByteArray QUtf16BECodec::name() const{    return "UTF-16BE";}QList<QByteArray> QUtf16BECodec::aliases() const{    QList<QByteArray> list;    return list;}int QUtf16LECodec::mibEnum() const{    return 1014;}QByteArray QUtf16LECodec::name() const{    return "UTF-16LE";}QList<QByteArray> QUtf16LECodec::aliases() const{    QList<QByteArray> list;    return list;}#endif //QT_NO_TEXTCODEC

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91蜜桃传媒精品久久久一区二区| 国产精品久久久久久久久免费桃花| 久久er精品视频| 日韩国产欧美在线视频| 五月综合激情日本mⅴ| 视频一区二区国产| 九色porny丨国产精品| 久久爱另类一区二区小说| 韩国av一区二区三区在线观看| 美国十次综合导航| 国产一级精品在线| 国产精品99久久久久久有的能看| 国模套图日韩精品一区二区| 成人免费高清视频在线观看| 欧美无砖专区一中文字| 日韩欧美国产一区二区三区| 久久亚洲影视婷婷| 亚洲成人自拍偷拍| 国产精品一级片| 日韩一区二区在线看片| 专区另类欧美日韩| 国产酒店精品激情| 欧美一区二区大片| 一区二区成人在线观看| 成人性视频免费网站| 精品少妇一区二区三区免费观看 | 久久精品国产澳门| 色94色欧美sute亚洲13| 日韩一区二区高清| 亚洲美女电影在线| 国产成人午夜精品影院观看视频| 欧美日韩三级一区二区| 亚洲精品五月天| 91麻豆精品一区二区三区| 日韩一区二区三区视频在线 | 国内精品免费**视频| 在线视频国内自拍亚洲视频| 《视频一区视频二区| 不卡一区中文字幕| 一区二区三区视频在线观看 | 亚洲电影视频在线| 制服丝袜成人动漫| 激情文学综合网| 久久久国产午夜精品 | 日韩电影免费在线| 日本欧美加勒比视频| 欧美女孩性生活视频| 国产一区二区成人久久免费影院| 日韩欧美的一区| 国产69精品久久久久777| 国产精品区一区二区三| 色狠狠综合天天综合综合| 午夜私人影院久久久久| 久久久另类综合| 欧美丝袜丝nylons| 不卡视频一二三| 理论电影国产精品| 亚洲成人福利片| 久久精品男人的天堂| 欧美美女直播网站| 成人精品国产免费网站| 亚洲一区二区三区四区五区中文 | 3d动漫精品啪啪1区2区免费| 国产成人在线看| 久久er99热精品一区二区| 亚洲国产精品视频| 亚洲日本在线观看| 亚洲国产精品激情在线观看| 5858s免费视频成人| 欧洲一区二区三区在线| 一本久久精品一区二区| 成人激情文学综合网| 成人综合在线观看| 高清在线观看日韩| 国产高清亚洲一区| 国产91高潮流白浆在线麻豆 | 国产精品久久久久9999吃药| 欧美www视频| 日本一区二区三区四区| 国产精品国产三级国产aⅴ原创| 久久九九99视频| 亚洲人成影院在线观看| 亚洲午夜影视影院在线观看| 亚洲va国产va欧美va观看| 日本一道高清亚洲日美韩| 国产原创一区二区三区| 国产风韵犹存在线视精品| 成人激情动漫在线观看| 555www色欧美视频| 国产午夜精品久久久久久免费视 | 欧美日韩精品一二三区| 日韩一级片网址| 亚洲图片另类小说| 午夜视频一区二区| 久久99精品视频| 亚洲自拍都市欧美小说| 亚洲欧洲在线观看av| 美日韩一区二区| 色综合天天综合网天天看片 | 日韩不卡一区二区三区| 国产成人h网站| 精品国产一区二区国模嫣然| 亚洲视频在线一区| 成人免费不卡视频| 久久免费偷拍视频| 美国十次了思思久久精品导航| 国产精品白丝av| 久久久久亚洲蜜桃| 国产一区999| 久久综合九色综合欧美98| 日本大胆欧美人术艺术动态| 欧美系列亚洲系列| 中文字幕成人网| www.欧美色图| 亚洲福利一区二区三区| 欧美日韩国产一级| 亚洲1区2区3区视频| 欧美日本在线观看| 日韩不卡免费视频| 欧美精品一区二区三区很污很色的| 午夜激情一区二区三区| 日韩免费福利电影在线观看| 激情成人综合网| 国产精品传媒在线| 欧美日韩黄色一区二区| 精品一区二区免费在线观看| 亚洲国产精品成人久久综合一区| 国产91清纯白嫩初高中在线观看| 亚洲欧洲av另类| 欧美sm极限捆绑bd| 色视频成人在线观看免| 免费看欧美女人艹b| 国产精品久久久久久一区二区三区 | 亚洲免费视频成人| 日韩精品一区国产麻豆| 99视频一区二区| 国产在线精品不卡| 亚洲国产精品视频| 国产日韩欧美亚洲| 久久这里只有精品6| 欧美精品日韩综合在线| 丁香网亚洲国际| 免费的国产精品| 天堂av在线一区| 亚洲综合区在线| 亚洲欧美在线观看| 国产精品视频一二三| 欧美mv日韩mv国产网站| 欧美视频一区二区三区| fc2成人免费人成在线观看播放| 国模套图日韩精品一区二区| 性感美女久久精品| 亚洲国产综合视频在线观看| 亚洲电影欧美电影有声小说| 欧美在线一二三| 美女网站在线免费欧美精品| 亚洲婷婷国产精品电影人久久| 久久久精品欧美丰满| 欧美极品美女视频| 亚洲天堂网中文字| 亚洲色图另类专区| 日韩国产在线一| 国产一区在线视频| 波多野结衣视频一区| 日本韩国一区二区| 91精品婷婷国产综合久久竹菊| 欧美精品一区二区三区四区| 国产精品美女www爽爽爽| 一区二区高清免费观看影视大全| 亚洲一区二三区| 国产高清不卡一区二区| 色婷婷综合久久久久中文一区二区 | 精品污污网站免费看| 久久久精品天堂| 日韩av网站免费在线| 不卡的av网站| 久久久天堂av| 日本三级亚洲精品| 色综合天天综合网天天狠天天 | 欧美综合色免费| 亚洲日本一区二区三区| 国产一区二区网址| 日韩欧美久久久| 美女脱光内衣内裤视频久久网站 | 九九精品一区二区| 欧美剧在线免费观看网站| 国产精品久久久久久妇女6080| 国产东北露脸精品视频| 精品国产91九色蝌蚪| 久久草av在线| 久久久久久久久久看片| 国内精品写真在线观看| 国产欧美日韩精品在线| 毛片av一区二区| 久久视频一区二区| 成人av电影在线播放| 亚洲精品视频在线| 欧美日韩视频一区二区| 欧美xfplay| 黄页视频在线91|