#pragma once #include #include "trace_profiler.hpp" struct ProfileTableRow { ProfileTableRow(unsigned no) : program(no), uses(0), gpuTime(0), cpuTime(0), pixels(0), longestGpu(0), longestCpu(0), longestPixel(0) { } unsigned program; qulonglong uses; qulonglong gpuTime; qulonglong cpuTime; qulonglong pixels; const trace::Profile::Call* longestGpu; const trace::Profile::Call* longestCpu; const trace::Profile::Call* longestPixel; }; class ProfileTableModel : public QAbstractTableModel { Q_OBJECT public: ProfileTableModel(QObject *parent = NULL); void setProfile(trace::Profile* profile); void selectNone(); void selectProgram(unsigned program); void selectTime(int64_t start, int64_t end); int getRowIndex(unsigned program) const; unsigned getProgram(const QModelIndex & index) const; const trace::Profile::Call* getJumpCall(const QModelIndex & index) const; virtual int rowCount(const QModelIndex & parent) const override; virtual int columnCount(const QModelIndex & parent) const override; virtual QVariant data(const QModelIndex &index, int role) const override; virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const override; virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override; private: void updateModel(); ProfileTableRow* getRow(unsigned program); private: QList m_rowData; trace::Profile *m_profile; int64_t m_timeMin; int64_t m_timeMax; int m_sortColumn; Qt::SortOrder m_sortOrder; };