diff options
Diffstat (limited to 'src/qdoc/qdoc/src/qdoc/enumnode.cpp')
-rw-r--r-- | src/qdoc/qdoc/src/qdoc/enumnode.cpp | 82 |
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 |