+QList<ApiFramebuffer> ApiTraceState::framebuffers() const
+{
+ return m_framebuffers;
+}
+
+QList<QVariant> ApiArray::values() const
+{
+ return m_array;
+}
+
+int ApiTraceCall::index() const
+{
+ return m_index;
+}
+
+QString ApiTraceCall::name() const
+{
+ return m_name;
+}
+
+QStringList ApiTraceCall::argNames() const
+{
+ return m_argNames;
+}
+
+QVariantList ApiTraceCall::arguments() const
+{
+ if (m_editedValues.isEmpty())
+ return m_argValues;
+ else
+ return m_editedValues;
+}
+
+QVariant ApiTraceCall::returnValue() const
+{
+ return m_returnValue;
+}
+
+QUrl ApiTraceCall::helpUrl() const
+{
+ return m_helpUrl;
+}
+
+ApiTraceCall::ApiTraceCall(const Trace::Call *call)
+ : ApiTraceEvent(ApiTraceEvent::Call),
+ m_hasBinaryData(false),
+ m_binaryDataIndex(0)
+{
+ m_name = QString::fromStdString(call->sig->name);
+ m_index = call->no;
+
+ QString argumentsText;
+ for (int i = 0; i < call->sig->arg_names.size(); ++i) {
+ m_argNames +=
+ QString::fromStdString(call->sig->arg_names[i]);
+ }
+ if (call->ret) {
+ VariantVisitor retVisitor;
+ call->ret->visit(retVisitor);
+ m_returnValue = retVisitor.variant();
+ }
+ for (int i = 0; i < call->args.size(); ++i) {
+ VariantVisitor argVisitor;
+ call->args[i]->visit(argVisitor);
+ m_argValues += argVisitor.variant();
+ if (m_argValues[i].type() == QVariant::ByteArray) {
+ m_hasBinaryData = true;
+ m_binaryDataIndex = i;
+ }
+ }
+}
+
+void ApiTraceCall::setHelpUrl(const QUrl &url)
+{
+ m_helpUrl = url;
+}
+
+void ApiTraceCall::setParentFrame(ApiTraceFrame *frame)
+{
+ m_parentFrame = frame;
+}
+
+ApiTraceFrame * ApiTraceCall::parentFrame()const
+{
+ return m_parentFrame;
+}
+
+ApiTraceEvent::~ApiTraceEvent()
+{
+ delete m_staticText;
+}
+
+void ApiTraceCall::revert()
+{
+ setEditedValues(QVariantList());
+}
+
+ApiTrace * ApiTraceFrame::parentTrace() const
+{
+ return m_parentTrace;
+}
+
+void ApiTraceFrame::setParentTrace(ApiTrace *trace)
+{
+ m_parentTrace = trace;
+}
+
+QVariantList ApiTraceCall::originalValues() const
+{
+ return m_argValues;
+}
+
+void ApiTraceCall::setEditedValues(const QVariantList &lst)
+{
+ ApiTrace *trace = parentTrace();
+
+ m_editedValues = lst;
+ //lets regenerate data
+ m_richText = QString();
+ m_filterText = QString();
+ delete m_staticText;
+ m_staticText = 0;
+
+ if (trace) {
+ if (!lst.isEmpty()) {
+ trace->callEdited(this);
+ } else {
+ trace->callReverted(this);
+ }
+ }
+}
+
+QVariantList ApiTraceCall::editedValues() const
+{
+ return m_editedValues;
+}
+
+bool ApiTraceCall::edited() const
+{
+ return !m_editedValues.isEmpty();
+}
+
+ApiEnum::ApiEnum(const QString &name, const QVariant &val)
+ : m_name(name),
+ m_value(val)
+{
+}
+
+QString ApiEnum::toString() const
+{
+ return m_name;
+}
+
+QVariant ApiEnum::value() const
+{
+ return m_value;
+}
+
+QString ApiEnum::name() const
+{
+ return m_name;
+}
+
+unsigned long long ApiBitmask::value() const
+{
+ return m_value;
+}
+
+ApiBitmask::Signature ApiBitmask::signature() const
+{
+ return m_sig;
+}
+
+ApiStruct::Signature ApiStruct::signature() const
+{
+ return m_sig;
+}
+
+QList<QVariant> ApiStruct::values() const
+{
+ return m_members;
+}
+
+unsigned long long ApiPointer::value() const
+{
+ return m_value;
+}
+
+bool ApiTraceCall::hasError() const
+{
+ return !m_error.isEmpty();
+}
+
+QString ApiTraceCall::error() const
+{
+ return m_error;
+}
+
+void ApiTraceCall::setError(const QString &msg)
+{
+ if (m_error != msg) {
+ ApiTrace *trace = parentTrace();
+ m_error = msg;
+ m_richText = QString();
+ if (trace)
+ trace->callError(this);
+ }
+}
+
+ApiTrace * ApiTraceCall::parentTrace() const
+{
+ if (m_parentFrame)
+ return m_parentFrame->parentTrace();
+ return NULL;
+}
+
+void ApiTraceFrame::addCall(ApiTraceCall *call)
+{
+ m_calls.append(call);
+ if (call->hasBinaryData()) {
+ QByteArray data =
+ call->arguments()[call->binaryDataIndex()].toByteArray();
+ m_binaryDataSize += data.size();
+ }
+}
+
+QList<ApiTraceCall*> ApiTraceFrame::calls() const
+{
+ return m_calls;
+}
+
+ApiTraceCall * ApiTraceFrame::call(int idx) const
+{
+ return m_calls.value(idx);
+}
+
+int ApiTraceFrame::callIndex(ApiTraceCall *call) const
+{
+ return m_calls.indexOf(call);
+}
+
+bool ApiTraceFrame::isEmpty() const
+{
+ return m_calls.isEmpty();
+}
+
+int ApiTraceFrame::binaryDataSize() const
+{
+ return m_binaryDataSize;
+}