From: José Fonseca Date: Sat, 28 May 2011 12:10:13 +0000 (+0100) Subject: Unify Call::Signature into FunctionSig. X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=0091432a9a7d98a125b5cbe0b3be7342949a0969;p=apitrace Unify Call::Signature into FunctionSig. --- diff --git a/gui/apitracecall.cpp b/gui/apitracecall.cpp index 8161ba9..9046a85 100644 --- a/gui/apitracecall.cpp +++ b/gui/apitracecall.cpp @@ -733,7 +733,7 @@ ApiTraceCall::ApiTraceCall(const Trace::Call *call) m_index = call->no; QString argumentsText; - for (int i = 0; i < call->sig->arg_names.size(); ++i) { + for (int i = 0; i < call->sig->num_args; ++i) { m_argNames += QString::fromStdString(call->sig->arg_names[i]); } diff --git a/gui/saverthread.cpp b/gui/saverthread.cpp index 1645279..0c4bd70 100644 --- a/gui/saverthread.cpp +++ b/gui/saverthread.cpp @@ -19,9 +19,9 @@ createFunctionSig(ApiTraceCall *call, unsigned id) QStringList args = call->argNames(); sig->num_args = args.count(); - sig->args = new const char*[args.count()]; + sig->arg_names = new const char*[args.count()]; for (int i = 0; i < args.count(); ++i) { - sig->args[i] = qstrdup(args[i].toLocal8Bit()); + sig->arg_names[i] = qstrdup(args[i].toLocal8Bit()); } return sig; @@ -31,9 +31,9 @@ static void deleteFunctionSig(Trace::FunctionSig *sig) { for (int i = 0; i < sig->num_args; ++i) { - delete [] sig->args[i]; + delete [] sig->arg_names[i]; } - delete [] sig->args; + delete [] sig->arg_names; delete [] sig->name; delete sig; } diff --git a/trace_model.hpp b/trace_model.hpp index 05d809e..03a2389 100644 --- a/trace_model.hpp +++ b/trace_model.hpp @@ -275,17 +275,12 @@ std::ostream & operator <<(std::ostream &os, Value *value); class Call { public: - struct Signature { - const char * name; - std::vector arg_names; - }; - unsigned no; - const Signature *sig; + const FunctionSig *sig; std::vector args; Value *ret; - Call(Signature *_sig) : sig(_sig), args(_sig->arg_names.size()), ret(0) { } + Call(FunctionSig *_sig) : sig(_sig), args(_sig->num_args), ret(0) { } ~Call(); inline const char * name(void) const { diff --git a/trace_parser.cpp b/trace_parser.cpp index a9f9e78..da9d8a4 100644 --- a/trace_parser.cpp +++ b/trace_parser.cpp @@ -137,14 +137,16 @@ T *lookup(std::vector &map, size_t index) { void Parser::parse_enter(void) { size_t id = read_uint(); - Call::Signature *sig = lookup(functions, id); + FunctionSig *sig = lookup(functions, id); if (!sig) { - sig = new Call::Signature; + sig = new FunctionSig; sig->name = read_string(); - unsigned size = read_uint(); - for (unsigned i = 0; i < size; ++i) { - sig->arg_names.push_back(read_string()); + sig->num_args = read_uint(); + const char **arg_names = new const char *[sig->num_args]; + for (unsigned i = 0; i < sig->num_args; ++i) { + arg_names[i] = read_string(); } + sig->arg_names = arg_names; functions[id] = sig; } assert(sig); diff --git a/trace_parser.hpp b/trace_parser.hpp index 20c3a75..0a01051 100644 --- a/trace_parser.hpp +++ b/trace_parser.hpp @@ -45,7 +45,7 @@ protected: typedef std::list CallList; CallList calls; - typedef std::vector FunctionMap; + typedef std::vector FunctionMap; FunctionMap functions; typedef std::vector StructMap; diff --git a/trace_writer.cpp b/trace_writer.cpp index 24d92fd..d07fdf9 100644 --- a/trace_writer.cpp +++ b/trace_writer.cpp @@ -194,7 +194,7 @@ unsigned Writer::beginEnter(const FunctionSig &function) { _writeString(function.name); _writeUInt(function.num_args); for (unsigned i = 0; i < function.num_args; ++i) { - _writeString(function.args[i]); + _writeString(function.arg_names[i]); } functions[function.id] = true; } diff --git a/trace_writer.hpp b/trace_writer.hpp index af7f468..765d006 100644 --- a/trace_writer.hpp +++ b/trace_writer.hpp @@ -42,7 +42,7 @@ namespace Trace { Id id; const char *name; unsigned num_args; - const char **args; + const char **arg_names; }; struct StructSig {