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

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

?? qresource.cpp

?? QT 開發環境里面一個很重要的文件
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
}/*!    Returns direct access to a read only segment of data that this resource    represents. If the resource is compressed the data returns is    compressed and qUncompress() must be used to access the data. If the    resource is a directory 0 is returned.    \sa size(), isCompressed(), isFile()*/const uchar *QResource::data() const{    Q_D(const QResource);    d->ensureInitialized();    return d->data;}/*!    Returns true if the resource represents a directory and thus may have    children() in it, false if it represents a file.    \sa isFile()*/bool QResource::isDir() const{    Q_D(const QResource);    d->ensureInitialized();    return d->container;}/*!    Returns a list of all resources in this directory, if the resource    represents a file the list will be empty.    \sa isDir()*/QStringList QResource::children() const{    Q_D(const QResource);    d->ensureChildren();    return d->children;}/*!  Adds \a path to the search paths searched in to find resources that are  not specified with an absolute path. The \a path must be an absolute  path (start with \c{/}).  The default search path is to search only in the root (\c{:/}). The last  path added will be consulted first upon next QResource creation.*/voidQResource::addSearchPath(const QString &path){    if (!path.startsWith(QLatin1Char('/'))) {        qWarning("QDir::addResourceSearchPath: Search paths must be absolute (start with /) [%s]",                 path.toLocal8Bit().data());        return;    }    QMutexLocker lock(resourceMutex());    resourceSearchPaths()->prepend(path);}/*!  Returns the current search path list. This list is consulted when  creating a relative resource.  \sa addSearchPath()*/QStringListQResource::searchPaths(){    QMutexLocker lock(resourceMutex());    return *resourceSearchPaths();}inline int QResourceRoot::hash(int node) const{    if(!node) //root        return 0;    const int offset = findOffset(node);    int name_offset = (tree[offset+0] << 24) + (tree[offset+1] << 16) +                      (tree[offset+2] << 8) + (tree[offset+3] << 0);    name_offset += 2; //jump past name length    return (names[name_offset+0] << 24) + (names[name_offset+1] << 16) +           (names[name_offset+2] << 8) + (names[name_offset+3] << 0);}inline QString QResourceRoot::name(int node) const{    if(!node) // root        return QString();    const int offset = findOffset(node);    QString ret;    int name_offset = (tree[offset+0] << 24) + (tree[offset+1] << 16) +                      (tree[offset+2] << 8) + (tree[offset+3] << 0);    const short name_length = (names[name_offset+0] << 8) +                              (names[name_offset+1] << 0);    name_offset += 2;    name_offset += 4; //jump past hash    for(int i = 0; i < name_length*2; i+=2)        ret += QChar(names[name_offset+i+1], names[name_offset+i]);    return ret;}int QResourceRoot::findNode(const QString &_path, const QLocale &locale) const{    QString path = _path;    {        QString root = mappingRoot();        if(!root.isEmpty()) {            if(root == path) {                path = QLatin1String("/");            } else {                if(!root.endsWith(QLatin1String("/")))                    root += QLatin1String("/");                if(path.size() >= root.size() && path.startsWith(root))                    path = path.mid(root.length()-1);                if(path.isEmpty())                    path = QLatin1String("/");            }        }    }    if(path == QLatin1String("/"))        return 0;    //the root node is always first    int child_count = (tree[6] << 24) + (tree[7] << 16) +                      (tree[8] << 8) + (tree[9] << 0);    int child       = (tree[10] << 24) + (tree[11] << 16) +                      (tree[12] << 8) + (tree[13] << 0);    //now iterate up the tree    int node = -1;    QStringList segments = path.split(QLatin1Char('/'), QString::SkipEmptyParts);    for(int i = 0; child_count && i < segments.size(); ++i) {        const QString &segment = segments[i];        const int h = qHash(segment);        //do the binary search for the hash        int l = 0, r = child_count-1;        int sub_node = (l+r+1)/2;        while(r != l) {            const int sub_node_hash = hash(child+sub_node);            if(h == sub_node_hash)                break;            else if(h < sub_node_hash)                r = sub_node - 1;            else                l = sub_node;            sub_node = (l + r + 1) / 2;        }        sub_node += child;        //now do the "harder" compares        bool found = false;        if(hash(sub_node) == h) {            while(sub_node > child && hash(sub_node-1) == h) //backup for collisions                --sub_node;            for(; sub_node < child+child_count && hash(sub_node) == h; ++sub_node) { //here we go...                if(name(sub_node) == segment) {                    found = true;                    int offset = findOffset(sub_node) + 4; //jump past name                    const short flags = (tree[offset+0] << 8) +                                        (tree[offset+1] << 0);                    offset += 2;                    if(i == segments.size()-1) {                        if(!(flags & Directory)) {                            const short country = (tree[offset+0] << 8) +                                                  (tree[offset+1] << 0);                            offset += 2;                            const short language = (tree[offset+0] << 8) +                                                   (tree[offset+1] << 0);                            offset += 2;                            if(country == locale.country() && language == locale.language())                                return sub_node;                            else if((country == QLocale::AnyCountry && language == locale.language()) ||                                    (country == QLocale::AnyCountry && language == QLocale::C && node == -1))                                node = sub_node;                            continue;                        } else {                            return sub_node;                        }                    }                    if(!(flags & Directory))                        return -1;                    child_count = (tree[offset+0] << 24) + (tree[offset+1] << 16) +                                  (tree[offset+2] << 8) + (tree[offset+3] << 0);                    offset += 4;                    child = (tree[offset+0] << 24) + (tree[offset+1] << 16) +                            (tree[offset+2] << 8) + (tree[offset+3] << 0);                    break;                }            }        }        if(!found)            break;    }    return node;}short QResourceRoot::flags(int node) const{    if(node == -1)        return 0;    const int offset = findOffset(node) + 4; //jump past name    return (tree[offset+0] << 8) + (tree[offset+1] << 0);}const uchar *QResourceRoot::data(int node, qint64 *size) const{    if(node == -1) {        *size = 0;        return 0;    }    int offset = findOffset(node) + 4; //jump past name    const short flags = (tree[offset+0] << 8) + (tree[offset+1] << 0);    offset += 2;    offset += 4; //jump past locale    if(!(flags & Directory)) {        const int data_offset = (tree[offset+0] << 24) + (tree[offset+1] << 16) +                                (tree[offset+2] << 8) + (tree[offset+3] << 0);        const uint data_length = (payloads[data_offset+0] << 24) + (payloads[data_offset+1] << 16) +                                 (payloads[data_offset+2] << 8) + (payloads[data_offset+3] << 0);        const uchar *ret = payloads+data_offset+4;        *size = data_length;        return ret;    }    *size = 0;    return 0;}QStringList QResourceRoot::children(int node) const{    if(node == -1)        return QStringList();    int offset = findOffset(node) + 4; //jump past name    const short flags = (tree[offset+0] << 8) + (tree[offset+1] << 0);    offset += 2;    QStringList ret;    if(flags & Directory) {        const int child_count = (tree[offset+0] << 24) + (tree[offset+1] << 16) +                                (tree[offset+2] << 8) + (tree[offset+3] << 0);        offset += 4;        const int child_off = (tree[offset+0] << 24) + (tree[offset+1] << 16) +                              (tree[offset+2] << 8) + (tree[offset+3] << 0);        for(int i = child_off; i < child_off+child_count; ++i)            ret << name(i);    }    return ret;}bool QResourceRoot::mappingRootSubdir(const QString &path, QString *match) const{    const QString root = mappingRoot();    if(!root.isEmpty()) {        const QStringList root_segments = root.split(QLatin1Char('/'), QString::SkipEmptyParts),                          path_segments = path.split(QLatin1Char('/'), QString::SkipEmptyParts);        if(path_segments.size() <= root_segments.size()) {            int matched = 0;            for(int i = 0; i < path_segments.size(); ++i) {                if(root_segments[i] != path_segments[i])                    break;                ++matched;            }            if(matched == path_segments.size()) {                if(match && root_segments.size() > matched)                    *match = root_segments.at(matched);                return true;            }        }    }    return false;}Q_CORE_EXPORT bool qRegisterResourceData(int version, const unsigned char *tree,                                         const unsigned char *name, const unsigned char *data){    QMutexLocker lock(resourceMutex());    if(version == 0x01 && resourceList()) {        bool found = false;        QResourceRoot res(tree, name, data);        for(int i = 0; i < resourceList()->size(); ++i) {            if(*resourceList()->at(i) == res) {                found = true;                break;            }        }        if(!found) {            QResourceRoot *root = new QResourceRoot(tree, name, data);            root->ref.ref();            resourceList()->append(root);        }        return true;    }    return false;}Q_CORE_EXPORT bool qUnregisterResourceData(int version, const unsigned char *tree,                                           const unsigned char *name, const unsigned char *data){    QMutexLocker lock(resourceMutex());    if(version == 0x01 && resourceList()) {        QResourceRoot res(tree, name, data);        for(int i = 0; i < resourceList()->size(); ) {            if(*resourceList()->at(i) == res) {                QResourceRoot *root = resourceList()->takeAt(i);                if(!root->ref.deref())                    delete root;            } else {                ++i;            }        }        return true;    }    return false;}//run time resource creation#if defined(Q_OS_UNIX)#define QT_USE_MMAP#endif// most of the headers below are already included in qplatformdefs.h// also this lacks Large File support but that's probably irrelevant#if defined(QT_USE_MMAP)// for mmap#include <sys/mman.h>#include <errno.h>#endifclass QDynamicResourceRoot: public QResourceRoot{    QString root, fileName;    // for mmap'ed files, this is what needs to be unmapped.    uchar *unmapPointer;    unsigned int unmapLength;    bool fromMM;public:    inline QDynamicResourceRoot(const QString &_root) : root(_root), unmapPointer(0), unmapLength(0) { }    ~QDynamicResourceRoot() {        if (unmapPointer && unmapLength) {#if defined(QT_USE_MMAP)            if(fromMM)                munmap((char*)unmapPointer, unmapLength);            else#endif                delete [] unmapPointer;            unmapPointer = 0;            unmapLength = 0;        }    }    QString mappingFile() const { return fileName; }    virtual QString mappingRoot() const { return root; }    virtual bool isDynamicRoot() const { return true; }    bool registerSelf(const QString &f) {        bool ok = false;#ifdef QT_USE_MMAP#ifndef MAP_FILE#define MAP_FILE 0#endif#ifndef MAP_FAILED#define MAP_FAILED -1#endif        int fd = QT_OPEN(QFile::encodeName(f), O_RDONLY,#if defined(Q_OS_WIN)                         _S_IREAD | _S_IWRITE#else                         0666#endif            );        if (fd >= 0) {            struct stat st;            if (!fstat(fd, &st)) {                uchar *ptr;                ptr = reinterpret_cast<uchar *>(                    mmap(0, st.st_size,             // any address, whole file                         PROT_READ,                 // read-only memory                         MAP_FILE | MAP_PRIVATE,    // swap-backed map from file                         fd, 0));                   // from offset 0 of fd                if (ptr && ptr != reinterpret_cast<uchar *>(MAP_FAILED)) {                    unmapPointer = ptr;                    unmapLength = st.st_size;                    fromMM = true;                    ok = true;                }            }            ::close(fd);        }#endif // QT_USE_MMAP        if(!ok) {            QFile file(f);            if (!file.exists())                return false;            unmapLength = file.size();            unmapPointer = new uchar[unmapLength];            if (file.open(QIODevice::ReadOnly))                ok = (unmapLength == (uint)file.read((char*)unmapPointer, unmapLength));            if (!ok) {                delete [] unmapPointer;                unmapPointer = 0;                unmapLength = 0;                return false;            }            fromMM = false;        }        if(!ok) {	    fileName = QString();            return false;	}	fileName = f;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲第一主播视频| 99久久精品国产网站| 91丝袜美女网| 日韩精品一区二区三区在线| 中文在线一区二区| 青青草成人在线观看| 99国产精品视频免费观看| 欧美电影免费观看高清完整版在| 亚洲同性gay激情无套| 国产原创一区二区三区| 69堂精品视频| 亚洲精品第1页| 不卡的电视剧免费网站有什么| 91精品国产一区二区三区蜜臀| 一区二区三区在线免费视频 | 舔着乳尖日韩一区| 91在线视频网址| 日本一区二区三级电影在线观看| 麻豆91小视频| 7777精品伊人久久久大香线蕉的| 一区二区三区在线观看动漫 | 精品一区二区综合| 欧美高清视频www夜色资源网| 亚洲色图欧美激情| 成人国产精品免费观看| 国产欧美日本一区视频| 国产乱码一区二区三区| 亚洲精品一区二区三区福利| 青青草精品视频| 欧美一区二区三区成人| 午夜国产精品影院在线观看| 欧美日韩一本到| 亚洲chinese男男1069| 欧美日韩在线直播| 亚洲成a人v欧美综合天堂下载| 欧美色手机在线观看| 一区二区三区国产精华| 欧美性大战久久久| 亚洲综合久久av| 欧美色中文字幕| 午夜成人在线视频| 日韩欧美中文字幕一区| 精品一区二区久久久| 国产丝袜在线精品| 国产超碰在线一区| 中文字幕视频一区二区三区久| 成人午夜激情在线| 国产精品每日更新| 91国偷自产一区二区开放时间 | 一区二区国产视频| 欧美日韩视频在线第一区 | 国产精品青草久久| 色94色欧美sute亚洲线路一ni| 亚洲综合丝袜美腿| 欧美一级片免费看| 国产毛片精品国产一区二区三区| 国产日韩欧美精品电影三级在线| av电影天堂一区二区在线| 亚洲黄色录像片| 日韩一区二区免费电影| 国产高清在线精品| 亚洲美女视频在线| 日韩三级伦理片妻子的秘密按摩| 国产成人午夜片在线观看高清观看| 亚洲欧美综合色| 91精品国产综合久久小美女| 国产成人免费视频精品含羞草妖精| 亚洲素人一区二区| 欧美一区二区三区喷汁尤物| 成人开心网精品视频| 亚洲国产精品久久艾草纯爱| 久久亚洲二区三区| 欧美系列亚洲系列| 国产传媒久久文化传媒| 亚洲国产精品久久久久秋霞影院| 2021中文字幕一区亚洲| 色妹子一区二区| 国产一二三精品| 亚洲第一狼人社区| 国产精品久久久久永久免费观看| 欧美日本免费一区二区三区| 成人黄色免费短视频| 热久久一区二区| 亚洲综合色区另类av| 久久精品视频一区二区| 欧美男男青年gay1069videost | 欧美自拍丝袜亚洲| 国产成+人+日韩+欧美+亚洲| 天堂一区二区在线| 亚洲欧美日韩久久精品| 国产日产精品一区| 日韩亚洲欧美在线| 欧美日韩国产精品成人| youjizz久久| 国产精品一区二区在线观看网站| 亚洲大片在线观看| 亚洲女同一区二区| 中文久久乱码一区二区| 精品av久久707| 3atv一区二区三区| 在线免费亚洲电影| 91麻豆免费在线观看| 国产成人丝袜美腿| 韩日精品视频一区| 久久国产麻豆精品| 久久激情综合网| 美日韩一区二区| 午夜视频在线观看一区| 亚洲bdsm女犯bdsm网站| 亚洲精品菠萝久久久久久久| 中文字幕一区二区三区视频| 国产女人aaa级久久久级| 久久嫩草精品久久久久| 精品奇米国产一区二区三区| 欧美一级片在线观看| 日韩一级大片在线| 亚洲精品一线二线三线| 久久久影院官网| 国产蜜臀av在线一区二区三区| 国产日韩欧美高清| 中文字幕在线观看不卡视频| 国产精品美女视频| 自拍偷自拍亚洲精品播放| 国产精品灌醉下药二区| 亚洲精品成人少妇| 亚洲1区2区3区视频| 美女www一区二区| 国产麻豆91精品| 成人h版在线观看| 色哟哟一区二区在线观看| 欧美无乱码久久久免费午夜一区| 欧美日韩精品一区二区| 日韩欧美国产综合在线一区二区三区| 在线播放/欧美激情| 欧美va天堂va视频va在线| 久久久www成人免费毛片麻豆| 国产精品三级电影| 一区二区三区视频在线观看| 婷婷亚洲久悠悠色悠在线播放| 麻豆国产91在线播放| 国产成人av在线影院| 97久久超碰国产精品| 91精品国产入口| 久久久久久久久久久电影| 中文字幕在线一区二区三区| 亚洲成人你懂的| 国产一区在线精品| 91麻豆国产香蕉久久精品| 欧美久久久久久蜜桃| 日本一区二区三区视频视频| 亚洲一区二区三区四区在线| 国模无码大尺度一区二区三区| 不卡在线观看av| 91精品免费在线观看| 国产精品亲子伦对白| 男女男精品网站| 91蜜桃网址入口| 久久品道一品道久久精品| 亚洲一区二区三区中文字幕在线| 国产一区在线不卡| 欧美日韩国产小视频在线观看| 久久久久青草大香线综合精品| 亚洲综合色网站| 成人美女在线观看| 在线不卡一区二区| 亚洲欧美成aⅴ人在线观看| 久久99热这里只有精品| 在线精品视频小说1| 中文字幕成人网| 麻豆国产91在线播放| 欧美日韩一区二区不卡| 中文字幕二三区不卡| 久久精品久久99精品久久| 日本道在线观看一区二区| 国产日韩精品视频一区| 麻豆精品精品国产自在97香蕉| 在线观看欧美日本| 国产精品电影院| 国产一区二区在线免费观看| 91精品国产麻豆| 亚洲成人你懂的| 欧美性大战久久| 一区二区三区**美女毛片| 国v精品久久久网| 精品福利二区三区| 麻豆国产一区二区| 在线播放91灌醉迷j高跟美女| 亚洲日本欧美天堂| 99久久精品国产网站| 国产精品久久毛片a| 国产成人自拍高清视频在线免费播放| 欧美一级一区二区| 美女在线视频一区| 91精品国产欧美一区二区| 午夜精品福利视频网站| 欧美日韩中字一区| 午夜亚洲国产au精品一区二区| 日本丰满少妇一区二区三区| 国产精品久久久久影院老司| 粉嫩一区二区三区性色av|