diff options
Diffstat (limited to 'src/plugins/projectexplorer/ioutputparser.h')
-rw-r--r-- | src/plugins/projectexplorer/ioutputparser.h | 56 |
1 files changed, 23 insertions, 33 deletions
diff --git a/src/plugins/projectexplorer/ioutputparser.h b/src/plugins/projectexplorer/ioutputparser.h index 1872461cbb..b4fb8ab73c 100644 --- a/src/plugins/projectexplorer/ioutputparser.h +++ b/src/plugins/projectexplorer/ioutputparser.h @@ -28,49 +28,39 @@ #include "projectexplorer_export.h" #include "buildstep.h" -#include <QString> +#include <utils/outputformatter.h> + +#include <functional> namespace ProjectExplorer { class Task; -// Documentation inside. -class PROJECTEXPLORER_EXPORT IOutputParser : public QObject +class PROJECTEXPLORER_EXPORT OutputTaskParser : public Utils::OutputLineParser { Q_OBJECT public: - IOutputParser() = default; - ~IOutputParser() override; - - virtual void appendOutputParser(IOutputParser *parser); - - IOutputParser *takeOutputParserChain(); - - IOutputParser *childParser() const; - void setChildParser(IOutputParser *parser); - - virtual void stdOutput(const QString &line); - virtual void stdError(const QString &line); - - virtual bool hasFatalErrors() const; - virtual void setWorkingDirectory(const QString &workingDirectory); - void setWorkingDirectory(const Utils::FilePath &fn); - - void flush(); // flush out pending tasks - - static QString rightTrimmed(const QString &in); - -signals: - void addOutput(const QString &string, ProjectExplorer::BuildStep::OutputFormat format); - void addTask(const ProjectExplorer::Task &task, int linkedOutputLines = 0, int skipLines = 0); - -public slots: - virtual void outputAdded(const QString &string, ProjectExplorer::BuildStep::OutputFormat format); - virtual void taskAdded(const ProjectExplorer::Task &task, int linkedOutputLines = 0, int skipLines = 0); + OutputTaskParser(); + ~OutputTaskParser() override; + + class TaskInfo + { + public: + TaskInfo(const Task &t, int l, int s) : task(t), linkedLines(l), skippedLines(s) {} + Task task; + int linkedLines = 0; + int skippedLines = 0; + }; + const QList<TaskInfo> taskInfo() const; + +protected: + void scheduleTask(const Task &task, int outputLines, int skippedLines = 0); + void setDetailsFormat(Task &task, const LinkSpecs &linkSpecs = {}); private: - virtual void doFlush(); + void runPostPrintActions() override; - IOutputParser *m_parser = nullptr; + class Private; + Private * const d; }; } // namespace ProjectExplorer |