From 241ab15be837b681f3cdfc555ec2e8d2638f759f Mon Sep 17 00:00:00 2001 From: Renaud Guezennec Date: Mon, 22 Dec 2025 21:45:47 +0100 Subject: [various fixes]Cli improvement of managing color. --- src/libparser/node/repeaternode.cpp | 30 ++++++++++++++++++++++++------ src/libparser/node/repeaternode.h | 4 +++- 2 files changed, 27 insertions(+), 7 deletions(-) (limited to 'src/libparser/node') diff --git a/src/libparser/node/repeaternode.cpp b/src/libparser/node/repeaternode.cpp index 320e0d4..11a0728 100644 --- a/src/libparser/node/repeaternode.cpp +++ b/src/libparser/node/repeaternode.cpp @@ -76,13 +76,13 @@ void RepeaterNode::run(ExecutionNode* previousNode) if(!times) return; - std::vector m_startingNodes; + std::vector startingNodes; auto timeCount= times->getResult(Dice::RESULT_TYPE::SCALAR).toInt(); auto cmd= makeCopy(m_cmd); std::vector resultVec; for(int i= 0; i < timeCount; ++i) { - m_startingNodes.push_back(cmd); + startingNodes.push_back(cmd); std::for_each(cmd.begin(), cmd.end(), [this, &resultVec](ExecutionNode* node) { @@ -111,7 +111,7 @@ void RepeaterNode::run(ExecutionNode* previousNode) auto string= new StringResult(); QStringList listOfStrResult; - for(auto instructions : m_startingNodes) + for(const auto& instructions : startingNodes) { ParsingToolBox parsingBox; parsingBox.setStartNodes(instructions); @@ -127,13 +127,12 @@ void RepeaterNode::run(ExecutionNode* previousNode) // qDebug().noquote() << listOfStrResult.join('\n'); } - /*if(nullptr != m_nextNode) - m_nextNode->run(this);*/ + m_startingNodes= startingNodes; } QString RepeaterNode::toString(bool withLabel) const { - return withLabel ? QStringLiteral("") : QStringLiteral(""); + return withLabel ? QStringLiteral("%1 [label=\"RepeaterNode\"]").arg(m_id) : m_id; } qint64 RepeaterNode::getPriority() const @@ -160,3 +159,22 @@ void RepeaterNode::setSumAll(bool b) { m_sumAll= b; } + +void RepeaterNode::generateDotTree(QString& s) +{ + s.append(toString(true)); + s.append(";\n"); + + for(auto const& commands : m_startingNodes) + { + ExecutionNode* previous= this; + for(auto const& cmd : commands) + { + s.append(previous->toString(false)); + s.append(" -> "); + s.append(cmd->toString(false)); + cmd->generateDotTree(s); + previous= cmd; + } + } +} diff --git a/src/libparser/node/repeaternode.h b/src/libparser/node/repeaternode.h index fa1a50a..f6c4c39 100644 --- a/src/libparser/node/repeaternode.h +++ b/src/libparser/node/repeaternode.h @@ -23,7 +23,6 @@ #define REPEATER_NODE_H #include "node/executionnode.h" -#include class RepeaterNode : public ExecutionNode { @@ -39,8 +38,11 @@ public: void setTimeNode(ExecutionNode* times); void setSumAll(bool b); + virtual void generateDotTree(QString& s) override; + private: std::vector m_cmd; + std::vector> m_startingNodes; ExecutionNode* m_times= nullptr; bool m_sumAll= false; }; -- cgit v1.2.3-70-g09d2