m_variant = QVariant::fromValue(ApiPointer(ptr->value));
}
+void VariantVisitor::visit(trace::Repr *repr)
+{
+ /* TODO: Preserve both the human and machine value */
+ repr->humanValue->visit(*this);
+}
+
ApiTraceEnumSignature::ApiTraceEnumSignature(const trace::EnumSig *sig)
{
for (const trace::EnumValue *it = sig->values;
m_value = bitmask->value;
for (const trace::BitmaskFlag *it = bitmask->sig->flags;
it != bitmask->sig->flags + bitmask->sig->num_flags; ++it) {
- assert(it->value);
QPair<QString, unsigned long long> pair;
pair.first = QString::fromStdString(it->name);
QString str;
unsigned long long value = m_value;
bool first = true;
- for (Signature::const_iterator it = m_sig.begin();
- value != 0 && it != m_sig.end(); ++it) {
- Q_ASSERT(it->second);
- if ((value & it->second) == it->second) {
+ for (Signature::const_iterator it = m_sig.begin(); it != m_sig.end(); ++it) {
+ Q_ASSERT(it->second || first);
+ if ((it->second && (value & it->second) == it->second) ||
+ (!it->second && value == 0)) {
if (!first) {
str += QLatin1String(" | ");
}
value &= ~it->second;
first = false;
}
+ if (value == 0) {
+ break;
+ }
}
if (value || first) {
if (!first) {