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
4#ifndef EXTENSION_H
5#define EXTENSION_H
6
7#include <QtDesigner/extension_global.h>
8
9#include <QtCore/qstring.h>
10#include <QtCore/qobject.h>
11
13
14#define Q_TYPEID(IFace) QLatin1StringView(IFace##_iid)
15
17{
18public:
19 virtual ~QAbstractExtensionFactory();
20
21 virtual QObject *extension(QObject *object, const QString &iid) const = 0;
22};
23Q_DECLARE_INTERFACE(QAbstractExtensionFactory, "org.qt-project.Qt.QAbstractExtensionFactory")
24
25class QDESIGNER_EXTENSION_EXPORT QAbstractExtensionManager
26{
27public:
28 virtual ~QAbstractExtensionManager();
29
30 virtual void registerExtensions(QAbstractExtensionFactory *factory, const QString &iid) = 0;
31 virtual void unregisterExtensions(QAbstractExtensionFactory *factory, const QString &iid) = 0;
32
33 virtual QObject *extension(QObject *object, const QString &iid) const = 0;
34};
35Q_DECLARE_INTERFACE(QAbstractExtensionManager, "org.qt-project.Qt.QAbstractExtensionManager")
36
37template <class T>
38inline T qt_extension(QAbstractExtensionManager *, QObject *)
39{ return nullptr; }
40
41#define Q_DECLARE_EXTENSION_INTERFACE(IFace, IId) const
42 char * const IFace##_iid = IId; Q_DECLARE_INTERFACE
43 (IFace, IId) template
44 <> inline IFace *qt_extension<IFace *>(QAbstractExtensionManager *manager, QObject *object) \
45{QObject *extension = manager->extension(object, Q_TYPEID(IFace)); return extension ? static_cast<IFace *>(extension->qt_metacast(IFace##_iid)) : static_cast<IFace *>(nullptr); }
46
47QT_END_NAMESPACE
48
49#endif // EXTENSION_H
The QAbstractExtensionFactory class provides an interface for extension factories in \QD.
Definition extension.h:17
The QAbstractExtensionManager class provides an interface for extension managers in \QD.
Definition extension.h:26
#define Q_TYPEID(IFace)
Definition extension.h:14
Q_DECLARE_INTERFACE(QNetworkAccessBackendFactory, QNetworkAccessBackendFactory_iid)