// Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB). // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QT3DCORE_QBACKENDNODE_H #define QT3DCORE_QBACKENDNODE_H #include #include QT_BEGIN_NAMESPACE namespace Qt3DCore { class QNode; class QBackendNodePrivate; class QBackendNode; class QAspectEngine; #if defined(QT_BUILD_INTERNAL) class QBackendNodeTester; #endif class Q_3DCORESHARED_EXPORT QBackendNodeMapper { public: virtual ~QBackendNodeMapper(); virtual QBackendNode *create(QNodeId id) const = 0; virtual QBackendNode *get(QNodeId id) const = 0; virtual void destroy(QNodeId id) const = 0; }; typedef QSharedPointer QBackendNodeMapperPtr; class Q_3DCORESHARED_EXPORT QBackendNode { public: enum Mode { ReadOnly = 0, ReadWrite }; explicit QBackendNode(Mode mode = ReadOnly); virtual ~QBackendNode(); QNodeId peerId() const noexcept; void setEnabled(bool enabled) noexcept; bool isEnabled() const noexcept; Mode mode() const noexcept; virtual void syncFromFrontEnd(const QNode *frontEnd, bool firstTime); protected: Q_DECLARE_PRIVATE(QBackendNode) explicit QBackendNode(QBackendNodePrivate &dd); QBackendNodePrivate *d_ptr; private: Q_DISABLE_COPY(QBackendNode) void setPeerId(QNodeId id) noexcept; friend class QAbstractAspectPrivate; #if defined(QT_BUILD_INTERNAL) friend class QBackendNodeTester; #endif }; } // namespace Qt3DCore QT_END_NAMESPACE #endif // QT3DCORE_QBACKENDNODE_H