From 1b23ed28505a34cda19b5cc1b7578e63c0c63237 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Sat, 28 May 2011 13:01:16 +0100 Subject: [PATCH] Unify Struct::Signature into StructSig --- gui/apitracecall.cpp | 2 +- gui/saverthread.cpp | 10 +++++----- trace_model.hpp | 9 ++------- trace_parser.cpp | 15 +++++++++------ trace_parser.hpp | 2 +- trace_writer.cpp | 2 +- trace_writer.hpp | 2 +- 7 files changed, 20 insertions(+), 22 deletions(-) diff --git a/gui/apitracecall.cpp b/gui/apitracecall.cpp index 6112877..8161ba9 100644 --- a/gui/apitracecall.cpp +++ b/gui/apitracecall.cpp @@ -230,7 +230,7 @@ void ApiStruct::init(const Trace::Struct *s) 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])); diff --git a/gui/saverthread.cpp b/gui/saverthread.cpp index 648de59..1645279 100644 --- a/gui/saverthread.cpp +++ b/gui/saverthread.cpp @@ -47,10 +47,10 @@ createStructSig(const ApiStruct &str, unsigned id) 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; } @@ -59,9 +59,9 @@ static void 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; } diff --git a/trace_model.hpp b/trace_model.hpp index eb28465..05d809e 100644 --- a/trace_model.hpp +++ b/trace_model.hpp @@ -189,18 +189,13 @@ public: class Struct : public Value { public: - struct Signature { - const char *name; - std::vector 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 members; }; diff --git a/trace_parser.cpp b/trace_parser.cpp index 1af9ad0..a9f9e78 100644 --- a/trace_parser.cpp +++ b/trace_parser.cpp @@ -374,21 +374,24 @@ Value *Parser::parse_blob(void) { 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(); } diff --git a/trace_parser.hpp b/trace_parser.hpp index fe36023..20c3a75 100644 --- a/trace_parser.hpp +++ b/trace_parser.hpp @@ -48,7 +48,7 @@ protected: typedef std::vector FunctionMap; FunctionMap functions; - typedef std::vector StructMap; + typedef std::vector StructMap; StructMap structs; typedef std::vector EnumMap; diff --git a/trace_writer.cpp b/trace_writer.cpp index 0a843d2..24d92fd 100644 --- a/trace_writer.cpp +++ b/trace_writer.cpp @@ -241,7 +241,7 @@ void Writer::beginStruct(const StructSig *sig) { _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; } diff --git a/trace_writer.hpp b/trace_writer.hpp index 5e7416b..af7f468 100644 --- a/trace_writer.hpp +++ b/trace_writer.hpp @@ -49,7 +49,7 @@ namespace Trace { Id id; const char *name; unsigned num_members; - const char **members; + const char **member_names; }; struct EnumSig { -- 2.43.0