| 87 | } |
| 88 | |
| 89 | QByteArray EnumDefinition::valueToString(const EnumValue &value) const |
| 90 | { |
| 91 | Q_ASSERT(value.id() == id()); |
| 92 | if (isFlag()) { |
| 93 | QByteArray r; |
| 94 | int handledFlags = 0; |
| 95 | for (const auto &elem : m_elements) { |
| 96 | if ((elem.value() & value.value()) == elem.value() && elem.value() != 0) { |
| 97 | r += elem.name() + '|'; |
| 98 | handledFlags |= elem.value(); |
| 99 | } |
| 100 | } |
| 101 | if (value.value() & ~handledFlags) |
| 102 | r += "flag 0x" + QByteArray::number(value.value() & ~handledFlags, 16) + '|'; |
| 103 | |
| 104 | if (!r.isEmpty()) { |
| 105 | r.chop(1); |
| 106 | } else { |
| 107 | // check for dedicated 0-values |
| 108 | Q_ASSERT(value.value() == 0); |
| 109 | for (const auto &elem : m_elements) { |
| 110 | if (elem.value() == 0) |
| 111 | return elem.name(); |
| 112 | } |
| 113 | return "<none>"; |
| 114 | } |
| 115 | return r; |
| 116 | } else { |
| 117 | for (const auto &elem : m_elements) { |
| 118 | if (elem.value() == value.value()) |
| 119 | return elem.name(); |
| 120 | } |
| 121 | return "unknown (" + QByteArray::number(value.value()) + ')'; |
| 122 | } |
| 123 | } |
| 124 | |
| 125 | namespace GammaRay { |
| 126 | QDataStream &operator<<(QDataStream &out, const EnumDefinition &def) |
no test coverage detected