#include "apitracecall.h"
#include "apitrace.h"
+#include "traceloader.h"
#include "trace_model.hpp"
#include <QDebug>
{
ApiTraceEnumSignature *sig = 0;
- if (m_trace) {
- sig = m_trace->enumSignature(e->sig->id);
+ if (m_loader) {
+ sig = m_loader->enumSignature(e->sig->id);
}
if (!sig) {
sig = new ApiTraceEnumSignature(
QString::fromStdString(e->sig->name),
QVariant(e->sig->value));
- if (m_trace) {
- m_trace->addEnumSignature(e->sig->id, sig);
+ if (m_loader) {
+ m_loader->addEnumSignature(e->sig->id, sig);
}
}
m_state = state;
}
-ApiTraceCall::ApiTraceCall(ApiTraceFrame *parentFrame, const Trace::Call *call)
+ApiTraceCall::ApiTraceCall(ApiTraceFrame *parentFrame,
+ TraceLoader *loader,
+ const Trace::Call *call)
: ApiTraceEvent(ApiTraceEvent::Call),
m_parentFrame(parentFrame)
{
- ApiTrace *trace = parentTrace();
-
- Q_ASSERT(trace);
-
m_index = call->no;
- m_signature = trace->signature(call->sig->id);
+ m_signature = loader->signature(call->sig->id);
if (!m_signature) {
QString name = QString::fromStdString(call->sig->name);
argNames += QString::fromStdString(call->sig->arg_names[i]);
}
m_signature = new ApiTraceCallSignature(name, argNames);
- trace->addSignature(call->sig->id, m_signature);
+ loader->addSignature(call->sig->id, m_signature);
}
if (call->ret) {
- VariantVisitor retVisitor(trace);
+ VariantVisitor retVisitor(loader);
call->ret->visit(retVisitor);
m_returnValue = retVisitor.variant();
}
m_argValues.reserve(call->args.size());
for (int i = 0; i < call->args.size(); ++i) {
- VariantVisitor argVisitor(trace);
+ VariantVisitor argVisitor(loader);
call->args[i]->visit(argVisitor);
m_argValues.append(argVisitor.variant());
if (m_argValues[i].type() == QVariant::ByteArray) {
ApiTraceFrame::ApiTraceFrame(ApiTrace *parentTrace)
: ApiTraceEvent(ApiTraceEvent::Frame),
m_parentTrace(parentTrace),
- m_binaryDataSize(0)
+ m_binaryDataSize(0),
+ m_loaded(false),
+ m_callsToLoad(0)
{
}
int ApiTraceFrame::numChildren() const
{
- return m_calls.count();
+ if (m_loaded) {
+ return m_calls.count();
+ } else {
+ return m_callsToLoad;
+ }
}
ApiTrace * ApiTraceFrame::parentTrace() const
{
m_calls = calls;
m_binaryDataSize = binaryDataSize;
+ m_loaded = true;
+}
+
+bool ApiTraceFrame::loaded() const
+{
+ return m_loaded;
+}
+
+void ApiTraceFrame::setLoaded(bool l)
+{
+ m_loaded = l;
+}
+
+void ApiTraceFrame::setNumChildren(int num)
+{
+ m_callsToLoad = num;
+}
+
+void ApiTraceFrame::setParentTrace(ApiTrace *parent)
+{
+ m_parentTrace = parent;
}