return !m_errors.isEmpty();
}
-ApiTraceCallSignature * ApiTrace::signature(const QString &callName)
+ApiTraceCallSignature * ApiTrace::signature(unsigned id)
{
- return m_signatures[callName];
+ if (id >= m_signatures.count()) {
+ m_signatures.resize(id + 1);
+ return NULL;
+ } else {
+ return m_signatures[id];
+ }
}
-void ApiTrace::addSignature(ApiTraceCallSignature *signature)
+void ApiTrace::addSignature(unsigned id, ApiTraceCallSignature *signature)
{
- m_signatures.insert(signature->name(), signature);
+ m_signatures[id] = signature;
}
#include "apitrace.moc"
ApiTraceState defaultState() const;
- ApiTraceCallSignature *signature(const QString &callName);
- void addSignature(ApiTraceCallSignature *signature);
+ ApiTraceCallSignature *signature(unsigned id);
+ void addSignature(unsigned id, ApiTraceCallSignature *signature);
QList<ApiTraceCall*> calls() const;
ApiTraceCall *callAt(int idx) const;
bool m_needsSaving;
QSet<ApiTraceCall*> m_errors;
- QHash<QString, ApiTraceCallSignature*> m_signatures;
+ QVector<ApiTraceCallSignature*> m_signatures;
};
#endif
m_index = call->no;
- QString name = QString::fromStdString(call->sig->name);
- m_signature = trace->signature(name);
+ m_signature = trace->signature(call->sig->id);
if (!m_signature) {
+ QString name = QString::fromStdString(call->sig->name);
QStringList argNames;
argNames.reserve(call->sig->num_args);
for (int i = 0; i < call->sig->num_args; ++i) {
argNames += QString::fromStdString(call->sig->arg_names[i]);
}
m_signature = new ApiTraceCallSignature(name, argNames);
- trace->addSignature(m_signature);
+ trace->addSignature(call->sig->id, m_signature);
}
if (call->ret) {
VariantVisitor retVisitor;