diff options
Diffstat (limited to 'src/plugins/projectexplorer/ioutputparser.h')
-rw-r--r-- | src/plugins/projectexplorer/ioutputparser.h | 93 |
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 |