summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@nokia.com>2012-05-27 11:38:36 +0200
committerQt by Nokia <qt-info@nokia.com>2012-06-05 08:58:00 +0200
commitb7be632d5e777dfdfd7d6a31ba083e3ac653603d (patch)
tree08f9c479d5a87151a5274dd2e85901e62bbd22c8 /src
parent87e50e079ea226af95699438b38ee5f4574aae68 (diff)
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 <thiago.macieira@intel.com>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/plugin/qpluginloader.cpp17
-rw-r--r--src/corelib/plugin/qpluginloader.h2
2 files changed, 19 insertions, 0 deletions
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
@@ -173,6 +173,23 @@ QObject *QPluginLoader::instance()
}
/*!
+ 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
calls this function before resolving any symbols it is not
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();