Line data Source code
1 : // SPDX-FileCopyrightText: 2013-2025 Paul Colby <git@colby.id.au>
2 : // SPDX-License-Identifier: LGPL-3.0-or-later
3 :
4 : /*!
5 : * \file
6 : * Declares the ModelPrivate class.
7 : */
8 :
9 : #ifndef QTSMITHY_MODEL_P_H
10 : #define QTSMITHY_MODEL_P_H
11 :
12 : #include <qtsmithy/model.h>
13 : #include <qtsmithy/shapeid.h>
14 :
15 : #include <QCoreApplication>
16 : #include <QLoggingCategory>
17 : #include <QVersionNumber>
18 :
19 : QTSMITHY_BEGIN_NAMESPACE
20 :
21 : class QTSMITHY_EXPORT ModelPrivate
22 : {
23 0 : Q_DECLARE_TR_FUNCTIONS(Model);
24 :
25 : public:
26 : explicit ModelPrivate(Model * const q);
27 :
28 : static QJsonObject mergeMetadata(const QMultiHash<QString, QJsonValue> &metadata);
29 : static QVersionNumber smithyVersion(const QJsonObject &ast);
30 :
31 : protected:
32 : Model * q_ptr; ///< Internal q-pointer.
33 0 : static Q_LOGGING_CATEGORY(lc, "smithy.Model", QtInfoMsg); ///< Logging category for Model.
34 :
35 : private:
36 : Model::Error error;
37 : QMultiHash<QString, QJsonValue> allMetadata;
38 : QMultiHash<ShapeId, Shape> allShapes;
39 : QJsonObject mergedMetadata;
40 : QHash<ShapeId, Shape> mergedShapes;
41 :
42 : Q_DECLARE_PUBLIC(Model)
43 : QTSMITHY_BEFRIEND_TEST(Model)
44 : };
45 :
46 : QTSMITHY_END_NAMESPACE
47 :
48 : #endif // QTSMITHY_MODEL_P_H
|