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

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

?? qpluginloader.cpp

?? QT 開發(fā)環(huán)境里面一個很重要的文件
?? 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 "qplatformdefs.h"#include "qplugin.h"#include "qpluginloader.h"#include <qfileinfo.h>#include "qlibrary_p.h"#include "qdebug.h"#ifndef QT_NO_LIBRARY/*!    \class QPluginLoader    \reentrant    \brief The QPluginLoader class loads a plugin at run-time.    \mainclass    \ingroup plugins    QPluginLoader provides access to a \l{How to Create Qt    Plugins}{Qt plugin}. A Qt plugin is stored in a shared library (a    DLL) and offers these benefits over shared libraries accessed    using QLibrary:    \list    \o QPluginLoader checks that a plugin is linked against the same       version of Qt as the application.    \o QPluginLoader provides direct access to a root component object       (instance()), instead of forcing you to resolve a C function manually.    \endlist    An instance of a QPluginLoader object operates on a single shared    library file, which we call a plugin. It provides access to the    functionality in the plugin in a platform-independent way. To    specify which plugin to load, either pass a file name in    the constructor or set it with setFileName().    The most important functions are load() to dynamically load the    plugin file, isLoaded() to check whether loading was successful,    and instance() to access the root component in the plugin. The    instance() function implicitly tries to load the plugin if it has    not been loaded yet. Multiple instances of QPluginLoader can be    used to access the same physical plugin.    Once loaded, plugins remain in memory until the application    terminates. You can attempt to unload a plugin using unload(),    but if other instances of QPluginLoader are using the same    library, the call will fail, and unloading will only happen when    every instance has called unload().    In order to speed up loading and validation of plugins, some of    the information that is collected during loading is cached in    persistent memory (through QSettings). For instance, the result    of a load operation (e.g. succeeded or failed) is stored in the    cache, so that subsequent load operations don't try to load an    invalid plugin. However, if the "last modified" timestamp of    a plugin has changed, the plugin's cache entry is invalidated    and the plugin is reloaded regardless of the values in the cache    entry. The cache entry is then updated with the new result of the    load operation.    This also means that the timestamp must be updated each time the    plugin or any dependent resources (such as a shared library) is    updated, since the dependent resources might influence the result    of loading a plugin.    See \l{How to Create Qt Plugins} for more information about    how to make your application extensible through plugins.    \sa QLibrary, {Plug & Paint Example}*//*!    Constructs a plugin loader with the given \a parent.*/QPluginLoader::QPluginLoader(QObject *parent)    : QObject(parent), d(0), did_load(false){}/*!    Constructs a plugin loader with the given \a parent that will    load the plugin specified by \a fileName.    To be loadable, the file's suffix must be a valid suffix for a    loadable library in accordance with the platform, e.g. \c .so on    Unix, - \c .dylib on Mac OS X, and \c .dll on Windows. The suffix    can be verified with QLibrary::isLibrary().    \sa setFileName()*/QPluginLoader::QPluginLoader(const QString &fileName, QObject *parent)    : QObject(parent), d(0), did_load(false){    setFileName(fileName);}/*!    Destroys the QPluginLoader object.    Unless unload() was called explicitly, the plugin stays in memory    until the application terminates.    \sa isLoaded(), unload()*/QPluginLoader::~QPluginLoader(){    if (d)        d->release();}/*!    Returns the root component object of the plugin. The plugin is    loaded if necessary. The function returns 0 if the plugin could    not be loaded or if the root component object could not be    instantiated.    If the root component object was destroyed, calling this function    creates a new instance.    The instance is not deleted when the QPluginLoader is destroyed.    The component object is a QObject. Use qobject_cast() to access    interfaces you are interested in.    \sa load()*/QObject *QPluginLoader::instance(){    if (!d)        return 0;    if (!d->pHnd)        load();    if (d->instance)        return d->instance();    return 0;}/*!    Loads the plugin and returns true if the plugin was loaded    successfully; otherwise returns false. Since instance() always    calls this function before resolving any symbols it is not    necessary to call it explicitly. In some situations you might want    the plugin loaded in advance, in which case you would use this    function.    \sa unload()*/bool QPluginLoader::load(){    if (!d)        return false;    if (did_load)        return d->pHnd && d->instance;    if (!d->isPlugin())        return false;    did_load = true;    return d->loadPlugin();}/*!    Unloads the plugin and returns true if the plugin could be    unloaded; otherwise returns false.    This happens automatically on application termination, so you    shouldn't normally need to call this function.    If other instances of QPluginLoader are using the same plugin, the    call will fail, and unloading will only happen when every instance    has called unload().    \sa instance(), load()*/bool QPluginLoader::unload(){    if (did_load) {        did_load = false;        return d->unload();    }    return false;}/*!    Returns true if the plugin is loaded; otherwise returns false.    \sa load() */bool QPluginLoader::isLoaded() const{    return d && d->pHnd && d->instance;}/*!    \property QPluginLoader::fileName    \brief the file name of the plugin    To be loadable, the file's suffix must be a valid suffix for a    loadable library in accordance with the platform, e.g. \c .so on    Unix, \c .dylib on Mac OS X, and \c .dll on Windows. The suffix    can be verified with QLibrary::isLibrary().    \sa load()*/void QPluginLoader::setFileName(const QString &fileName){#if defined(QT_SHARED)    if (d) {        d->release();        d = 0;        did_load = false;    }    d = QLibraryPrivate::findOrCreate(QFileInfo(fileName).canonicalFilePath());    if (d && d->pHnd && d->instance)        did_load = true;#else    if (qt_debug_component()) {        qWarning("Cannot load %s into a statically linked Qt library.",             (const char*)QFile::encodeName(fileName));    }    Q_UNUSED(fileName);#endif}QString QPluginLoader::fileName() const{    if (d)        return d->fileName;    return QString();}/*!    \since 4.2    Returns a text string with the description of the last error that occurred.*/QString QPluginLoader::errorString() const{    return d->errorString.isEmpty() ? tr("Unknown error") : d->errorString;}typedef QList<QtPluginInstanceFunction> StaticInstanceFunctionList;Q_GLOBAL_STATIC(StaticInstanceFunctionList, staticInstanceFunctionList)/*!    \relates QPluginLoader    Registers the given \a function with the plugin loader.*/void Q_CORE_EXPORT qRegisterStaticPluginInstanceFunction(QtPluginInstanceFunction function){    staticInstanceFunctionList()->append(function);}/*!    Returns a list of static plugin instances held by the plugin loader.*/QObjectList QPluginLoader::staticInstances(){    QObjectList instances;    StaticInstanceFunctionList *functions = staticInstanceFunctionList();    if (functions) {        for (int i = 0; i < functions->count(); ++i)            instances.append((*functions)[i]());    }    return instances;}#endif // QT_NO_LIBRARY

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.日韩在线| 国产精品久久久久久久久晋中 | 中文字幕一区二区三区蜜月| 一区二区三区视频在线看| 久久国产精品72免费观看| 97精品超碰一区二区三区| 久久只精品国产| 三级不卡在线观看| 91黄色小视频| 国产精品区一区二区三区| 久久不见久久见免费视频7| 欧美午夜精品一区二区蜜桃 | 不卡一区二区在线| 日韩欧美一级片| 亚洲黄一区二区三区| 蜜臀精品久久久久久蜜臀| 欧美午夜精品久久久久久孕妇 | 国产精品免费免费| 韩国三级中文字幕hd久久精品| 欧美日韩国产首页| 一区二区国产盗摄色噜噜| 色偷偷88欧美精品久久久| 国产精品国产自产拍高清av| 国产91精品一区二区麻豆网站| 日韩视频不卡中文| 欧美bbbbb| 日韩一区二区三区视频在线| 蜜臀精品久久久久久蜜臀| 日韩一区二区电影网| 午夜视频在线观看一区二区 | 色婷婷av一区二区三区软件| 成人欧美一区二区三区白人 | 日韩精品中午字幕| 日韩精品乱码免费| 日韩免费电影网站| 精品一区二区三区在线播放| 日韩久久免费av| 国产精品系列在线播放| 久久精品夜夜夜夜久久| 成人禁用看黄a在线| 亚洲欧美激情小说另类| av电影天堂一区二区在线| 亚洲精品自拍动漫在线| 91久久线看在观草草青青| 一区二区三区丝袜| 91精品国产综合久久精品| 久久91精品久久久久久秒播| 久久久久9999亚洲精品| 成人app网站| 亚洲精品videosex极品| 欧美日韩你懂的| 麻豆国产欧美一区二区三区| 久久久www免费人成精品| 成人国产精品免费观看动漫| 亚洲婷婷在线视频| 欧美精品色综合| 久久99久久久久| 国产日产欧美一区| 色噜噜偷拍精品综合在线| 亚洲国产欧美在线| 日韩精品一区二区三区四区| 成人理论电影网| 亚洲宅男天堂在线观看无病毒| 777色狠狠一区二区三区| 国产精品综合av一区二区国产馆| 国产精品高潮久久久久无| 欧美日韩一区中文字幕| 国产真实精品久久二三区| 亚洲色图欧洲色图| 欧美成人乱码一区二区三区| www.av亚洲| 蜜桃在线一区二区三区| 日韩一区在线看| 日韩你懂的在线播放| 91麻豆蜜桃一区二区三区| 麻豆久久久久久久| 亚洲美女视频一区| 精品国产一区二区三区忘忧草| 91一区二区三区在线观看| 精品一区二区三区在线视频| 一区二区三区影院| 国产蜜臀97一区二区三区| 在线播放中文一区| 99久精品国产| 久久99精品视频| 午夜精品久久久久久| 亚洲免费在线播放| 久久久久国色av免费看影院| 4438成人网| 91精彩视频在线| 成人av网站大全| 国产精品一二一区| 久久精品国产精品青草| 亚洲一区二区美女| 亚洲三级久久久| 欧美国产成人在线| 欧美不卡视频一区| 91精品国产色综合久久不卡电影| 99久久久久久99| 国产成人综合自拍| 久久99精品久久久久久国产越南 | 欧美一区二区高清| 欧美久久久影院| 欧美三级视频在线| 在线亚洲+欧美+日本专区| 国产成人精品免费视频网站| 精品一区二区免费| 久久99国产精品久久99果冻传媒| 午夜精品福利久久久| 亚洲国产一区二区三区| 亚洲午夜国产一区99re久久| 亚洲精品国产高清久久伦理二区| 日韩一区在线看| 亚洲乱码中文字幕| 亚洲激情图片qvod| 一区二区三区视频在线看| 亚洲精品视频自拍| 亚洲高清免费观看| 亚洲国产综合在线| 午夜精品国产更新| 麻豆免费看一区二区三区| 久久精品国产久精国产| 韩日精品视频一区| av激情亚洲男人天堂| 色呦呦日韩精品| 欧美日韩午夜影院| 91精品国产综合久久香蕉麻豆| 欧美一二三区在线| 亚洲精品在线观看网站| 国产天堂亚洲国产碰碰| 国产精品久久久久久久久动漫| 中文字幕亚洲在| 亚洲国产日韩a在线播放| 美女脱光内衣内裤视频久久影院| 精品亚洲porn| 不卡影院免费观看| 欧美色图片你懂的| 日韩欧美电影一区| 欧美国产禁国产网站cc| 亚洲综合999| 麻豆一区二区三| 97久久超碰国产精品| 7777精品伊人久久久大香线蕉 | 波多野结衣亚洲一区| 一本久道中文字幕精品亚洲嫩| 欧美日韩视频在线观看一区二区三区| 在线不卡欧美精品一区二区三区| 久久夜色精品国产噜噜av| 国产精品电影院| 日韩高清在线一区| 国产麻豆精品一区二区| 欧美在线不卡视频| 久久久蜜桃精品| 亚洲自拍偷拍麻豆| 国产成人av电影免费在线观看| 欧美亚洲综合在线| 精品国产青草久久久久福利| 亚洲视频网在线直播| 久99久精品视频免费观看| 色系网站成人免费| 久久精品免视看| 视频在线观看一区二区三区| 不卡一区中文字幕| 日韩一区二区三区四区五区六区 | 国产欧美一区二区精品秋霞影院| 一区二区三区四区中文字幕| 黑人精品欧美一区二区蜜桃| 在线一区二区三区| 亚洲国产精品高清| 久久er精品视频| 欧美久久久影院| 一级中文字幕一区二区| 岛国一区二区在线观看| 日韩欧美你懂的| 一区二区三区资源| 成人免费视频app| 久久男人中文字幕资源站| 亚洲妇女屁股眼交7| 懂色一区二区三区免费观看| 亚洲精品一区二区三区99| 五月天亚洲精品| 色欧美片视频在线观看 | 91视频一区二区| 久久综合色鬼综合色| 免费成人在线网站| 在线成人高清不卡| 亚洲成人免费在线| 欧美性一二三区| 一片黄亚洲嫩模| 91网页版在线| 亚洲女子a中天字幕| 不卡av电影在线播放| 国产欧美日韩另类一区| 国产在线播精品第三| 久久久久国产精品免费免费搜索| 精品一区二区三区的国产在线播放| 日韩欧美在线1卡| 男人的j进女人的j一区| 日韩欧美国产电影| 国产原创一区二区|