From b7be632d5e777dfdfd7d6a31ba083e3ac653603d Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Sun, 27 May 2012 11:38:36 +0200 Subject: Expose the plugins meta data in the plugin loader add a metaData() method to QPluginLoader so that applications can query the plugins meta data without having to load the plugin. Change-Id: Ic3ebb35fd3c403926326e8dd1de4176b0c48dbef Reviewed-by: Thiago Macieira --- src/corelib/plugin/qpluginloader.cpp | 17 +++++++++++++++++ src/corelib/plugin/qpluginloader.h | 2 ++ 2 files changed, 19 insertions(+) (limited to 'src') diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp index f198f108da..a33c4e2996 100644 --- a/src/corelib/plugin/qpluginloader.cpp +++ b/src/corelib/plugin/qpluginloader.cpp @@ -172,6 +172,23 @@ QObject *QPluginLoader::instance() return d->inst.data(); } +/*! + Returns the meta data for this plugin. The meta data is data specified + in a json format using the Q_PLUGIN_METADATA() macro when compiling + the plugin. + + The meta data can be queried in a fast and inexpensive way without + actually loading the plugin. This makes it possible to e.g. store + capabilities of the plugin in there, and make the decision whether to + load the plugin dependent on this meta data. + */ +QJsonObject QPluginLoader::metaData() const +{ + if (!d) + return QJsonObject(); + return d->metaData; +} + /*! Loads the plugin and returns true if the plugin was loaded successfully; otherwise returns false. Since instance() always diff --git a/src/corelib/plugin/qpluginloader.h b/src/corelib/plugin/qpluginloader.h index 0e62d3660b..99b44fd559 100644 --- a/src/corelib/plugin/qpluginloader.h +++ b/src/corelib/plugin/qpluginloader.h @@ -56,6 +56,7 @@ QT_BEGIN_HEADER QT_BEGIN_NAMESPACE class QLibraryPrivate; +class QJsonObject; class Q_CORE_EXPORT QPluginLoader : public QObject { @@ -68,6 +69,7 @@ public: ~QPluginLoader(); QObject *instance(); + QJsonObject metaData() const; static QObjectList staticInstances(); -- cgit v1.2.3