class ApiTrace;
+class TraceLoader;
class VariantVisitor : public Trace::Visitor
{
public:
+ VariantVisitor(TraceLoader *loader)
+ : m_loader(loader)
+ {}
virtual void visit(Trace::Null *);
virtual void visit(Trace::Bool *node);
virtual void visit(Trace::SInt *node);
return m_variant;
}
private:
+ TraceLoader *m_loader;
QVariant m_variant;
};
+class ApiTraceEnumSignature
+{
+public:
+ ApiTraceEnumSignature(const QString &name = QString(),
+ const QVariant &val=QVariant())\
+ : m_name(name),
+ m_value(val)
+ {}
+
+ QVariant value() const { return m_value; }
+ QString name() const { return m_name; }
+private:
+ QString m_name;
+ QVariant m_value;
+};
+
class ApiEnum
{
public:
- ApiEnum(const QString &name = QString(), const QVariant &val=QVariant());
+ ApiEnum(ApiTraceEnumSignature *sig=0);
QString toString() const;
QVariant value() const;
QString name() const;
private:
- QString m_name;
- QVariant m_value;
+ ApiTraceEnumSignature *m_sig;
};
Q_DECLARE_METATYPE(ApiEnum);
{
public:
ApiArray(const Trace::Array *arr = 0);
- ApiArray(const QList<QVariant> &vals);
+ ApiArray(const QVector<QVariant> &vals);
QString toString() const;
- QList<QVariant> values() const;
+ QVector<QVariant> values() const;
private:
void init(const Trace::Array *arr);
private:
- QList<QVariant> m_array;
+ QVector<QVariant> m_array;
};
Q_DECLARE_METATYPE(ApiArray);
{
public:
enum Type {
- None,
- Call,
- Frame
+ None = 0,
+ Call = 1 << 0,
+ Frame = 1 << 1
};
public:
ApiTraceEvent();
ApiTraceEvent(Type t);
virtual ~ApiTraceEvent();
- Type type() const { return m_type; }
+ Type type() const { return (Type)m_type; }
virtual QStaticText staticText() const = 0;
virtual int numChildren() const = 0;
QVariantMap stateParameters() const;
- ApiTraceState state() const;
- void setState(const ApiTraceState &state);
+ ApiTraceState *state() const;
+ void setState(ApiTraceState *state);
+ bool hasState() const
+ {
+ return m_state && !m_state->isEmpty();
+ }
protected:
- Type m_type;
- ApiTraceState m_state;
+ int m_type : 4;
+ mutable bool m_hasBinaryData;
+ mutable int m_binaryDataIndex:8;
+ ApiTraceState *m_state;
mutable QStaticText *m_staticText;
};
class ApiTraceCall : public ApiTraceEvent
{
public:
- ApiTraceCall(ApiTraceFrame *parentFrame, const Trace::Call *tcall);
+ ApiTraceCall(ApiTraceFrame *parentFrame, TraceLoader *loader,
+ const Trace::Call *tcall);
~ApiTraceCall();
int index() const;
QString name() const;
QStringList argNames() const;
- QVariantList arguments() const;
+ QVector<QVariant> arguments() const;
QVariant returnValue() const;
QUrl helpUrl() const;
void setHelpUrl(const QUrl &url);
QString error() const;
void setError(const QString &msg);
- QVariantList originalValues() const;
+ QVector<QVariant> originalValues() const;
bool edited() const;
- void setEditedValues(const QVariantList &lst);
- QVariantList editedValues() const;
+ void setEditedValues(const QVector<QVariant> &lst);
+ QVector<QVariant> editedValues() const;
void revert();
+ bool contains(const QString &str,
+ Qt::CaseSensitivity sensitivity) const;
+
ApiTrace *parentTrace() const;
QString toHtml() const;
private:
int m_index;
ApiTraceCallSignature *m_signature;
- QVariantList m_argValues;
+ QVector<QVariant> m_argValues;
QVariant m_returnValue;
ApiTraceFrame *m_parentFrame;
- QVariantList m_editedValues;
+ QVector<QVariant> m_editedValues;
QString m_error;
mutable QString m_richText;
mutable QString m_searchText;
- mutable bool m_hasBinaryData;
- mutable int m_binaryDataIndex;
};
Q_DECLARE_METATYPE(ApiTraceCall*);
class ApiTraceFrame : public ApiTraceEvent
{
public:
- ApiTraceFrame(ApiTrace *parent);
+ ApiTraceFrame(ApiTrace *parent=0);
+ ~ApiTraceFrame();
int number;
bool isEmpty() const;
+ void setParentTrace(ApiTrace *parent);
ApiTrace *parentTrace() const;
+ void setNumChildren(int num);
int numChildren() const;
+ int numChildrenToLoad() const;
QStaticText staticText() const;
int callIndex(ApiTraceCall *call) const;
ApiTraceCall *call(int idx) const;
+ ApiTraceCall *callWithIndex(int index) const;
void addCall(ApiTraceCall *call);
- QList<ApiTraceCall*> calls() const;
+ QVector<ApiTraceCall*> calls() const;
+ void setCalls(const QVector<ApiTraceCall*> &calls,
+ quint64 binaryDataSize);
+
+ ApiTraceCall *findNextCall(ApiTraceCall *from,
+ const QString &str,
+ Qt::CaseSensitivity sensitivity) const;
+
+ ApiTraceCall *findPrevCall(ApiTraceCall *from,
+ const QString &str,
+ Qt::CaseSensitivity sensitivity) const;
int binaryDataSize() const;
+
+ bool loaded() const;
+ void setLoaded(bool l);
private:
ApiTrace *m_parentTrace;
quint64 m_binaryDataSize;
- QList<ApiTraceCall*> m_calls;
+ QVector<ApiTraceCall*> m_calls;
+ bool m_loaded;
+ unsigned m_callsToLoad;
};
Q_DECLARE_METATYPE(ApiTraceFrame*);