diff options
| -rw-r--r-- | diceparser.cpp | 1 | ||||
| -rw-r--r-- | node/executionnode.cpp | 19 | ||||
| -rw-r--r-- | node/parenthesesnode.cpp | 35 | ||||
| -rw-r--r-- | node/scalaroperatornode.cpp | 5 | ||||
| -rw-r--r-- | result/result.cpp | 14 |
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"); } |