forked from qt-creator/qt-creator
remove visitor pattern
it's overengineered for our purpose and would just get in the way of planned optimizations.
This commit is contained in:
@@ -28,7 +28,6 @@
|
||||
**************************************************************************/
|
||||
|
||||
#include "proitems.h"
|
||||
#include "abstractproitemvisitor.h"
|
||||
|
||||
#include <QtCore/QFileInfo>
|
||||
|
||||
@@ -92,39 +91,6 @@ ProItem::ProItemKind ProBlock::kind() const
|
||||
return ProItem::BlockKind;
|
||||
}
|
||||
|
||||
ProItem::ProItemReturn ProBlock::Accept(AbstractProItemVisitor *visitor)
|
||||
{
|
||||
if (visitor->visitBeginProBlock(this) == ReturnSkip)
|
||||
return ReturnTrue;
|
||||
ProItemReturn rt = ReturnTrue;
|
||||
for (int i = 0; i < m_proitems.count(); ++i) {
|
||||
rt = m_proitems.at(i)->Accept(visitor);
|
||||
if (rt != ReturnTrue && rt != ReturnFalse) {
|
||||
if (rt == ReturnLoop) {
|
||||
rt = ReturnTrue;
|
||||
while (visitor->visitProLoopIteration())
|
||||
for (int j = i; ++j < m_proitems.count(); ) {
|
||||
rt = m_proitems.at(j)->Accept(visitor);
|
||||
if (rt != ReturnTrue && rt != ReturnFalse) {
|
||||
if (rt == ReturnNext) {
|
||||
rt = ReturnTrue;
|
||||
break;
|
||||
}
|
||||
if (rt == ReturnBreak)
|
||||
rt = ReturnTrue;
|
||||
goto do_break;
|
||||
}
|
||||
}
|
||||
do_break:
|
||||
visitor->visitProLoopCleanup();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
visitor->visitEndProBlock(this);
|
||||
return rt;
|
||||
}
|
||||
|
||||
// --------------- ProVariable ----------------
|
||||
ProVariable::ProVariable(const QString &name)
|
||||
{
|
||||
@@ -167,12 +133,6 @@ ProItem::ProItemKind ProVariable::kind() const
|
||||
return ProItem::VariableKind;
|
||||
}
|
||||
|
||||
ProItem::ProItemReturn ProVariable::Accept(AbstractProItemVisitor *visitor)
|
||||
{
|
||||
visitor->visitProVariable(this);
|
||||
return ReturnTrue;
|
||||
}
|
||||
|
||||
// --------------- ProFunction ----------------
|
||||
ProFunction::ProFunction(const QString &text)
|
||||
{
|
||||
@@ -194,11 +154,6 @@ ProItem::ProItemKind ProFunction::kind() const
|
||||
return ProItem::FunctionKind;
|
||||
}
|
||||
|
||||
ProItem::ProItemReturn ProFunction::Accept(AbstractProItemVisitor *visitor)
|
||||
{
|
||||
return visitor->visitProFunction(this);
|
||||
}
|
||||
|
||||
// --------------- ProCondition ----------------
|
||||
ProCondition::ProCondition(const QString &text)
|
||||
{
|
||||
@@ -220,12 +175,6 @@ ProItem::ProItemKind ProCondition::kind() const
|
||||
return ProItem::ConditionKind;
|
||||
}
|
||||
|
||||
ProItem::ProItemReturn ProCondition::Accept(AbstractProItemVisitor *visitor)
|
||||
{
|
||||
visitor->visitProCondition(this);
|
||||
return ReturnTrue;
|
||||
}
|
||||
|
||||
// --------------- ProOperator ----------------
|
||||
ProOperator::ProOperator(OperatorKind operatorKind)
|
||||
{
|
||||
@@ -247,12 +196,6 @@ ProItem::ProItemKind ProOperator::kind() const
|
||||
return ProItem::OperatorKind;
|
||||
}
|
||||
|
||||
ProItem::ProItemReturn ProOperator::Accept(AbstractProItemVisitor *visitor)
|
||||
{
|
||||
visitor->visitProOperator(this);
|
||||
return ReturnTrue;
|
||||
}
|
||||
|
||||
// --------------- ProFile ----------------
|
||||
ProFile::ProFile(const QString &fileName)
|
||||
: ProBlock(0)
|
||||
@@ -286,13 +229,4 @@ QString ProFile::directoryName() const
|
||||
return m_directoryName;
|
||||
}
|
||||
|
||||
ProItem::ProItemReturn ProFile::Accept(AbstractProItemVisitor *visitor)
|
||||
{
|
||||
ProItemReturn rt;
|
||||
if ((rt = visitor->visitBeginProFile(this)) != ReturnTrue)
|
||||
return rt;
|
||||
ProBlock::Accept(visitor); // cannot fail
|
||||
return visitor->visitEndProFile(this);
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
Reference in New Issue
Block a user