// Copyright (C) 2021 The Qt Company Ltd. // Copyright (C) 2019 Luxoft Sweden AB // Copyright (C) 2018 Pelagicore AG // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #ifndef CONTAINERFACTORY_H #define CONTAINERFACTORY_H #include #include #include #include QT_BEGIN_NAMESPACE_AM class Application; class AbstractContainer; class AbstractContainerManager; class ContainerFactory : public QObject { Q_OBJECT public: static ContainerFactory *instance(); ~ContainerFactory() override; QStringList containerIds() const; AbstractContainerManager *manager(const QString &id); AbstractContainer *create(const QString &id, Application *app, QVector &&stdioRedirections = QVector(), const QMap &debugWrapperEnvironment = QMap(), const QStringList &debugWrapperCommand = QStringList()); void setConfiguration(const QVariantMap &configuration); bool registerContainer(AbstractContainerManager *manager); bool registerContainer(AbstractContainerManager *manager, const QString &identifier); bool disableContainer(const QString &identifier); private: ContainerFactory(QObject *parent = nullptr); ContainerFactory(const ContainerFactory &); ContainerFactory &operator=(const ContainerFactory &); static ContainerFactory *s_instance; QMap m_containers; }; QT_END_NAMESPACE_AM #endif // CONTAINERFACTORY_H