X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fsaverthread.cpp;h=d7f6906c7e136b7653d18084d487522ebf764b86;hb=35c2793ac758997a0a1c2e558d384ab94754987d;hp=b7e3ebcbc3481a34f84e228aeb956ceb331e5acd;hpb=b53b161dfae79f1bbb1dd2c8dff087b5e2365a26;p=apitrace diff --git a/gui/saverthread.cpp b/gui/saverthread.cpp index b7e3ebc..d7f6906 100644 --- a/gui/saverthread.cpp +++ b/gui/saverthread.cpp @@ -1,6 +1,6 @@ #include "saverthread.h" -#include "trace_write.hpp" +#include "trace_writer.hpp" #include #include @@ -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; } @@ -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; } @@ -92,16 +92,16 @@ createBitmaskSig(const ApiBitmask &bt, unsigned id) ApiBitmask::Signature::const_iterator itr; Trace::BitmaskSig *sig = new Trace::BitmaskSig(); - Trace::BitmaskVal *values = new Trace::BitmaskVal[bsig.count()]; + Trace::BitmaskFlag *flags = new Trace::BitmaskFlag[bsig.count()]; sig->id = id; - sig->count = bsig.count(); - sig->values = values; + sig->num_flags = bsig.count(); + sig->flags = flags; int i = 0; for (itr = bsig.constBegin(); itr != bsig.constEnd(); ++itr, ++i) { - values[i].name = qstrdup(itr->first.toLocal8Bit()); - values[i].value = itr->second; + flags[i].name = qstrdup(itr->first.toLocal8Bit()); + flags[i].value = itr->second; } return sig; @@ -110,15 +110,15 @@ createBitmaskSig(const ApiBitmask &bt, unsigned id) static void deleteBitmaskSig(Trace::BitmaskSig *sig) { - for (int i = 0; i < sig->count; ++i) { - delete [] sig->values[i].name; + for (int i = 0; i < sig->num_flags; ++i) { + delete [] sig->flags[i].name; } - delete [] sig->values; + delete [] sig->flags; delete sig; } static void -writeValue(const QVariant &var, unsigned &id) +writeValue(Trace::Writer &writer, const QVariant &var, unsigned &id) { int arrayType = QMetaType::type("ApiArray"); int bitmaskType = QMetaType::type("ApiBitmask"); @@ -129,73 +129,73 @@ writeValue(const QVariant &var, unsigned &id) switch(type) { case QVariant::Bool: - Trace::LiteralBool(var.toBool()); + writer.writeBool(var.toBool()); break; case QVariant::ByteArray: { QByteArray ba = var.toByteArray(); - Trace::LiteralBlob((const void*)ba.constData(), ba.size()); + writer.writeBlob((const void*)ba.constData(), ba.size()); } break; case QVariant::Double: - Trace::LiteralFloat(var.toDouble()); + writer.writeDouble(var.toDouble()); break; case QMetaType::Float: - Trace::LiteralFloat(var.toFloat()); + writer.writeFloat(var.toFloat()); break; case QVariant::Int: - Trace::LiteralSInt(var.toInt()); + writer.writeSInt(var.toInt()); break; case QVariant::LongLong: - Trace::LiteralSInt(var.toLongLong()); + writer.writeSInt(var.toLongLong()); break; case QVariant::String: { QString str = var.toString(); - Trace::LiteralString(str.toLocal8Bit().constData(), str.length()); + writer.writeString(str.toLocal8Bit().constData(), str.length()); } break; case QVariant::UInt: - Trace::LiteralUInt(var.toInt()); + writer.writeUInt(var.toInt()); break; case QVariant::ULongLong: - Trace::LiteralUInt(var.toLongLong()); + writer.writeUInt(var.toLongLong()); break; default: if (type == arrayType) { ApiArray array = var.value(); QList vals = array.values(); - Trace::BeginArray(vals.count()); + writer.beginArray(vals.count()); foreach(QVariant el, vals) { - Trace::BeginElement(); - writeValue(el, ++id); - Trace::EndElement(); + writer.beginElement(); + writeValue(writer, el, ++id); + writer.endElement(); } - Trace::EndArray(); + writer.endArray(); } else if (type == bitmaskType) { ApiBitmask bm = var.value(); Trace::BitmaskSig *sig = createBitmaskSig(bm, ++id); - LiteralBitmask(*sig, bm.value()); + writer.writeBitmask(sig, bm.value()); deleteBitmaskSig(sig); } else if (type == structType) { ApiStruct apiStr = var.value(); QList vals = apiStr.values(); Trace::StructSig *str = createStructSig(apiStr, ++id); - Trace::BeginStruct(str); + writer.beginStruct(str); foreach(QVariant val, vals) { - writeValue(val, ++id); + writeValue(writer, val, ++id); } - Trace::EndStruct(); + writer.endStruct(); deleteStructSig(str); } else if (type == pointerType) { ApiPointer apiPtr = var.value(); - //Trace::BeginArray(1); - //Trace::BeginElement(); - Trace::LiteralOpaque((const void*)apiPtr.value()); - //Trace::EndElement(); - //Trace::EndArray(); + //writer.beginArray(1); + //writer.beginElement(); + writer.writeOpaque((const void*)apiPtr.value()); + //writer.endElement(); + //writer.endArray(); } else if (type == enumType) { ApiEnum apiEnum = var.value(); Trace::EnumSig *sig = createEnumSig(apiEnum, ++id); - Trace::LiteralEnum(sig); + writer.writeEnum(sig); deleteEnumSig(sig); } else { qWarning()<<"Unsupported write variant : " @@ -219,39 +219,39 @@ void SaverThread::saveFile(const QString &fileName, void SaverThread::run() { - qputenv("TRACE_PATH", m_fileName.toLocal8Bit()); unsigned id = 0; - qDebug()<<"saver thread!"; - Trace::Open(); + qDebug() << "Saving : " << m_fileName; + Trace::Writer writer; + writer.open(m_fileName.toLocal8Bit()); for (int i = 0; i < m_calls.count(); ++i) { ApiTraceCall *call = m_calls[i]; Trace::FunctionSig *funcSig = createFunctionSig(call, ++id); - unsigned callNo = Trace::BeginEnter(*funcSig); + unsigned callNo = writer.beginEnter(funcSig); { //args QVariantList vars = call->arguments(); int index = 0; foreach(QVariant var, vars) { - Trace::BeginArg(index++); - writeValue(var, ++id); - Trace::EndArg(); + writer.beginArg(index++); + writeValue(writer, var, ++id); + writer.endArg(); } } - Trace::EndEnter(); - Trace::BeginLeave(callNo); + writer.endEnter(); + writer.beginLeave(callNo); { QVariant ret = call->returnValue(); if (!ret.isNull()) { - Trace::BeginReturn(); - writeValue(ret, ++id); - Trace::EndReturn(); + writer.beginReturn(); + writeValue(writer, ret, ++id); + writer.endReturn(); } } - Trace::EndLeave(); + writer.endLeave(); deleteFunctionSig(funcSig); } - Trace::Close(); + writer.close(); emit traceSaved(); }