Exemple #1
0
ApiTraceCall::ApiTraceCall(const Trace::Call *call)
    : ApiTraceEvent(ApiTraceEvent::Call),
      m_hasBinaryData(false),
      m_binaryDataIndex(0)
{
    m_name = QString::fromStdString(call->sig->name);
    m_index = call->no;

    QString argumentsText;
    for (int i = 0; i < call->sig->arg_names.size(); ++i) {
        m_argNames +=
            QString::fromStdString(call->sig->arg_names[i]);
    }
    if (call->ret) {
        VariantVisitor retVisitor;
        call->ret->visit(retVisitor);
        m_returnValue = retVisitor.variant();
    }
    for (int i = 0; i < call->args.size(); ++i) {
        VariantVisitor argVisitor;
        call->args[i]->visit(argVisitor);
        m_argValues += argVisitor.variant();
        if (m_argValues[i].type() == QVariant::ByteArray) {
            m_hasBinaryData = true;
            m_binaryDataIndex = i;
        }
    }
}
Exemple #2
0
void VariantVisitor::visit(Trace::Enum *e)
{
    VariantVisitor vis;
    e->sig->second->visit(vis);

    QVariant val = vis.variant();

    m_variant = QVariant::fromValue(
        ApiEnum(QString::fromStdString(e->sig->first), val));
}
Exemple #3
0
void ApiArray::init(const Trace::Array *arr)
{
    if (!arr)
        return;

    for (int i = 0; i < arr->values.size(); ++i) {
        VariantVisitor vis;
        arr->values[i]->visit(vis);

        m_array.append(vis.variant());
    }
}
Exemple #4
0
void ApiStruct::init(const trace::Struct *s)
{
    if (!s)
        return;

    m_sig.name = QString::fromLatin1(s->sig->name);
    for (unsigned i = 0; i < s->sig->num_members; ++i) {
        VariantVisitor vis;
        m_sig.memberNames.append(
            QString::fromLatin1(s->sig->member_names[i]));
        s->members[i]->visit(vis);
        m_members.append(vis.variant());
    }
}
void ApiArray::init(const trace::Array *arr)
{
    if (!arr)
        return;

    m_array.reserve(arr->values.size());
    for (auto & value : arr->values) {
        VariantVisitor vis;
        value->visit(vis);

        m_array.append(vis.variant());
    }
    m_array.squeeze();
}