1 | // Copyright (C) 2021 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 TYPEDEFNODE_H |
5 | #define TYPEDEFNODE_H |
6 | |
7 | #include "enumnode.h" |
8 | #include "node.h" |
9 | |
10 | #include <QtCore/qglobal.h> |
11 | #include <QtCore/qstring.h> |
12 | |
13 | QT_BEGIN_NAMESPACE |
14 | |
15 | class Aggregate; |
16 | |
17 | class TypedefNode : public Node |
18 | { |
19 | public: |
20 | TypedefNode(Aggregate *parent, const QString &name, NodeType type = Typedef) |
21 | : Node(type, parent, name) |
22 | { |
23 | } |
24 | |
25 | bool hasAssociatedEnum() const { return m_associatedEnum != nullptr; } |
26 | const EnumNode *associatedEnum() const { return m_associatedEnum; } |
27 | Node *clone(Aggregate *parent) override; |
28 | |
29 | private: |
30 | void setAssociatedEnum(const EnumNode *t); |
31 | |
32 | friend class EnumNode; |
33 | |
34 | const EnumNode *m_associatedEnum { nullptr }; |
35 | }; |
36 | |
37 | class TypeAliasNode : public TypedefNode |
38 | { |
39 | public: |
40 | TypeAliasNode(Aggregate *parent, const QString &name, const QString &aliasedType) |
41 | : TypedefNode(parent, name, NodeType::TypeAlias), m_aliasedType(aliasedType) |
42 | { |
43 | } |
44 | |
45 | const QString &aliasedType() const { return m_aliasedType; } |
46 | Node *clone(Aggregate *parent) override; |
47 | |
48 | private: |
49 | QString m_aliasedType {}; |
50 | }; |
51 | |
52 | QT_END_NAMESPACE |
53 | |
54 | #endif // TYPEDEFNODE_H |
55 |