File indexing completed on 2024-05-19 05:44:25
0001 /* 0002 SPDX-FileCopyrightText: 2015-2020 Milian Wolff <mail@milianw.de> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #ifndef PARSER_H 0008 #define PARSER_H 0009 0010 #include <QObject> 0011 0012 #include "../filterparameters.h" 0013 #include "callercalleemodel.h" 0014 #include "chartmodel.h" 0015 #include "histogrammodel.h" 0016 #include "treemodel.h" 0017 0018 #include <memory> 0019 0020 struct ParserData; 0021 0022 class Parser : public QObject 0023 { 0024 Q_OBJECT 0025 public: 0026 explicit Parser(QObject* parent = nullptr); 0027 virtual ~Parser(); 0028 0029 bool isFiltered() const; 0030 0031 enum class StopAfter 0032 { 0033 Summary, 0034 BottomUp, 0035 SizeHistogram, 0036 TopDownAndCallerCallee, 0037 Finished, 0038 }; 0039 0040 void parse(const QString& path, const QString& diffBase, const FilterParameters& filterParameters, 0041 StopAfter stopAfter = StopAfter::Finished); 0042 void reparse(const FilterParameters& filterParameters); 0043 0044 signals: 0045 void progressMessageAvailable(const QString& progress); 0046 void progress(const int progress); 0047 void summaryAvailable(const SummaryData& summary); 0048 void bottomUpDataAvailable(const TreeData& data); 0049 void topDownDataAvailable(const TreeData& data); 0050 void callerCalleeDataAvailable(const CallerCalleeResults& data); 0051 void consumedChartDataAvailable(const ChartData& data); 0052 void allocationsChartDataAvailable(const ChartData& data); 0053 void temporaryChartDataAvailable(const ChartData& data); 0054 void sizeHistogramDataAvailable(const HistogramData& data); 0055 void finished(); 0056 void failedToOpen(const QString& path); 0057 0058 private: 0059 void parseImpl(const QString& path, const QString& diffBase, const FilterParameters& filterParameters, 0060 StopAfter stopAfter); 0061 0062 QString m_path; 0063 std::shared_ptr<ParserData> m_data; 0064 }; 0065 0066 #endif // PARSER_H