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

source code of qttools/src/qdoc/qdoc/src/qdoc/typedefnode.h