Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
extension.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3// Qt-Security score:significant reason:default
4
5#ifndef EXTENSION_H
6#define EXTENSION_H
7
8#include <QtDesigner/extension_global.h>
9
10#include <QtCore/qstring.h>
11#include <QtCore/qobject.h>
12
14
15#define Q_TYPEID(IFace) QLatin1StringView(IFace##_iid)
16
18{
19public:
20 virtual ~QAbstractExtensionFactory();
21
22 virtual QObject *extension(QObject *object, const QString &iid) const = 0;
23};
24Q_DECLARE_INTERFACE(QAbstractExtensionFactory, "org.qt-project.Qt.QAbstractExtensionFactory")
25
26class QDESIGNER_EXTENSION_EXPORT QAbstractExtensionManager
27{
28public:
29 virtual ~QAbstractExtensionManager();
30
31 virtual void registerExtensions(QAbstractExtensionFactory *factory, const QString &iid) = 0;
32 virtual void unregisterExtensions(QAbstractExtensionFactory *factory, const QString &iid) = 0;
33
34 virtual QObject *extension(QObject *object, const QString &iid) const = 0;
35};
36Q_DECLARE_INTERFACE(QAbstractExtensionManager, "org.qt-project.Qt.QAbstractExtensionManager")
37
38template <class T>
39inline T qt_extension(QAbstractExtensionManager *, QObject *)
40{ return nullptr; }
41
42#define Q_DECLARE_EXTENSION_INTERFACE(IFace, IId) const
43 char * const IFace##_iid = IId; Q_DECLARE_INTERFACE
44 (IFace, IId) template
45 <> inline IFace *qt_extension<IFace *>(QAbstractExtensionManager *manager, QObject *object) \
46{QObject *extension = manager->extension(object, Q_TYPEID(IFace)); return extension ? static_cast<IFace *>(extension->qt_metacast(IFace##_iid)) : static_cast<IFace *>(nullptr); }
47
48QT_END_NAMESPACE
49
50#endif // EXTENSION_H
The QAbstractExtensionFactory class provides an interface for extension factories in \QD.
Definition extension.h:18
The QAbstractExtensionManager class provides an interface for extension managers in \QD.
Definition extension.h:27
#define Q_TYPEID(IFace)
Definition extension.h:15
Q_DECLARE_INTERFACE(QNetworkAccessBackendFactory, QNetworkAccessBackendFactory_iid)