aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--diceparser.cpp1
-rw-r--r--node/executionnode.cpp19
-rw-r--r--node/parenthesesnode.cpp35
-rw-r--r--node/scalaroperatornode.cpp5
-rw-r--r--result/result.cpp14
5 files changed, 38 insertions, 36 deletions
diff --git a/diceparser.cpp b/diceparser.cpp
index 1ad8847..c3baf23 100644
--- a/diceparser.cpp
+++ b/diceparser.cpp
@@ -594,7 +594,6 @@
tmp.append(listpair);
diceValues.insert(face,tmp);
}
-
}
}
}
diff --git a/node/executionnode.cpp b/node/executionnode.cpp
index 898b514..d8e21a3 100644
--- a/node/executionnode.cpp
+++ b/node/executionnode.cpp
@@ -54,27 +54,30 @@ QString ExecutionNode::getHelp()
}
ExecutionNode* ExecutionNode::getPreviousNode() const
{
- return m_previousNode;
+ return m_previousNode;
}
void ExecutionNode::generateDotTree(QString& s)
{
- s.append(toString(true));
- s.append(";\n");
+ auto str = toString(true);
+ if(s.contains(str))
+ return;
+ s.append(toString(true));
+ s.append(";\n");
if(nullptr!=m_nextNode)
{
- s.append(toString(false));
+ s.append(toString(false));
s.append(" -> ");
- s.append(m_nextNode->toString(false));
+ s.append(m_nextNode->toString(false));
s.append("[label=\"next\"];\n");
-// s.append(" [label=\"nextNode\"];\n");
+ // s.append(" [label=\"nextNode\"];\n");
m_nextNode->generateDotTree(s);
}
else
{
- s.append(toString(false));
+ s.append(toString(false));
s.append(" -> ");
- s.append("nullptr;\n");
+ s.append("nullptr;\n");
}
if(nullptr!=m_result)
{
diff --git a/node/parenthesesnode.cpp b/node/parenthesesnode.cpp
index 9e6bcec..b6c4c06 100644
--- a/node/parenthesesnode.cpp
+++ b/node/parenthesesnode.cpp
@@ -42,16 +42,6 @@ void ParenthesesNode::run(ExecutionNode* previous)
temp=temp->getNextNode();
}
m_result = temp->getResult();
- //m_result->setPrevious(internalResult);
- if(nullptr!=previous)
- {
- auto previousResult = previous->getResult();
- if(nullptr!=m_internalNode->getResult())
- {
- m_internalNode->getResult()->setPrevious(previousResult);
- }
- }
- //m_result = temp->getResult();
}
if(nullptr!=m_nextNode)
@@ -61,14 +51,14 @@ void ParenthesesNode::run(ExecutionNode* previous)
}
QString ParenthesesNode::toString(bool b) const
{
- if(b)
- {
- return QString("%1 [label=\"ParenthesesNode\"]").arg(m_id);
- }
- else
- {
- return m_id;
- }
+ if(b)
+ {
+ return QString("%1 [label=\"ParenthesesNode\"]").arg(m_id);
+ }
+ else
+ {
+ return m_id;
+ }
}
qint64 ParenthesesNode::getPriority() const
{
@@ -92,7 +82,10 @@ ExecutionNode* ParenthesesNode::getCopy() const
void ParenthesesNode::generateDotTree(QString & s)
{
- s.append(toString(true));
+ auto str = toString(true);
+ if(s.contains(str))
+ return;
+ s.append(str);
s.append(";\n");
if(nullptr != m_internalNode)
@@ -119,7 +112,7 @@ void ParenthesesNode::generateDotTree(QString & s)
s.append(toString(false));
s.append(" -> ");
s.append("nullptr;\n");
-
+
}
if(nullptr!=m_result)
{
@@ -130,6 +123,6 @@ void ParenthesesNode::generateDotTree(QString & s)
s.append(" [label=\"Result\", style=\"dashed\"];\n");
if(nullptr == m_nextNode)
m_result->generateDotTree(s);
-
+
}
}
diff --git a/node/scalaroperatornode.cpp b/node/scalaroperatornode.cpp
index ceb59ab..8172de7 100644
--- a/node/scalaroperatornode.cpp
+++ b/node/scalaroperatornode.cpp
@@ -194,7 +194,10 @@ qint64 ScalarOperatorNode::getPriority() const
}
void ScalarOperatorNode::generateDotTree(QString& s)
{
- s.append(toString(true));
+ auto id = toString(true);
+ if(s.contains(id))
+ return;
+ s.append(id);
s.append(";\n");
if(nullptr!=m_nextNode)
diff --git a/result/result.cpp b/result/result.cpp
index feede47..4c7275e 100644
--- a/result/result.cpp
+++ b/result/result.cpp
@@ -38,6 +38,7 @@ Result* Result::getPrevious()
void Result::setPrevious(Result* p)
{
+ Q_ASSERT(p != this);
m_previous = p;
}
@@ -55,12 +56,15 @@ bool Result::hasResultOfType(RESULT_TYPE type) const
}
void Result::generateDotTree(QString& s)
{
- s.append(toString(true));
- s.append(";\n");
+ auto str = toString(true);
+ if(s.contains(str))
+ return;
+ s.append(str);
+ s.append(";\n");
if(nullptr!=m_previous)
{
- s.append(toString(false));
+ s.append(toString(false));
s.append(" -> ");
s.append(m_previous->toString(false));
s.append("[label=\"previousResult\"]\n");
@@ -68,9 +72,9 @@ void Result::generateDotTree(QString& s)
}
else
{
- s.append(toString(false));
+ s.append(toString(false));
s.append(" -> ");
- s.append("nullptr");
+ s.append("nullptr");
s.append(" [label=\"previousResult\", shape=\"box\"];\n");
}