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
13QT_BEGIN_NAMESPACE
14
15class Aggregate;
16
17class TypedefNode : public Node
18{
19public:
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
29private:
30 void setAssociatedEnum(const EnumNode *t);
31
32 friend class EnumNode;
33
34 const EnumNode *m_associatedEnum { nullptr };
35};
36
37class TypeAliasNode : public TypedefNode
38{
39public:
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
48private:
49 QString m_aliasedType {};
50};
51
52QT_END_NAMESPACE
53
54#endif // TYPEDEFNODE_H
55

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