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

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

?? qfactoryloader.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 "qfactoryloader_p.h"#ifndef QT_NO_LIBRARY#include "qfactoryinterface.h"#include "qmap.h"#include <qdir.h>#include <qsettings.h>#include <qdebug.h>#include "qmutex.h"#include "qplugin.h"#include "qpluginloader.h"#include "private/qobject_p.h"#include "private/qcoreapplication_p.h"class QFactoryLoaderPrivate : public QObjectPrivate{    Q_DECLARE_PUBLIC(QFactoryLoader)public:    QFactoryLoaderPrivate(){}    mutable QMutex mutex;    QByteArray iid;    QList<QLibraryPrivate*> libraryList;    QMap<QString,QLibraryPrivate*> keyMap;    QStringList keyList;};QFactoryLoader::QFactoryLoader(const char *iid,                               const QStringList &paths, const QString &suffix,                               Qt::CaseSensitivity cs)    : QObject(*new QFactoryLoaderPrivate){    moveToThread(QCoreApplicationPrivate::mainThread());    Q_D(QFactoryLoader);    d->iid = iid;    QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));    for (int i = 0; i < paths.count(); ++i) {        QString path = paths.at(i) + suffix;        if (!QDir(path).exists(QLatin1String(".")))            continue;        QStringList plugins = QDir(path).entryList(QDir::Files);        QLibraryPrivate *library = 0;        for (int j = 0; j < plugins.count(); ++j) {            QString fileName = QDir::cleanPath(path + QLatin1Char('/') + plugins.at(j));            if (qt_debug_component()) {                qDebug() << "QFactoryLoader::QFactoryLoader() looking at" << fileName;            }            library = QLibraryPrivate::findOrCreate(QFileInfo(fileName).canonicalFilePath());            if (!library->isPlugin()) {                library->release();                if (qt_debug_component()) {                    qDebug() << "         not a plugin";                }                continue;            }            QString regkey = QString::fromLatin1("Qt Factory Cache %1.%2/%3:/%4")                             .arg((QT_VERSION & 0xff0000) >> 16)                             .arg((QT_VERSION & 0xff00) >> 8)                             .arg(QLatin1String(iid))                             .arg(fileName);            QStringList reg, keys;            reg = settings.value(regkey).toStringList();            if (reg.count() && library->lastModified == reg[0]) {                keys = reg;                keys.removeFirst();            } else {                if (!library->loadPlugin()) {                    if (qt_debug_component()) {                        qDebug() << "           could not load";                    }                    library->release();                    continue;                }                QObject *instance = library->instance();                if (!instance)                    // ignore plugins that have a valid signature but cannot be loaded.                    continue;                QFactoryInterface *factory = qobject_cast<QFactoryInterface*>(instance);                if (instance && factory && instance->qt_metacast(iid))                    keys = factory->keys();                if (keys.isEmpty())                    library->unload();                reg.clear();                reg << library->lastModified;                reg += keys;                settings.setValue(regkey, reg);            }            if (qt_debug_component()) {                qDebug() << "keys" << keys;            }            if (keys.isEmpty()) {                library->release();                continue;            }            d->libraryList += library;            for (int k = 0; k < keys.count(); ++k) {                // first come first serve, unless the first                // library was built with a future Qt version,                // whereas the new one has a Qt version that fits                // better                QString key = keys.at(k);                if (!cs)                    key = key.toLower();                QLibraryPrivate *previous = d->keyMap.value(key);                if (!previous || (previous->qt_version > QT_VERSION && library->qt_version <= QT_VERSION)) {                    d->keyMap[key] = library;                    d->keyList += keys.at(k);                }            }        }    }}QFactoryLoader::~QFactoryLoader(){    Q_D(QFactoryLoader);    for (int i = 0; i < d->libraryList.count(); ++i)        d->libraryList.at(i)->release();}QStringList QFactoryLoader::keys() const{    Q_D(const QFactoryLoader);    QMutexLocker locker(&d->mutex);    QStringList keys = d->keyList;    QObjectList instances = QPluginLoader::staticInstances();    for (int i = 0; i < instances.count(); ++i)        if (QFactoryInterface *factory = qobject_cast<QFactoryInterface*>(instances.at(i)))            if (instances.at(i)->qt_metacast(d->iid))                    keys += factory->keys();    return keys;}QObject *QFactoryLoader::instance(const QString &key) const{    Q_D(const QFactoryLoader);    QMutexLocker locker(&d->mutex);    QObjectList instances = QPluginLoader::staticInstances();    for (int i = 0; i < instances.count(); ++i)        if (QFactoryInterface *factory = qobject_cast<QFactoryInterface*>(instances.at(i)))            if (instances.at(i)->qt_metacast(d->iid) && factory->keys().contains(key, Qt::CaseInsensitive))                return instances.at(i);    if (QLibraryPrivate* library = d->keyMap.value(key)) {        if (library->instance || library->loadPlugin()) {            if (QObject *obj = library->instance()) {                if (obj && !obj->parent())                    obj->moveToThread(QCoreApplicationPrivate::mainThread());                return obj;            }        }    }    return 0;}#endif // QT_NO_LIBRARY

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一卡二卡| 亚洲综合激情另类小说区| 中文字幕av一区二区三区免费看 | 欧亚一区二区三区| 日韩欧美久久一区| 亚洲日韩欧美一区二区在线| 麻豆中文一区二区| 91国产成人在线| 国产精品麻豆视频| 韩国在线一区二区| 日韩欧美一级二级| 亚洲国产精品视频| 色婷婷av一区二区三区大白胸| 日韩精品最新网址| 午夜成人免费电影| 色婷婷精品大在线视频| 亚洲国产电影在线观看| 国内精品视频666| 精品国产第一区二区三区观看体验| 一区二区三区国产精华| 不卡视频在线看| 国产精品久久国产精麻豆99网站 | 国产成人一级电影| 日韩精品一区二区三区视频播放| 亚洲午夜一区二区| 91传媒视频在线播放| 中文字幕一区二区日韩精品绯色| 国产喷白浆一区二区三区| 亚洲精品成a人| 成人国产精品免费观看| 久久九九全国免费| 国产精品资源站在线| 久久精品视频免费| 从欧美一区二区三区| 久久精品视频在线看| 国产在线精品免费| 国产亚洲一区二区三区四区| 紧缚奴在线一区二区三区| 日韩欧美国产麻豆| 韩国精品免费视频| 久久久久久电影| 国产成人av网站| 中文字幕亚洲电影| 色呦呦国产精品| 一区二区三区美女视频| 欧美亚洲国产一区在线观看网站| 一区二区三区免费网站| 6080国产精品一区二区| 久久精品国产色蜜蜜麻豆| 欧美精品一区二区在线观看| 国产1区2区3区精品美女| 国产精品大尺度| 欧美亚日韩国产aⅴ精品中极品| 亚洲一线二线三线久久久| 91.com视频| 久久成人麻豆午夜电影| 欧美国产丝袜视频| 日本精品一区二区三区高清 | 欧美在线影院一区二区| 亚洲第一激情av| 日韩欧美在线影院| 懂色av一区二区夜夜嗨| 亚洲日本青草视频在线怡红院| 欧美日韩免费视频| 日韩av不卡在线观看| 国产夜色精品一区二区av| 一本色道久久综合亚洲aⅴ蜜桃 | 国产真实精品久久二三区| 中文字幕乱码久久午夜不卡 | 91麻豆精品国产| 国产一区二三区好的| 国产精品国产自产拍高清av王其| 欧美人动与zoxxxx乱| 国产精品综合av一区二区国产馆| 亚洲免费观看高清完整版在线| 337p亚洲精品色噜噜狠狠| 国产精一品亚洲二区在线视频| 最新日韩av在线| 精品欧美一区二区久久| 91久久免费观看| 国产在线播放一区| 亚洲高清久久久| 国产精品初高中害羞小美女文| 欧美一二三区在线观看| 91在线观看免费视频| 激情五月激情综合网| 一区二区三区视频在线看| 国产亚洲精品aa| 欧美一区二区三区在| 欧美综合久久久| 高清日韩电视剧大全免费| 免费高清不卡av| 亚洲国产一区二区三区 | 日韩欧美在线综合网| 色婷婷av一区二区三区软件| 国产精品一二三四五| 欧美经典一区二区| 中文字幕一区二区三区不卡在线 | 日韩欧美一级精品久久| 色综合激情久久| 岛国精品一区二区| 久久精品国产亚洲高清剧情介绍| 亚洲一区在线电影| 亚洲视频一二区| 亚洲国产精品二十页| 久久综合九色综合97_久久久| 欧美理论片在线| 日本韩国视频一区二区| 99久久99久久久精品齐齐| 国产馆精品极品| 国产精品性做久久久久久| 另类中文字幕网| 麻豆精品久久久| 蜜臀精品久久久久久蜜臀| 天天色综合成人网| 天天做天天摸天天爽国产一区| 亚洲综合色视频| 午夜日韩在线电影| 亚洲午夜久久久久久久久久久| 亚洲午夜电影网| 亚洲第一主播视频| 男男视频亚洲欧美| 久草热8精品视频在线观看| 久久国产麻豆精品| 国产一区不卡在线| 豆国产96在线|亚洲| www.一区二区| 在线观看精品一区| 欧美久久久久中文字幕| 欧美一级二级三级蜜桃| 日韩亚洲欧美在线| 久久午夜色播影院免费高清| 国产日韩精品一区| 亚洲欧洲精品成人久久奇米网| 亚洲视频香蕉人妖| 五月婷婷激情综合| 精品在线视频一区| 国产成人自拍网| 色综合久久99| 欧美一区二区三区免费观看视频| 精品日韩一区二区三区免费视频| 精品福利二区三区| 亚洲欧洲精品天堂一级| 亚洲成人动漫精品| 激情丁香综合五月| 色综合中文字幕国产 | 亚洲国产综合在线| 激情综合色综合久久综合| 粉嫩在线一区二区三区视频| aaa欧美色吧激情视频| 欧美午夜不卡在线观看免费| 日韩一区二区三区在线视频| 国产清纯美女被跳蛋高潮一区二区久久w| 国产精品不卡在线| 日本不卡在线视频| 91亚洲国产成人精品一区二区三 | 欧美国产成人精品| 婷婷激情综合网| 成人一级视频在线观看| 欧美日韩国产天堂| 亚洲国产成人私人影院tom| 午夜精品视频在线观看| 国产黄色91视频| 欧美日韩精品三区| 国产精品美女www爽爽爽| 日本不卡视频在线| 色噜噜夜夜夜综合网| 久久久久久9999| 免费成人美女在线观看| 在线观看一区日韩| 国产欧美视频一区二区三区| 婷婷开心久久网| 91国产视频在线观看| 国产精品欧美一级免费| 精彩视频一区二区| 91精品国产入口在线| 亚洲乱码国产乱码精品精小说 | 亚洲成人精品在线观看| 国产激情一区二区三区四区| 欧美剧情片在线观看| 最新国产成人在线观看| 国产福利91精品一区二区三区| 欧美一级日韩免费不卡| 亚洲午夜精品17c| 99在线精品视频| 国产欧美日韩三级| 国产自产v一区二区三区c| 欧美一区二区三区成人| 一级特黄大欧美久久久| 色综合一个色综合亚洲| 国产欧美一区二区三区在线老狼| 麻豆精品久久精品色综合| 欧美一级一级性生活免费录像| 亚洲国产美女搞黄色| 色老汉av一区二区三区| 一区二区三区在线播放| 色爱区综合激月婷婷| 亚洲人成影院在线观看| 91麻豆精品在线观看| 日韩美女久久久|