writer.beginList();
for (unsigned i = 0; i < call->args.size(); ++i) {
- if (call->args[i]) {
- _visit(call->args[i]);
+ if (call->args[i].value) {
+ _visit(call->args[i].value);
} else {
writer.writeNone();
}
if (!(dumpFlags & DUMP_FLAG_NO_ARG_NAMES)) {
os << italic << call->sig->arg_names[i] << normal << " = ";
}
- if (call->args[i]) {
- _visit(call->args[i]);
+ if (call->args[i].value) {
+ _visit(call->args[i].value);
} else {
os << "?";
}
Call::~Call() {
for (unsigned i = 0; i < args.size(); ++i) {
- delete args[i];
+ delete args[i].value;
}
if (ret) {
};
+struct Arg
+{
+ Value *value;
+};
+
class Call
{
unsigned thread_id;
unsigned no;
const FunctionSig *sig;
- std::vector<Value *> args;
+ std::vector<Arg> args;
Value *ret;
CallFlags flags;
inline Value & arg(unsigned index) {
assert(index < args.size());
- return *(args[index]);
+ return *(args[index].value);
}
};
if (index >= call->args.size()) {
call->args.resize(index + 1);
}
- call->args[index] = value;
+ call->args[index].value = value;
}
}
void visit(Call *call) {
unsigned call_no = writer.beginEnter(call->sig, call->thread_id);
for (unsigned i = 0; i < call->args.size(); ++i) {
- if (call->args[i]) {
+ if (call->args[i].value) {
writer.beginArg(i);
- _visit(call->args[i]);
+ _visit(call->args[i].value);
writer.endArg();
}
}
}
m_argValues.reserve(call->args.size());
for (int i = 0; i < call->args.size(); ++i) {
- if (call->args[i]) {
+ if (call->args[i].value) {
VariantVisitor argVisitor(loader);
- call->args[i]->visit(argVisitor);
+ call->args[i].value->visit(argVisitor);
m_argValues.append(argVisitor.variant());
if (m_argValues[i].type() == QVariant::ByteArray) {
m_hasBinaryData = true;
overwriteValue(trace::Call *call, const QVariant &val, int index)
{
EditVisitor visitor(val);
- trace::Value *origValue = call->args[index];
+ trace::Value *origValue = call->args[index].value;
origValue->visit(visitor);
if (visitor.value() && origValue != visitor.value()) {
delete origValue;
- call->args[index] = visitor.value();
+ call->args[index].value = visitor.value();
}
}