remove visitor pattern

it's overengineered for our purpose and would just get in the way of
planned optimizations.
This commit is contained in:
Oswald Buddenhagen
2010-02-02 21:00:09 +01:00
parent 699af2f46a
commit a2dbeecdec
7 changed files with 62 additions and 163 deletions

View File

@@ -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