diff options
| author | 2022-04-29 10:48:09 +0200 | |
|---|---|---|
| committer | 2022-04-29 10:48:09 +0200 | |
| commit | 07c5f6ec23fcf9237a24e71adcfacabce677f818 (patch) | |
| tree | 588e8c5f82b9163181fad3581f610e6f1d88cba4 /src/libparser/node/executionnode.cpp | |
| parent | a9153f1615a842cfb9e9bcda4d9071e202618569 (diff) | |
| download | OneRoll-07c5f6ec23fcf9237a24e71adcfacabce677f818.tar.gz OneRoll-07c5f6ec23fcf9237a24e71adcfacabce677f818.zip | |
Change file organization.
Diffstat (limited to 'src/libparser/node/executionnode.cpp')
| -rw-r--r-- | src/libparser/node/executionnode.cpp | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/src/libparser/node/executionnode.cpp b/src/libparser/node/executionnode.cpp new file mode 100644 index 0000000..4545934 --- /dev/null +++ b/src/libparser/node/executionnode.cpp @@ -0,0 +1,101 @@ +#include "executionnode.h" + +#include <QUuid> + +ExecutionNode::ExecutionNode() + : m_previousNode(nullptr) + , m_result(nullptr) + , m_nextNode(nullptr) + , m_errors(QMap<Dice::ERROR_CODE, QString>()) + , m_id(QString("\"%1\"").arg(QUuid::createUuid().toString())) +{ +} +ExecutionNode::~ExecutionNode() +{ + if(nullptr != m_result) + { + delete m_result; + m_result= nullptr; + } + if(nullptr != m_nextNode) + { + delete m_nextNode; + m_nextNode= nullptr; + } +} + +Result* ExecutionNode::getResult() +{ + return m_result; +} +void ExecutionNode::setNextNode(ExecutionNode* node) +{ + m_nextNode= node; +} +void ExecutionNode::setPreviousNode(ExecutionNode* node) +{ + m_previousNode= node; +} +ExecutionNode* ExecutionNode::getNextNode() +{ + return m_nextNode; +} +QMap<Dice::ERROR_CODE, QString> ExecutionNode::getExecutionErrorMap() +{ + if(nullptr != m_nextNode) + { + auto const& keys= m_nextNode->getExecutionErrorMap().keys(); + for(auto& key : keys) + { + m_errors.insert(key, m_nextNode->getExecutionErrorMap().value(key)); + } + } + return m_errors; +} +QString ExecutionNode::getHelp() +{ + return QString(); +} +ExecutionNode* ExecutionNode::getPreviousNode() const +{ + return m_previousNode; +} +void ExecutionNode::generateDotTree(QString& s) +{ + 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(" -> "); + s.append(m_nextNode->toString(false)); + s.append("[label=\"next\"];\n"); + // s.append(" [label=\"nextNode\"];\n"); + m_nextNode->generateDotTree(s); + } + else + { + s.append(toString(false)); + s.append(" -> "); + s.append("nullptr;\n"); + } + if(nullptr != m_result) + { + s.append(toString(false)); + s.append(" ->"); + s.append(m_result->toString(false)); + s.append(" [label=\"Result\", style=\"dashed\"];\n"); + if(nullptr == m_nextNode) + m_result->generateDotTree(s); + } +} +qint64 ExecutionNode::getScalarResult() +{ + if(m_result == nullptr) + return 0; + return m_result->getResult(Dice::RESULT_TYPE::SCALAR).toInt(); +} |