summaryrefslogtreecommitdiff
path: root/src/plugins/qt4projectmanager/qt-s60/abldparser.cpp
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@nokia.com>2009-12-09 13:54:46 +0100
committerTobias Hunger <tobias.hunger@nokia.com>2009-12-09 18:39:03 +0100
commitec025c6dbf1b3c9b6ff4ac7859d61f03b35c21f4 (patch)
tree5e3d5b2a0fcbd4928826466e59394a43c8b1b0d0 /src/plugins/qt4projectmanager/qt-s60/abldparser.cpp
parenta0abde6306571fb7f12fe1d176cec1c8dba4d358 (diff)
downloadqt-creator-ec025c6dbf1b3c9b6ff4ac7859d61f03b35c21f4.tar.gz
Rework Build Parser handling
* Rework IBuildParser: * Remove name() method. * Remove enterDirectory and leaveDirectory signals. * Allow chaining of parsers. * Rename IBuildParser to IOutputParser. * Implement GnuMakeParser. * Remove entering/leaving directory related code from all other parsers * Move filename fixup heuristic based on entering/leaving directory massages from gnumake here from AbstractMakeStep. * Add outputParser method to ToolChain: This removes the need to map toolchains to BuildParser names in the BuildSteps. * Enhance AbstractProcessStep to accept a IOutputParser to parse its output. * Remove AbstractMakeStep. * Set the appropriate Parsers in all classes deriving from AbstractProcessStep and append the ToolChain's parser to the parser chain. * Remove BuildParserFactories: There is no more need for them. * Remove constants used to identify the BuildParsers. * Clean up some names: * Replace stdOut with stdOutput. * Replace addToTaskWindow with addTask and addToOutputWindow with addOutput. Do this wherever it is not yet clear that this will end up in the Task/Output window. Reviewed-by: dt
Diffstat (limited to 'src/plugins/qt4projectmanager/qt-s60/abldparser.cpp')
-rw-r--r--src/plugins/qt4projectmanager/qt-s60/abldparser.cpp138
1 files changed, 45 insertions, 93 deletions
diff --git a/src/plugins/qt4projectmanager/qt-s60/abldparser.cpp b/src/plugins/qt4projectmanager/qt-s60/abldparser.cpp
index 93c8c53b8c..b2e6000f45 100644
--- a/src/plugins/qt4projectmanager/qt-s60/abldparser.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/abldparser.cpp
@@ -28,18 +28,16 @@
**************************************************************************/
#include "abldparser.h"
-#include <utils/qtcassert.h>
+#include <projectexplorer/gnumakeparser.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/taskwindow.h>
-#include <extensionsystem/pluginmanager.h>
-
using namespace Qt4ProjectManager;
using namespace ProjectExplorer;
+using namespace ProjectExplorer::Constants;
-AbldParser::AbldParser(const QString &name) :
- m_name(name),
+AbldParser::AbldParser() :
m_currentLine(-1),
m_waitingForStdErrContinuation(false),
m_waitingForStdOutContinuation(false)
@@ -47,47 +45,7 @@ AbldParser::AbldParser(const QString &name) :
m_perlIssue.setPattern("^(WARNING|ERROR):\\s([^\\(\\)]+[^\\d])\\((\\d+)\\) : (.+)$");
m_perlIssue.setMinimal(true);
- // Now look for new parser
- QList<IBuildParserFactory *> buildParserFactories =
- ExtensionSystem::PluginManager::instance()->getObjects<ProjectExplorer::IBuildParserFactory>();
-
- QString subparser_name;
-
- if ((m_name == QLatin1String(ProjectExplorer::Constants::BUILD_PARSER_ABLD_GCCE)))
- subparser_name = QLatin1String(ProjectExplorer::Constants::BUILD_PARSER_GCC);
- else if ((m_name == QLatin1String(ProjectExplorer::Constants::BUILD_PARSER_ABLD_WINSCW)))
- subparser_name = QLatin1String(ProjectExplorer::Constants::BUILD_PARSER_WINSCW);
- else if (m_name == QLatin1String(ProjectExplorer::Constants::BUILD_PARSER_ABLD_RVCT))
- subparser_name = QLatin1String(ProjectExplorer::Constants::BUILD_PARSER_RVCT);
-
- QTC_ASSERT(!subparser_name.isNull(), return);
-
- foreach (IBuildParserFactory * factory, buildParserFactories) {
- if (factory->canCreate(subparser_name)) {
- m_subparser = factory->create(subparser_name);
- break;
- }
- }
- QTC_ASSERT(0 != m_subparser, return);
-
- connect(m_subparser, SIGNAL(enterDirectory(QString)),
- this, SIGNAL(enterDirectory(QString)));
- connect(m_subparser, SIGNAL(leaveDirectory(QString)),
- this, SIGNAL(leaveDirectory(QString)));
- connect(m_subparser, SIGNAL(addToOutputWindow(QString)),
- this, SIGNAL(addToOutputWindow(QString)));
- connect(m_subparser, SIGNAL(addToTaskWindow(ProjectExplorer::TaskWindow::Task)),
- this, SIGNAL(addToTaskWindow(ProjectExplorer::TaskWindow::Task)));
-}
-
-AbldParser::~AbldParser()
-{
- delete m_subparser;
-}
-
-QString AbldParser::name() const
-{
- return m_name;
+ appendOutputParser(new GnuMakeParser);
}
void AbldParser::stdOutput(const QString &line)
@@ -97,19 +55,19 @@ void AbldParser::stdOutput(const QString &line)
QString lne = line.trimmed();
// possible ABLD.bat errors:
if (lne.startsWith("Is Perl, version ")) {
- emit addToTaskWindow(TaskWindow::Task(TaskWindow::Error,
- lne /* description */,
- QString() /* filename */,
- -1 /* linenumber */,
- Constants::TASK_CATEGORY_BUILDSYSTEM));
+ emit addTask(TaskWindow::Task(TaskWindow::Error,
+ lne /* description */,
+ QString() /* filename */,
+ -1 /* linenumber */,
+ TASK_CATEGORY_BUILDSYSTEM));
return;
}
if (lne.startsWith("FATAL ERROR:")) {
- emit addToTaskWindow(TaskWindow::Task(TaskWindow::Error,
- lne /* description */,
- QString() /* filename */,
- -1 /* linenumber */,
- Constants::TASK_CATEGORY_BUILDSYSTEM));
+ emit addTask(TaskWindow::Task(TaskWindow::Error,
+ lne /* description */,
+ QString() /* filename */,
+ -1 /* linenumber */,
+ TASK_CATEGORY_BUILDSYSTEM));
m_waitingForStdOutContinuation = false;
return;
}
@@ -122,14 +80,14 @@ void AbldParser::stdOutput(const QString &line)
TaskWindow::Task task(TaskWindow::Unknown,
m_perlIssue.cap(4) /* description */,
m_currentFile, m_currentLine,
- Constants::TASK_CATEGORY_BUILDSYSTEM);
+ TASK_CATEGORY_BUILDSYSTEM);
if (m_perlIssue.cap(1) == QLatin1String("WARNING"))
task.type = TaskWindow::Warning;
else if (m_perlIssue.cap(1) == QLatin1String("ERROR"))
task.type = TaskWindow::Error;
- emit addToTaskWindow(task);
+ emit addTask(task);
return;
}
@@ -139,17 +97,14 @@ void AbldParser::stdOutput(const QString &line)
}
if (m_waitingForStdOutContinuation) {
- emit addToTaskWindow(TaskWindow::Task(TaskWindow::Unknown,
- lne /* description */,
- m_currentFile, m_currentLine,
- Constants::TASK_CATEGORY_BUILDSYSTEM));
+ emit addTask(TaskWindow::Task(TaskWindow::Unknown,
+ lne /* description */,
+ m_currentFile, m_currentLine,
+ TASK_CATEGORY_BUILDSYSTEM));
m_waitingForStdOutContinuation = true;
return;
}
-
- QTC_ASSERT(0 != m_subparser, return);
- // pass on to compiler output parser:
- m_subparser->stdOutput(lne);
+ IOutputParser::stdOutput(line);
}
void AbldParser::stdError(const QString &line)
@@ -162,20 +117,20 @@ void AbldParser::stdError(const QString &line)
if (lne.startsWith("ABLD ERROR:") ||
lne.startsWith("This project does not support ") ||
lne.startsWith("Platform ")) {
- emit addToTaskWindow(TaskWindow::Task(TaskWindow::Error,
- lne /* description */,
- QString() /* filename */,
- -1 /* linenumber */,
- Constants::TASK_CATEGORY_BUILDSYSTEM));
+ emit addTask(TaskWindow::Task(TaskWindow::Error,
+ lne /* description */,
+ QString() /* filename */,
+ -1 /* linenumber */,
+ TASK_CATEGORY_BUILDSYSTEM));
return;
}
if (lne.startsWith("Died at ")) {
- emit addToTaskWindow(TaskWindow::Task(TaskWindow::Error,
- lne /* description */,
- QString() /* filename */,
- -1 /* linenumber */,
- Constants::TASK_CATEGORY_BUILDSYSTEM));
+ emit addTask(TaskWindow::Task(TaskWindow::Error,
+ lne /* description */,
+ QString() /* filename */,
+ -1 /* linenumber */,
+ TASK_CATEGORY_BUILDSYSTEM));
m_waitingForStdErrContinuation = false;
return;
}
@@ -191,34 +146,31 @@ void AbldParser::stdError(const QString &line)
}
if (lne.startsWith("WARNING: ")) {
QString description = lne.mid(9);
- emit addToTaskWindow(TaskWindow::Task(TaskWindow::Warning, description,
- m_currentFile,
- -1 /* linenumber */,
- Constants::TASK_CATEGORY_BUILDSYSTEM));
+ emit addTask(TaskWindow::Task(TaskWindow::Warning, description,
+ m_currentFile,
+ -1 /* linenumber */,
+ TASK_CATEGORY_BUILDSYSTEM));
m_waitingForStdErrContinuation = true;
return;
}
if (lne.startsWith("ERROR: ")) {
QString description = lne.mid(7);
- emit addToTaskWindow(TaskWindow::Task(TaskWindow::Error, description,
- m_currentFile,
- -1 /* linenumber */,
- Constants::TASK_CATEGORY_BUILDSYSTEM));
+ emit addTask(TaskWindow::Task(TaskWindow::Error, description,
+ m_currentFile,
+ -1 /* linenumber */,
+ TASK_CATEGORY_BUILDSYSTEM));
m_waitingForStdErrContinuation = true;
return;
}
if (m_waitingForStdErrContinuation)
{
- emit addToTaskWindow(TaskWindow::Task(TaskWindow::Unknown,
- lne /* description */,
- m_currentFile,
- -1 /* linenumber */,
- Constants::TASK_CATEGORY_BUILDSYSTEM));
+ emit addTask(TaskWindow::Task(TaskWindow::Unknown,
+ lne /* description */,
+ m_currentFile,
+ -1 /* linenumber */,
+ TASK_CATEGORY_BUILDSYSTEM));
m_waitingForStdErrContinuation = true;
return;
}
-
- QTC_ASSERT(0 != m_subparser, return);
- // pass on to compiler output parser:
- m_subparser->stdError(lne);
+ IOutputParser::stdError(line);
}