return;
m_sig.name = QString::fromStdString(s->sig->name);
- for (unsigned i = 0; i < s->members.size(); ++i) {
+ for (unsigned i = 0; i < s->sig->num_members; ++i) {
VariantVisitor vis;
m_sig.memberNames.append(
QString::fromStdString(s->sig->member_names[i]));
sig->id = id;
sig->name = qstrdup(aSig.name.toLocal8Bit());
sig->num_members = aSig.memberNames.count();
- char **members = new char*[aSig.memberNames.count()];
- sig->members = (const char **)members;
+ char **member_names = new char*[aSig.memberNames.count()];
+ sig->member_names = (const char **)member_names;
for (int i = 0; i < aSig.memberNames.count(); ++i) {
- members[i] = qstrdup(aSig.memberNames[i].toLocal8Bit());
+ member_names[i] = qstrdup(aSig.memberNames[i].toLocal8Bit());
}
return sig;
}
deleteStructSig(Trace::StructSig *sig)
{
for (int i = 0; i < sig->num_members; ++i) {
- delete [] sig->members[i];
+ delete [] sig->member_names[i];
}
- delete [] sig->members;
+ delete [] sig->member_names;
delete [] sig->name;
delete sig;
}
class Struct : public Value
{
public:
- struct Signature {
- const char *name;
- std::vector<const char *> member_names;
- };
-
- Struct(Signature *_sig) : sig(_sig), members(_sig->member_names.size()) { }
+ Struct(StructSig *_sig) : sig(_sig), members(_sig->num_members) { }
~Struct();
bool toBool(void) const;
void visit(Visitor &visitor);
- const Signature *sig;
+ const StructSig *sig;
std::vector<Value *> members;
};
Value *Parser::parse_struct() {
size_t id = read_uint();
- Struct::Signature *sig = lookup(structs, id);
+ StructSig *sig = lookup(structs, id);
if (!sig) {
- sig = new Struct::Signature;
+ sig = new StructSig;
+ sig->id = id;
sig->name = read_string();
- unsigned size = read_uint();
- for (unsigned i = 0; i < size; ++i) {
- sig->member_names.push_back(read_string());
+ sig->num_members = read_uint();
+ const char **member_names = new const char *[sig->num_members];
+ for (unsigned i = 0; i < sig->num_members; ++i) {
+ member_names[i] = read_string();
}
+ sig->member_names = member_names;
structs[id] = sig;
}
assert(sig);
Struct *value = new Struct(sig);
- for (size_t i = 0; i < sig->member_names.size(); ++i) {
+ for (size_t i = 0; i < sig->num_members; ++i) {
value->members[i] = parse_value();
}
typedef std::vector<Call::Signature *> FunctionMap;
FunctionMap functions;
- typedef std::vector<Struct::Signature *> StructMap;
+ typedef std::vector<StructSig *> StructMap;
StructMap structs;
typedef std::vector<EnumSig *> EnumMap;
_writeString(sig->name);
_writeUInt(sig->num_members);
for (unsigned i = 0; i < sig->num_members; ++i) {
- _writeString(sig->members[i]);
+ _writeString(sig->member_names[i]);
}
structs[sig->id] = true;
}
Id id;
const char *name;
unsigned num_members;
- const char **members;
+ const char **member_names;
};
struct EnumSig {