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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? qringbuffer_p.h

?? QT 開發(fā)環(huán)境里面一個很重要的文件
?? H
字號:
/******************************************************************************** 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.******************************************************************************/#ifndef QRINGBUFFER_P_H#define QRINGBUFFER_P_H////  W A R N I N G//  -------------//// This file is not part of the Qt API.  It exists for the convenience// of a number of Qt sources files.  This header file may change from// version to version without notice, or even be removed.//// We mean it.//#include <QtCore/qbytearray.h>#include <QtCore/qlist.h>class Q_CORE_EXPORT QRingBuffer{public:    inline QRingBuffer(int growth = 4096) : basicBlockSize(growth) {        buffers << QByteArray();        clear();    }    inline int nextDataBlockSize() const {        return (tailBuffer == 0 ? tail : buffers.first().size()) - head;    }    inline const char *readPointer() const {        return buffers.isEmpty() ? 0 : (buffers.first().constData() + head);    }    inline void free(int bytes) {        bufferSize -= bytes;        if (bufferSize < 0)            bufferSize = 0;        for (;;) {            int nextBlockSize = nextDataBlockSize();            if (bytes < nextBlockSize) {                head += bytes;                if (head == tail && tailBuffer == 0)                    head = tail = 0;                break;            }            bytes -= nextBlockSize;            if (buffers.count() == 1) {                if (buffers.at(0).size() != basicBlockSize)                    buffers[0].resize(basicBlockSize);                head = tail = 0;                tailBuffer = 0;                break;            }            buffers.removeAt(0);            --tailBuffer;            head = 0;        }    }    inline char *reserve(int bytes) {        bufferSize += bytes;        // if there is already enough space, simply return.        if (tail + bytes <= buffers.at(tailBuffer).size()) {            char *writePtr = buffers[tailBuffer].data() + tail;            tail += bytes;            return writePtr;        }        // if our buffer isn't half full yet, simply resize it.        if (tail < buffers.at(tailBuffer).size() / 2) {            buffers[tailBuffer].resize(tail + bytes);            char *writePtr = buffers[tailBuffer].data() + tail;            tail += bytes;            return writePtr;        }        // shrink this buffer to its current size        buffers[tailBuffer].resize(tail);        // create a new QByteArray with the right size        buffers << QByteArray();        ++tailBuffer;        buffers[tailBuffer].resize(qMax(basicBlockSize, bytes));        tail = bytes;        return buffers[tailBuffer].data();    }    inline void truncate(int pos) {        if (pos < size())            chop(size() - pos);    }    inline void chop(int bytes) {        bufferSize -= bytes;        if (bufferSize < 0)            bufferSize = 0;        for (;;) {            // special case: head and tail are in the same buffer            if (tailBuffer == 0) {                tail -= bytes;                if (tail <= head)                    tail = head = 0;                return;            }            if (bytes <= tail) {                tail -= bytes;                return;            }            bytes -= tail;            buffers.removeAt(tailBuffer);            --tailBuffer;            tail = buffers.at(tailBuffer).size();        }    }    inline bool isEmpty() const {        return tailBuffer == 0 && tail == 0;    }    inline int getChar() {        if (isEmpty())            return -1;        char c = *readPointer();        free(1);        return int(uchar(c));    }    inline void putChar(char c) {        char *ptr = reserve(1);        *ptr = c;    }    inline void ungetChar(char c) {        --head;        if (head < 0) {            buffers.prepend(QByteArray());            buffers[0].resize(basicBlockSize);            head = basicBlockSize - 1;            ++tailBuffer;        }        buffers[0][head] = c;        ++bufferSize;    }    inline int size() const {        return bufferSize;    }    inline void clear() {        if(!buffers.isEmpty()) {            QByteArray tmp = buffers[0];            buffers.clear();            buffers << tmp;            if (buffers.at(0).size() != basicBlockSize)                buffers[0].resize(basicBlockSize);        }        head = tail = 0;        tailBuffer = 0;        bufferSize = 0;    }    inline int indexOf(char c) const {        int index = 0;        for (int i = 0; i < buffers.size(); ++i) {            int start = 0;            int end = buffers.at(i).size();            if (i == 0)                start = head;            if (i == tailBuffer)                end = tail;            const char *ptr = buffers.at(i).data() + start;            for (int j = start; j < end; ++j) {                if (*ptr++ == c)                    return index;                ++index;            }        }        return -1;    }    inline int read(char *data, int maxLength) {        int bytesToRead = qMin(size(), maxLength);        int readSoFar = 0;        while (readSoFar < bytesToRead) {            const char *ptr = readPointer();            int bytesToReadFromThisBlock = qMin(bytesToRead - readSoFar, nextDataBlockSize());            if (data)                memcpy(data + readSoFar, ptr, bytesToReadFromThisBlock);            readSoFar += bytesToReadFromThisBlock;        }        free(readSoFar);        return readSoFar;    }    inline QByteArray read(int maxLength) {        QByteArray tmp;        tmp.resize(qMin(maxLength, size()));        read(tmp.data(), tmp.size());        return tmp;    }    inline QByteArray readAll() {        return read(size());    }    inline QByteArray peek(int maxLength) const {        int bytesToRead = qMin(size(), maxLength);        if(maxLength <= 0)            return QByteArray();        QByteArray ret;        ret.resize(bytesToRead);        int readSoFar = 0;        for (int i = 0; readSoFar < bytesToRead && i < buffers.size(); ++i) {            int start = 0;            int end = buffers.at(i).size();            if (i == 0)                start = head;            if (i == tailBuffer)                end = tail;            const int len = qMin(ret.size()-readSoFar, end-start);            memcpy(ret.data()+readSoFar, buffers.at(i).constData()+start, len);            readSoFar += len;        }        Q_ASSERT(readSoFar == ret.size());        return ret;    }    inline int skip(int length) {        return read(0, length);    }    inline int write(const char *data, int maxLength) {        memcpy(reserve(maxLength), data, maxLength);        return maxLength;    }    inline int write(const QByteArray &data) {        return write(data.constData(), data.size());    }    inline int readLine(char *data, int maxLength) {        int index = indexOf('\n');        if (index == -1)            return read(data, maxLength);        if (maxLength <= 0)            return -1;        int readSoFar = 0;        while (readSoFar < index + 1 && readSoFar < maxLength - 1) {            int bytesToRead = qMin((index + 1) - readSoFar, nextDataBlockSize());            bytesToRead = qMin(bytesToRead, (maxLength - 1) - readSoFar);            memcpy(data + readSoFar, readPointer(), bytesToRead);            readSoFar += bytesToRead;        }        free(readSoFar);        // Terminate it.        data[readSoFar] = '\0';        return readSoFar;    }    inline bool canReadLine() const {        return indexOf('\n') != -1;    }private:    QList<QByteArray> buffers;    int head, tail;    int tailBuffer;    int basicBlockSize;    int bufferSize;};#endif // QRINGBUFFER_P_H

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
捆绑变态av一区二区三区| 久久久www成人免费无遮挡大片| 国产精品三级视频| 国产成人免费在线视频| 久久久91精品国产一区二区精品| 看片网站欧美日韩| 亚洲精品在线观看网站| 国产精品538一区二区在线| 国产香蕉久久精品综合网| 国产福利精品一区| 中文av字幕一区| 一本到不卡免费一区二区| 亚洲一区二区av在线| 在线不卡中文字幕| 国产精品一区二区三区乱码| 国产欧美一区二区精品忘忧草| 成人小视频免费在线观看| 亚洲欧美自拍偷拍| 精品视频123区在线观看| 免费观看91视频大全| 国产午夜精品久久久久久免费视| 成人av网站在线观看| 亚洲国产精品一区二区www| 日韩亚洲欧美在线| 国产99久久久精品| 夜夜精品视频一区二区| 欧美一卡2卡三卡4卡5免费| 韩国视频一区二区| 亚洲另类中文字| 日韩欧美国产综合| 99视频精品全部免费在线| 亚洲福利视频一区二区| 久久久国产精华| 欧日韩精品视频| 国产精品一线二线三线| 一区二区激情小说| 国产亚洲综合性久久久影院| 欧美亚洲综合在线| 国产精品亚洲人在线观看| 亚洲国产成人tv| 国产精品国产三级国产aⅴ原创 | 久久综合久久鬼色中文字| 波多野结衣视频一区| 日韩电影在线一区| 亚洲色图色小说| 26uuu精品一区二区| 欧美午夜精品一区| 成人美女在线视频| 极品少妇xxxx精品少妇| 亚洲国产cao| 国产精品超碰97尤物18| 2023国产精品| 欧美日韩精品系列| 色噜噜狠狠一区二区三区果冻| 国产一区福利在线| 免费看欧美女人艹b| 亚洲影视在线播放| 中文字幕制服丝袜一区二区三区 | 精品一区二区在线视频| 一区二区三区四区五区视频在线观看| 久久先锋影音av鲁色资源网| 欧美色图12p| 91老师片黄在线观看| 国产精品1区2区3区在线观看| 日韩精品乱码免费| 一二三四社区欧美黄| 最新高清无码专区| 国产精品二三区| 中文字幕+乱码+中文字幕一区| 2024国产精品| 久久久久久99精品| 欧美精品一区二区三区视频| 91精品免费观看| 3751色影院一区二区三区| 欧美日韩一区二区三区视频| 色国产综合视频| 一本到不卡精品视频在线观看| av综合在线播放| 成人国产视频在线观看| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产欧美日韩视频在线观看| 精品日韩一区二区三区免费视频| 制服丝袜在线91| 日韩一级免费一区| 精品少妇一区二区三区在线视频| 91精品国产乱| 欧美成人女星排名| 精品久久99ma| 久久久久青草大香线综合精品| 精品区一区二区| 久久这里只精品最新地址| 精品国产精品一区二区夜夜嗨| 精品少妇一区二区三区在线播放 | 91精品国产91久久综合桃花| 69p69国产精品| 精品国产1区二区| 国产精品人成在线观看免费| 国产精品久久久久四虎| 亚洲美女屁股眼交3| 亚洲不卡在线观看| 激情五月婷婷综合网| 国产精品1区二区.| 一本久久a久久精品亚洲| 欧美日韩国产小视频| 欧美一区二区性放荡片| 久久久99精品免费观看不卡| 亚洲欧洲www| 婷婷六月综合网| 久久精品国产77777蜜臀| 国产成人免费视频一区| 91搞黄在线观看| 欧美大度的电影原声| 国产精品免费视频一区| 亚洲国产人成综合网站| 黄色精品一二区| 91麻豆产精品久久久久久| 在线91免费看| 国产女人18毛片水真多成人如厕| 亚洲精品乱码久久久久久久久| 日韩av午夜在线观看| 成a人片亚洲日本久久| 欧美嫩在线观看| 2017欧美狠狠色| 亚洲人成影院在线观看| 免费高清在线视频一区·| 9i在线看片成人免费| 91精品视频网| 亚洲美女免费视频| 国产精品99久| 51久久夜色精品国产麻豆| 国产精品理伦片| 玖玖九九国产精品| 日本韩国欧美在线| 久久精品综合网| 日韩精品欧美精品| 色综合一个色综合亚洲| 欧美成人一区二区三区片免费 | 久久99精品久久久久久久久久久久| 99久久夜色精品国产网站| 欧美一级专区免费大片| 亚洲自拍偷拍九九九| 国产成人精品亚洲日本在线桃色| 欧美日韩亚州综合| 亚洲视频图片小说| 丰满白嫩尤物一区二区| 欧美一卡二卡三卡四卡| 一区二区三区在线观看视频| 国产麻豆精品在线观看| 欧美丝袜自拍制服另类| 日韩美女啊v在线免费观看| 国产精品亚洲一区二区三区妖精 | 日韩视频一区二区三区| 亚洲综合在线电影| 成人中文字幕电影| 久久亚洲精品小早川怜子| 日韩国产高清在线| 欧美在线观看一区二区| 国产精品久久久久久福利一牛影视| 国产自产2019最新不卡| 日韩欧美国产系列| 日本亚洲三级在线| 欧美日韩二区三区| 亚洲国产精品综合小说图片区| 日本乱人伦一区| 亚洲欧美色综合| 99久久久久久| 亚洲日本在线看| 91性感美女视频| 亚洲色图欧美在线| 99精品国产热久久91蜜凸| 亚洲欧美一区二区在线观看| 丰满亚洲少妇av| 1024国产精品| 色香色香欲天天天影视综合网| 最新热久久免费视频| 一本一本久久a久久精品综合麻豆| 国产精品久久久久桃色tv| 99视频精品免费视频| 亚洲欧美激情插| 欧美亚洲尤物久久| 视频一区欧美日韩| 欧美精品一区二区久久久| 国模一区二区三区白浆| 国产亚洲成aⅴ人片在线观看| 成人激情免费网站| 亚洲日本va在线观看| 色综合久久中文字幕| 亚洲一区二区五区| 欧美一区二区三区啪啪| 美日韩一级片在线观看| 精品国一区二区三区| 国产精品影视在线观看| 国产精品嫩草影院com| 欧美在线色视频| 日本不卡高清视频| 日本一区二区三区视频视频| 97久久精品人人澡人人爽| 亚洲高清三级视频| 日韩欧美国产三级电影视频| 国产宾馆实践打屁股91|