aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/ioutputparser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/projectexplorer/ioutputparser.h')
-rw-r--r--src/plugins/projectexplorer/ioutputparser.h93
1 files changed, 14 insertions, 79 deletions
diff --git a/src/plugins/projectexplorer/ioutputparser.h b/src/plugins/projectexplorer/ioutputparser.h
index efe717f1f0..9a8ce59be1 100644
--- a/src/plugins/projectexplorer/ioutputparser.h
+++ b/src/plugins/projectexplorer/ioutputparser.h
@@ -28,103 +28,38 @@
#include "projectexplorer_export.h"
#include "buildstep.h"
-#include <utils/fileutils.h>
-#include <utils/outputformat.h>
+#include <utils/outputformatter.h>
#include <functional>
-namespace Utils { class FileInProjectFinder; }
-
namespace ProjectExplorer {
class Task;
-class PROJECTEXPLORER_EXPORT OutputTaskParser : public QObject
+class PROJECTEXPLORER_EXPORT OutputTaskParser : public Utils::OutputLineParser
{
Q_OBJECT
public:
OutputTaskParser();
~OutputTaskParser() override;
- void addSearchDir(const Utils::FilePath &dir);
- void dropSearchDir(const Utils::FilePath &dir);
- const Utils::FilePaths searchDirectories() const;
-
- enum class Status { Done, InProgress, NotHandled };
- virtual Status handleLine(const QString &line, Utils::OutputFormat type) = 0;
-
- virtual bool hasFatalErrors() const { return false; }
- virtual void flush() {}
-
- void setRedirectionDetector(const OutputTaskParser *detector);
- bool needsRedirection() const;
- virtual bool hasDetectedRedirection() const { return false; }
-
- void setFileFinder(Utils::FileInProjectFinder *finder);
-
-#ifdef WITH_TESTS
- void skipFileExistsCheck();
-#endif
-
-signals:
- void newSearchDir(const Utils::FilePath &dir);
- void searchDirExpired(const Utils::FilePath &dir);
- void addTask(const ProjectExplorer::Task &task, int linkedOutputLines = 0, int skipLines = 0);
+ 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:
- static QString rightTrimmed(const QString &in);
- Utils::FilePath absoluteFilePath(const Utils::FilePath &filePath);
+ void scheduleTask(const Task &task, int outputLines, int skippedLines = 0);
private:
+ void runPostPrintActions() override;
+
class Private;
Private * const d;
};
-// Documentation inside.
-class PROJECTEXPLORER_EXPORT IOutputParser : public QObject
-{
- Q_OBJECT
-public:
- IOutputParser();
- ~IOutputParser() override;
-
- void handleStdout(const QString &data);
- void handleStderr(const QString &data);
-
- bool hasFatalErrors() const;
-
- using Filter = std::function<QString(const QString &)>;
- void addFilter(const Filter &filter);
-
- // Forwards to line parsers. Add those before.
- void addSearchDir(const Utils::FilePath &dir);
- void dropSearchDir(const Utils::FilePath &dir);
-
- void flush();
- void clear();
-
- void addLineParser(OutputTaskParser *parser);
- void addLineParsers(const QList<OutputTaskParser *> &parsers);
- void setLineParsers(const QList<OutputTaskParser *> &parsers);
-
- void setFileFinder(const Utils::FileInProjectFinder &finder);
-
-#ifdef WITH_TESTS
- QList<OutputTaskParser *> lineParsers() const;
-#endif
-
-signals:
- void addTask(const ProjectExplorer::Task &task, int linkedOutputLines = 0, int skipLines = 0);
-
-private:
- void handleLine(const QString &line, Utils::OutputFormat type);
- QString filteredLine(const QString &line) const;
- void setupLineParser(OutputTaskParser *parser);
- Utils::OutputFormat outputTypeForParser(const OutputTaskParser *parser,
- Utils::OutputFormat type) const;
-
- class OutputChannelState;
- class IOutputParserPrivate;
- IOutputParserPrivate * const d;
-};
-
} // namespace ProjectExplorer