summaryrefslogtreecommitdiffstats
path: root/src/corelib/plugin/qpluginloader.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@nokia.com>2012-02-06 23:36:17 +0100
committerQt by Nokia <qt-info@nokia.com>2012-02-15 17:27:37 +0100
commit7184456f9a26a9c07a689c15b415ddf82eb000b7 (patch)
tree076d42ad3fd6f08a1cbef21ee6811a3fa951850b /src/corelib/plugin/qpluginloader.cpp
parent556dd0228aca07dfe8443fd99e9f2ead4e13ab22 (diff)
Implement new plugin mechanism
moc can now embed meta information about the plugin inside the plugin itself. This information can be queried by Qt without having to load the plugin. Source compatibility with the old plugin loading mechanism is still there, but will be removed before Qt 5.0. Change-Id: I03e4196ddfed07d0fe94acca40d5de8a6ce7f920 Reviewed-by: João Abecasis <joao.abecasis@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/plugin/qpluginloader.cpp')
-rw-r--r--src/corelib/plugin/qpluginloader.cpp29
1 files changed, 19 insertions, 10 deletions
diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp
index 4ef04f2ea3..d652b251f1 100644
--- a/src/corelib/plugin/qpluginloader.cpp
+++ b/src/corelib/plugin/qpluginloader.cpp
@@ -291,8 +291,8 @@ QString QPluginLoader::errorString() const
return (!d || d->errorString.isEmpty()) ? tr("Unknown error") : d->errorString;
}
-typedef QList<QtPluginInstanceFunction> StaticInstanceFunctionList;
-Q_GLOBAL_STATIC(StaticInstanceFunctionList, staticInstanceFunctionList)
+typedef QVector<QStaticPlugin> StaticPluginList;
+Q_GLOBAL_STATIC(StaticPluginList, staticPluginList)
/*! \since 4.4
@@ -329,13 +329,13 @@ QLibrary::LoadHints QPluginLoader::loadHints() const
/*!
\relates QPluginLoader
- \since 4.4
+ \since 5.0
- Registers the given \a function with the plugin loader.
+ Registers the given \a plugin with the plugin loader.
*/
-void Q_CORE_EXPORT qRegisterStaticPluginInstanceFunction(QtPluginInstanceFunction function)
+void Q_CORE_EXPORT qRegisterStaticPluginFunction(QStaticPlugin plugin)
{
- staticInstanceFunctionList()->append(function);
+ staticPluginList()->append(plugin);
}
/*!
@@ -345,14 +345,23 @@ void Q_CORE_EXPORT qRegisterStaticPluginInstanceFunction(QtPluginInstanceFunctio
QObjectList QPluginLoader::staticInstances()
{
QObjectList instances;
- StaticInstanceFunctionList *functions = staticInstanceFunctionList();
- if (functions) {
- for (int i = 0; i < functions->count(); ++i)
- instances.append((*functions)[i]());
+ const StaticPluginList *plugins = staticPluginList();
+ if (plugins) {
+ for (int i = 0; i < plugins->size(); ++i)
+ instances += plugins->at(i).instance();
}
return instances;
}
+
+QVector<QStaticPlugin> QLibraryPrivate::staticPlugins()
+{
+ StaticPluginList *plugins = staticPluginList();
+ if (plugins)
+ return *plugins;
+ return QVector<QStaticPlugin>();
+}
+
QT_END_NAMESPACE
#endif // QT_NO_LIBRARY