summaryrefslogtreecommitdiffstats
path: root/src/qdoc/qdoc/src/qdoc/enumnode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qdoc/qdoc/src/qdoc/enumnode.cpp')
-rw-r--r--src/qdoc/qdoc/src/qdoc/enumnode.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/qdoc/qdoc/src/qdoc/enumnode.cpp b/src/qdoc/qdoc/src/qdoc/enumnode.cpp
new file mode 100644
index 000000000..48a2f81aa
--- /dev/null
+++ b/src/qdoc/qdoc/src/qdoc/enumnode.cpp
@@ -0,0 +1,82 @@
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+#include "enumnode.h"
+
+#include "aggregate.h"
+#include "typedefnode.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class EnumNode
+ */
+
+/*!
+ Add \a item to the enum type's item list.
+ */
+void EnumNode::addItem(const EnumItem &item)
+{
+ m_items.append(item);
+ m_names.insert(item.name());
+}
+
+/*!
+ Returns the access level of the enumeration item named \a name.
+ Apparently it is private if it has been omitted by qdoc's
+ omitvalue command. Otherwise it is public.
+ */
+Access EnumNode::itemAccess(const QString &name) const
+{
+ if (doc().omitEnumItemNames().contains(name))
+ return Access::Private;
+ return Access::Public;
+}
+
+/*!
+ Returns the enum value associated with the enum \a name.
+ */
+QString EnumNode::itemValue(const QString &name) const
+{
+ for (const auto &item : std::as_const(m_items)) {
+ if (item.name() == name)
+ return item.value();
+ }
+ return QString();
+}
+
+/*!
+ Sets \a since information to a named enum \a value, if it
+ exists in this enum.
+*/
+void EnumNode::setSince(const QString &value, const QString &since)
+{
+ auto it = std::find_if(m_items.begin(), m_items.end(), [value](EnumItem ev) {
+ return ev.name() == value;
+ });
+ if (it != m_items.end())
+ it->setSince(since);
+}
+
+/*!
+ Clone this node on the heap and make the clone a child of
+ \a parent.
+
+ Returns a pointer to the clone.
+ */
+Node *EnumNode::clone(Aggregate *parent)
+{
+ auto *en = new EnumNode(*this); // shallow copy
+ en->setParent(nullptr);
+ parent->addChild(en);
+
+ return en;
+}
+
+void EnumNode::setFlagsType(TypedefNode *typedefNode)
+{
+ m_flagsType = typedefNode;
+ typedefNode->setAssociatedEnum(this);
+}
+
+QT_END_NAMESPACE