aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/node
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2015-10-11 16:06:53 +0200
committerRenaud G <renaud@rolisteam.org>2015-10-11 16:06:53 +0200
commit2036d7d5e028c08b022390d607a2ead188e7cc90 (patch)
treea527c6409927189d1a5d126ac1576eab7e93caf5 /node
parent84691771b54365160f5b1d54033e00187dbbf043 (diff)
parent29f0126a7b8ae3479597252f5056d5e67b6ed10d (diff)
downloadOneRoll-2036d7d5e028c08b022390d607a2ead188e7cc90.tar.gz
OneRoll-2036d7d5e028c08b022390d607a2ead188e7cc90.zip
Merge branch 'rangeInList'
resolved conflicts and merge rangeInList in master. Conflicts: HelpMe.md diceparser.cpp parsingtoolbox.cpp result/result.cpp result/stringresult.h
Diffstat (limited to 'node')
-rw-r--r--node/countexecutenode.cpp71
-rw-r--r--node/countexecutenode.h2
-rw-r--r--node/dicerollernode.cpp39
-rw-r--r--node/dicerollernode.h38
-rw-r--r--node/executionnode.cpp25
-rw-r--r--node/executionnode.h5
-rw-r--r--node/explosedicenode.cpp11
-rw-r--r--node/explosedicenode.h2
-rw-r--r--node/helpnode.cpp14
-rw-r--r--node/helpnode.h2
-rw-r--r--node/jumpbackwardnode.cpp11
-rw-r--r--node/jumpbackwardnode.h2
-rw-r--r--node/keepdiceexecnode.cpp11
-rw-r--r--node/keepdiceexecnode.h2
-rw-r--r--node/listaliasnode.cpp23
-rw-r--r--node/listaliasnode.h2
-rw-r--r--node/listsetrollnode.cpp86
-rw-r--r--node/listsetrollnode.h13
-rw-r--r--node/numbernode.cpp11
-rw-r--r--node/numbernode.h2
-rw-r--r--node/parenthesesnode.cpp11
-rw-r--r--node/parenthesesnode.h2
-rw-r--r--node/rerolldicenode.cpp12
-rw-r--r--node/rerolldicenode.h2
-rw-r--r--node/scalaroperatornode.cpp29
-rw-r--r--node/scalaroperatornode.h2
-rw-r--r--node/sortresult.cpp12
-rw-r--r--node/sortresult.h2
-rw-r--r--node/startingnode.cpp13
-rw-r--r--node/startingnode.h2
30 files changed, 308 insertions, 151 deletions
diff --git a/node/countexecutenode.cpp b/node/countexecutenode.cpp
index ff3d67b..55b278e 100644
--- a/node/countexecutenode.cpp
+++ b/node/countexecutenode.cpp
@@ -6,11 +6,11 @@
CountExecuteNode::CountExecuteNode()
: m_scalarResult(new ScalarResult()),m_validator(NULL)
{
- m_result = m_scalarResult;
+ m_result = m_scalarResult;
}
void CountExecuteNode::setValidator(Validator* validator)
{
- m_validator = validator;
+ m_validator = validator;
}
CountExecuteNode::~CountExecuteNode()
{
@@ -23,41 +23,48 @@ CountExecuteNode::~CountExecuteNode()
void CountExecuteNode::run(ExecutionNode *previous)
{
m_previousNode = previous;
- if(NULL==previous)
- {
- return;
- }
- DiceResult* previous_result = dynamic_cast<DiceResult*>(previous->getResult());
- if(NULL!=previous_result)
- {
- m_result->setPrevious(previous_result);
- QList<Die*> diceList=previous_result->getResultList();
- qint64 sum = 0;
- foreach(Die* dice,diceList)
- {
- sum+=m_validator->hasValid(dice,true,true);
- }
- m_scalarResult->setValue(sum);
-
-
- if(NULL!=m_nextNode)
- {
- m_nextNode->run(this);
- }
- }
+ if(NULL==previous)
+ {
+ return;
+ }
+ DiceResult* previous_result = dynamic_cast<DiceResult*>(previous->getResult());
+ if(NULL!=previous_result)
+ {
+ m_result->setPrevious(previous_result);
+ QList<Die*> diceList=previous_result->getResultList();
+ qint64 sum = 0;
+ foreach(Die* dice,diceList)
+ {
+ sum+=m_validator->hasValid(dice,true,true);
+ }
+ m_scalarResult->setValue(sum);
+
+
+ if(NULL!=m_nextNode)
+ {
+ m_nextNode->run(this);
+ }
+ }
}
-QString CountExecuteNode::toString() const
+QString CountExecuteNode::toString(bool withlabel) const
{
- return "CountExecuteNode"+m_validator->toString();
+ if(withlabel)
+ {
+ return QString("%1 [label=\"CountExecuteNode %2\"]").arg(m_id).arg(m_validator->toString());
+ }
+ else
+ {
+ return m_id;
+ }
}
qint64 CountExecuteNode::getPriority() const
{
- qint64 priority=0;
- if(NULL!=m_nextNode)
- {
- priority = m_nextNode->getPriority();
- }
+ qint64 priority=0;
+ if(NULL!=m_nextNode)
+ {
+ priority = m_nextNode->getPriority();
+ }
- return priority;
+ return priority;
}
diff --git a/node/countexecutenode.h b/node/countexecutenode.h
index 519403b..167ee82 100644
--- a/node/countexecutenode.h
+++ b/node/countexecutenode.h
@@ -30,7 +30,7 @@ public:
* @brief toString
* @return
*/
- virtual QString toString()const;
+ virtual QString toString(bool withLabel)const;
/**
* @brief getPriority
* @return
diff --git a/node/dicerollernode.cpp b/node/dicerollernode.cpp
index 06148fc..73a7218 100644
--- a/node/dicerollernode.cpp
+++ b/node/dicerollernode.cpp
@@ -8,30 +8,7 @@
#include <QTime>
-//DiceRoller::DiceRoller(QMutex* mutex,DiceResult* diceResult,int faces,int count)
-// : m_mutex(mutex),m_sharedDiceResult(diceResult),m_faces(faces),m_diceCount(count)
-//{
-//}
-
-//void DiceRoller::run()
-//{
-// for(quint64 i=0; i < m_diceCount ; ++i)
-// {
-// Die* die = new Die();
-// die->setFaces(m_faces);
-// die->roll();
-// m_mutex->lock();
-// m_sharedDiceResult->insertResult(die);
-// m_mutex->unlock();
-// }
-//}
-
-
-
-//////////////////////////////////////////////////
-/// \brief DiceRollerNode::DiceRollerNode
-//////////////////////////////////////////////////
DiceRollerNode::DiceRollerNode(quint64 faces,qint64 offset)
: m_faces(faces),m_diceResult(new DiceResult()),m_offset(offset)
{
@@ -61,19 +38,23 @@ void DiceRollerNode::run(ExecutionNode* previous)
m_nextNode->run(this);
}
}
- }
-
-
-
+ }
}
quint64 DiceRollerNode::getFaces()
{
return m_faces;
}
-QString DiceRollerNode::toString() const
+QString DiceRollerNode::toString(bool wl) const
{
- return QString("DiceRollerNode");
+ if(wl)
+ {
+ return QString("%1 [label=\"DiceRollerNode faces: %2\"]").arg(m_id).arg(m_faces);
+ }
+ else
+ {
+ return m_id;
+ }
}
qint64 DiceRollerNode::getPriority() const
{
diff --git a/node/dicerollernode.h b/node/dicerollernode.h
index 726676e..808676f 100644
--- a/node/dicerollernode.h
+++ b/node/dicerollernode.h
@@ -2,35 +2,43 @@
#define DICEROLLERNODE_H
#include <Qt>
-#include <QRunnable>
-#include <QMutex>
#include "executionnode.h"
#include "result/diceresult.h"
-//class DiceRoller : public QRunnable
-//{
-//public:
-// DiceRoller(QMutex* mutex,DiceResult* diceResult,int faces,int count);
-// virtual void run ();
-//private:
-// QMutex* m_mutex;
-// DiceResult* m_sharedDiceResult;
-// int m_faces;
-// quint64 m_diceCount;
-//};
/**
- * @brief The DiceRollerNode class
+ * @brief The DiceRollerNode class rolls dice of one kind.
*/
class DiceRollerNode : public ExecutionNode
{
public:
+ /**
+ * @brief DiceRollerNode builds an instance
+ * @param faces, number of faces of dices
+ * @param offset, first value of dice.
+ */
DiceRollerNode(quint64 faces, qint64 offset = 1);
+ /**
+ * @brief run - starts to roll dice.
+ */
virtual void run(ExecutionNode*);
+ /**
+ * @brief getFaces accessor
+ * @return the face count
+ */
quint64 getFaces();
- virtual QString toString()const;
+ /**
+ * @brief toString
+ * @param wl
+ * @return use to generate dot tree;
+ */
+ virtual QString toString(bool wl)const;
+ /**
+ * @brief getPriority
+ * @return priority for dice roll: 4 (higher)
+ */
virtual qint64 getPriority() const;
//private members
private:
diff --git a/node/executionnode.cpp b/node/executionnode.cpp
index dba56fc..abcb7cf 100644
--- a/node/executionnode.cpp
+++ b/node/executionnode.cpp
@@ -1,13 +1,14 @@
#include "executionnode.h"
+#include <QUuid>
+
ExecutionNode::ExecutionNode()
- : m_nextNode(NULL),m_result(NULL),m_previousNode(NULL)
+ : m_nextNode(NULL),m_result(NULL),m_previousNode(NULL),m_id(QString("\"%1\"").arg(QUuid::createUuid().toString()))
{
}
ExecutionNode::~ExecutionNode()
{
-
if(NULL!=m_result)
{
delete m_result;
@@ -53,19 +54,29 @@ ExecutionNode* ExecutionNode::getPreviousNode() const
}
void ExecutionNode::generateDotTree(QString& s)
{
- s.append(toString());
+ s.append(toString(true));
+ s.append(";\n");
+
if(NULL!=m_nextNode)
{
+ s.append(toString(false));
s.append(" -> ");
- s.append(m_nextNode->toString());
- s.append(" [label=\"nextNode\"];\n");
+ s.append(m_nextNode->toString(false));
+ s.append(";\n");
+// s.append(" [label=\"nextNode\"];\n");
m_nextNode->generateDotTree(s);
}
else
{
+ s.append(toString(false));
s.append(" -> ");
- s.append("NULL");
- s.append(" [label=\"nextNode\"];\n");
+ s.append("NULL;\n");
+
+
+ s.append(toString(false));
+ s.append(" ->");
+ s.append(m_result->toString(false));
+ s.append(" [label=\"Result\"];\n");
m_result->generateDotTree(s);
}
diff --git a/node/executionnode.h b/node/executionnode.h
index 39d714b..41f2b79 100644
--- a/node/executionnode.h
+++ b/node/executionnode.h
@@ -3,6 +3,7 @@
#include "result/result.h"
#include <QDebug>
+
/**
* @brief The ExecutionNode class
*/
@@ -46,7 +47,7 @@ public:
* @brief toString
* @return
*/
- virtual QString toString()const=0;
+ virtual QString toString(bool withLabel)const=0;
/**
* @brief getPriority
* @return
@@ -85,6 +86,8 @@ protected:
* @brief m_errors
*/
QMap<ExecutionNode::ERROR_CODE,QString> m_errors;
+
+ QString m_id;
};
#endif // EXECUTIONNODE_H
diff --git a/node/explosedicenode.cpp b/node/explosedicenode.cpp
index c0ebfe7..cdbeb6c 100644
--- a/node/explosedicenode.cpp
+++ b/node/explosedicenode.cpp
@@ -44,9 +44,16 @@ void ExploseDiceNode::setValidator(Validator* val)
{
m_validator = val;
}
-QString ExploseDiceNode::toString() const
+QString ExploseDiceNode::toString(bool withlabel) const
{
- return QString("ExploseDiceNode [label=\"ExploseDiceNode %1\"]").arg(m_validator->toString());
+ if(withlabel)
+ {
+ return QString("%1 [label=\"ExploseDiceNode %2\"]").arg(m_id).arg(m_validator->toString());
+ }
+ else
+ {
+ return m_id;
+ }
}
qint64 ExploseDiceNode::getPriority() const
{
diff --git a/node/explosedicenode.h b/node/explosedicenode.h
index f5d0f6e..65c0abd 100644
--- a/node/explosedicenode.h
+++ b/node/explosedicenode.h
@@ -16,7 +16,7 @@ public:
virtual ~ExploseDiceNode();
virtual void run(ExecutionNode* previous = NULL);
virtual void setValidator(Validator* );
- virtual QString toString()const;
+ virtual QString toString(bool )const;
virtual qint64 getPriority() const;
protected:
diff --git a/node/helpnode.cpp b/node/helpnode.cpp
index dd5f087..6f3916a 100644
--- a/node/helpnode.cpp
+++ b/node/helpnode.cpp
@@ -34,8 +34,7 @@ void HelpNode::run(ExecutionNode* previous)
{
if(previous->getResult() == NULL)
{
- txtResult->setText(toString());
-
+ txtResult->setText(QObject::tr("Rolisteam Dice Parser:\nFull documentation at: %1").arg(m_path));
}
else
{
@@ -49,9 +48,16 @@ void HelpNode::run(ExecutionNode* previous)
m_nextNode->run(this);
}
}
-QString HelpNode::toString() const
+QString HelpNode::toString(bool wl) const
{
- return QObject::tr("Rolisteam Dice Parser:\nFull documentation at: %1 \n").arg(m_path);
+ if(wl)
+ {
+ return QString("%1 [label=\"Rolisteam Dice Parser:\nFull documentation at: %2\"]").arg(m_id).arg(m_path);
+ }
+ else
+ {
+ return m_id;
+ }
}
qint64 HelpNode::getPriority() const
diff --git a/node/helpnode.h b/node/helpnode.h
index be21b67..ba59f1f 100644
--- a/node/helpnode.h
+++ b/node/helpnode.h
@@ -45,7 +45,7 @@ public:
* @brief toString
* @return
*/
- virtual QString toString()const;
+ virtual QString toString(bool )const;
/**
* @brief getPriority
* @return
diff --git a/node/jumpbackwardnode.cpp b/node/jumpbackwardnode.cpp
index be759ce..b0a5c8e 100644
--- a/node/jumpbackwardnode.cpp
+++ b/node/jumpbackwardnode.cpp
@@ -34,9 +34,16 @@ qint64 JumpBackwardNode::getPriority() const
{
return 4;
}
-QString JumpBackwardNode::toString() const
+QString JumpBackwardNode::toString(bool wl) const
{
- return QString("JumpBackwardNode");
+ if(wl)
+ {
+ return QString("%1 [label=\"JumpBackwardNode\"]").arg(m_id);
+ }
+ else
+ {
+ return m_id;
+ }
}
void JumpBackwardNode::run(ExecutionNode* previous)
{
diff --git a/node/jumpbackwardnode.h b/node/jumpbackwardnode.h
index 469c64a..a89d0d3 100644
--- a/node/jumpbackwardnode.h
+++ b/node/jumpbackwardnode.h
@@ -43,7 +43,7 @@ public:
* @brief toString
* @return
*/
- virtual QString toString() const;
+ virtual QString toString(bool) const;
/**
* @brief getPriority
* @return
diff --git a/node/keepdiceexecnode.cpp b/node/keepdiceexecnode.cpp
index a230107..2ca54f4 100644
--- a/node/keepdiceexecnode.cpp
+++ b/node/keepdiceexecnode.cpp
@@ -60,9 +60,16 @@ void KeepDiceExecNode::setDiceKeepNumber(quint64 n)
{
m_numberOfDice = n;
}
-QString KeepDiceExecNode::toString() const
+QString KeepDiceExecNode::toString(bool wl) const
{
- return QString("KeepDiceExecNode [label=\"KeepDiceExecNode %1\"]").arg(m_numberOfDice);
+ if(wl)
+ {
+ return QString("%1 [label=\"KeepDiceExecNode %2\"]").arg(m_id).arg(m_numberOfDice);
+ }
+ else
+ {
+ return m_id;
+ }
}
qint64 KeepDiceExecNode::getPriority() const
{
diff --git a/node/keepdiceexecnode.h b/node/keepdiceexecnode.h
index 01f5028..f86daa5 100644
--- a/node/keepdiceexecnode.h
+++ b/node/keepdiceexecnode.h
@@ -34,7 +34,7 @@ public:
virtual void run(ExecutionNode *previous);
virtual void setDiceKeepNumber(quint64 );
- virtual QString toString()const;
+ virtual QString toString(bool)const;
virtual qint64 getPriority() const;
private:
quint64 m_numberOfDice;
diff --git a/node/listaliasnode.cpp b/node/listaliasnode.cpp
index 1809eac..9ced186 100644
--- a/node/listaliasnode.cpp
+++ b/node/listaliasnode.cpp
@@ -59,14 +59,23 @@ QString ListAliasNode::buildList() const
}
return result;
}
-QString ListAliasNode::toString() const
+QString ListAliasNode::toString(bool wl) const
{
- QStringList resultList;
- foreach(DiceAlias* key, *m_aliasList)
- {
- resultList << "{" <<key->getCommand() << key->getValue()<< "}";
- }
- return QString("ListAliasNode [label=\"ListAliasNode %1\"]").arg(resultList.join(","));
+ QStringList resultList;
+ foreach(DiceAlias* key, *m_aliasList)
+ {
+ resultList << "{" <<key->getCommand() << key->getValue()<< "}";
+ }
+
+ if(wl)
+ {
+ return QString("%1 [label=\"ListAliasNode %2\"]").arg(m_id).arg(resultList.join(","));
+ }
+ else
+ {
+ return m_id;
+ }
+
}
qint64 ListAliasNode::getPriority() const
diff --git a/node/listaliasnode.h b/node/listaliasnode.h
index e8f8b0f..2f83a1b 100644
--- a/node/listaliasnode.h
+++ b/node/listaliasnode.h
@@ -42,7 +42,7 @@ public:
* @brief toString
* @return
*/
- virtual QString toString() const;
+ virtual QString toString(bool) const;
/**
* @brief buildList
* @return
diff --git a/node/listsetrollnode.cpp b/node/listsetrollnode.cpp
index fdc17a5..9f15d36 100644
--- a/node/listsetrollnode.cpp
+++ b/node/listsetrollnode.cpp
@@ -22,7 +22,7 @@
#include "die.h"
ListSetRollNode::ListSetRollNode()
- :m_diceResult(new DiceResult()),m_stringResult(new StringResult())
+ :m_diceResult(new DiceResult()),m_stringResult(new StringResult()),m_unique(false)
{
m_result = m_stringResult;
}
@@ -39,19 +39,21 @@ QStringList ListSetRollNode::getList()
{
return m_values;
}
-QString ListSetRollNode::toString() const
+QString ListSetRollNode::toString(bool wl) const
{
- return QString("ListSetRollNode [label=\"ListSetRoll list:%1\"]").arg(m_values.join(','));
+ if(wl)
+ {
+ return QString("%1 [label=\"ListSetRoll list:%2\"]").arg(m_id).arg(m_values.join(","));
+ }
+ else
+ {
+ return m_id;
+ }
+
}
qint64 ListSetRollNode::getPriority() const
{
qint64 priority=4;
-// if(NULL!=m_nextNode)
-// {
-// priority = m_nextNode->getPriority();
-// }
-
-
return priority;
}
void ListSetRollNode::run(ExecutionNode* previous)
@@ -68,13 +70,10 @@ void ListSetRollNode::run(ExecutionNode* previous)
for(quint64 i=0; i < diceCount ; ++i)
{
Die* die = new Die();
- die->setFaces(m_values.size());
+ computeFacesNumber(die);
die->roll();
m_diceResult->insertResult(die);
- if(die->getValue()-1<m_values.size())
- {
- rollResult << m_values[die->getValue()-1];
- }
+ getValueFromDie(die,rollResult);
}
m_stringResult->setText(rollResult.join(","));
if(NULL!=m_nextNode)
@@ -83,11 +82,64 @@ void ListSetRollNode::run(ExecutionNode* previous)
}
}
}
-
-
-
}
void ListSetRollNode::setListValue(QStringList lirs)
{
m_values = lirs;
}
+void ListSetRollNode::setUnique(bool u)
+{
+ m_unique = u;
+}
+void ListSetRollNode::setRangeList(QList<Range>& ranges)
+{
+ m_rangeList = ranges;
+}
+void ListSetRollNode::computeFacesNumber(Die* die)
+{
+ if(m_rangeList.isEmpty())
+ {
+ die->setFaces(m_values.size());
+ }
+ else
+ {
+ Q_ASSERT(m_values.size() == m_rangeList.size());
+ qint64 max;
+ int i=0;
+ foreach(Range range, m_rangeList)
+ {
+ if(((i==0)||(max<range.getEnd()))&&(range.isFullyDefined()))
+ {
+ // qDebug()<< range.isFullyDefined() << range.getEnd();
+ max= range.getEnd();
+ }
+ ++i;
+ }
+ //qDebug() << "set Faces"<<max;
+ die->setFaces(max);
+ }
+
+}
+void ListSetRollNode::getValueFromDie(Die* die,QStringList& rollResult)
+{
+ if(m_rangeList.isEmpty())
+ {
+ if(die->getValue()-1<m_values.size())
+ {
+ rollResult << m_values[die->getValue()-1];
+ }
+ }
+ else
+ {
+ Q_ASSERT(m_values.size() == m_rangeList.size());
+ int i=0;
+ foreach (Range range, m_rangeList)
+ {
+ if(range.hasValid(die,false))
+ {
+ rollResult << m_values[i];
+ }
+ ++i;
+ }
+ }
+}
diff --git a/node/listsetrollnode.h b/node/listsetrollnode.h
index 3102ade..5f381f5 100644
--- a/node/listsetrollnode.h
+++ b/node/listsetrollnode.h
@@ -27,6 +27,7 @@
#include "executionnode.h"
#include "result/diceresult.h"
#include "result/stringresult.h"
+#include "range.h"
/**
* @brief The ListSetRollNode class is dedicated to pick up item from list.
*/
@@ -36,17 +37,25 @@ public:
ListSetRollNode();
virtual ~ListSetRollNode();
virtual void run(ExecutionNode* previous = NULL);
- virtual QString toString()const;
+ virtual QString toString(bool)const;
virtual qint64 getPriority() const;
QStringList getList();
void setListValue(QStringList);
+ void setUnique(bool );
+ void setRangeList(QList<Range>&);
+
+
+private:
+ void getValueFromDie(Die* die,QStringList& rollResult);
+ void computeFacesNumber(Die* die);
private:
QStringList m_values;
DiceResult* m_diceResult;
StringResult* m_stringResult;
-
+ bool m_unique;
+ QList<Range> m_rangeList;
};
#endif // LISTSETROLLNODE_H
diff --git a/node/numbernode.cpp b/node/numbernode.cpp
index c63aadf..e2da54f 100644
--- a/node/numbernode.cpp
+++ b/node/numbernode.cpp
@@ -44,9 +44,16 @@ void NumberNode::setNumber(qint64 a)
m_scalarResult->setValue(a);
m_number = a;
}
-QString NumberNode::toString() const
+QString NumberNode::toString(bool withLabel) const
{
- return QString("NumberNode [label=\"NumberNode %1\"]").arg(m_number);
+ if(withLabel)
+ {
+ return QString("%1 [label=\"NumberNode %2\"]").arg(m_id).arg(m_number);
+ }
+ else
+ {
+ return m_id;
+ }
}
qint64 NumberNode::getPriority() const
{
diff --git a/node/numbernode.h b/node/numbernode.h
index 3c43a51..50d29ad 100644
--- a/node/numbernode.h
+++ b/node/numbernode.h
@@ -34,7 +34,7 @@ public:
NumberNode();
void run(ExecutionNode* previous);
void setNumber(qint64);
-virtual QString toString()const;
+ virtual QString toString(bool withLabel)const;
virtual qint64 getPriority() const;
private:
qint64 m_number;
diff --git a/node/parenthesesnode.cpp b/node/parenthesesnode.cpp
index f81fc1c..f54a976 100644
--- a/node/parenthesesnode.cpp
+++ b/node/parenthesesnode.cpp
@@ -50,9 +50,16 @@ void ParenthesesNode::run(ExecutionNode* /*previous*/)
m_nextNode->run(this);
}
}
-QString ParenthesesNode::toString() const
+QString ParenthesesNode::toString(bool b) const
{
- return "ParenthesesNode";
+ if(b)
+ {
+ return QString("%1 [label=\"ParenthesesNode\"]").arg(m_id);
+ }
+ else
+ {
+ return m_id;
+ }
}
qint64 ParenthesesNode::getPriority() const
{
diff --git a/node/parenthesesnode.h b/node/parenthesesnode.h
index 999e7bd..fbb1caf 100644
--- a/node/parenthesesnode.h
+++ b/node/parenthesesnode.h
@@ -34,7 +34,7 @@ public:
virtual void run(ExecutionNode* previous = NULL);
void setInternelNode(ExecutionNode* node);
- virtual QString toString()const;
+ virtual QString toString(bool)const;
virtual qint64 getPriority() const;
private:
ExecutionNode* m_internalNode;
diff --git a/node/rerolldicenode.cpp b/node/rerolldicenode.cpp
index 038a3ec..ce8f109 100644
--- a/node/rerolldicenode.cpp
+++ b/node/rerolldicenode.cpp
@@ -46,9 +46,17 @@ void RerollDiceNode::setValidator(Validator* val)
{
m_validator = val;
}
-QString RerollDiceNode::toString() const
+QString RerollDiceNode::toString(bool wl) const
{
- return QString("RerollDiceNode [label=\"RerollDiceNode validatior:%1\"").arg(m_validator->toString());
+ if(wl)
+ {
+ return QString("%1 [label=\"RerollDiceNode validatior: %2\"]").arg(m_id).arg(m_validator->toString());
+ }
+ else
+ {
+ return m_id;
+ }
+ //return QString("RerollDiceNode [label=\"RerollDiceNode validatior:%1\"");
}
void RerollDiceNode::setAddingMode(bool b)
{
diff --git a/node/rerolldicenode.h b/node/rerolldicenode.h
index a97e448..f456bb3 100644
--- a/node/rerolldicenode.h
+++ b/node/rerolldicenode.h
@@ -39,7 +39,7 @@ public:
* @brief toString
* @return
*/
- virtual QString toString()const;
+ virtual QString toString(bool )const;
/**
diff --git a/node/scalaroperatornode.cpp b/node/scalaroperatornode.cpp
index d532df0..f69cb01 100644
--- a/node/scalaroperatornode.cpp
+++ b/node/scalaroperatornode.cpp
@@ -138,7 +138,7 @@ qint64 ScalarOperatorNode::multiple(qint64 a,qint64 b)
{
return a*b;
}
-QString ScalarOperatorNode::toString() const
+QString ScalarOperatorNode::toString(bool wl) const
{
QString op="";
switch(m_operator)
@@ -159,7 +159,14 @@ QString ScalarOperatorNode::toString() const
break;
}
- return QString("ScalarOperatorNode [label=\"ScalarOperatorNode %1\"").arg(op);
+ if(wl)
+ {
+ return QString("%1 [label=\"ScalarOperatorNode %2\"]").arg(m_id).arg(op);
+ }
+ else
+ {
+ return m_id;
+ }
}
qint64 ScalarOperatorNode::getPriority() const
{
@@ -174,27 +181,31 @@ qint64 ScalarOperatorNode::getPriority() const
}
void ScalarOperatorNode::generateDotTree(QString& s)
{
- s.append(toString());
+ s.append(toString(true));
+ s.append(";\n");
+
if(NULL!=m_nextNode)
{
+ s.append(toString(false));
s.append(" -> ");
- s.append(m_nextNode->toString());
- s.append(" [label=\"nextNode\"];\n");
+ s.append(m_nextNode->toString(false));
+ s.append(";\n");
m_nextNode->generateDotTree(s);
}
else
{
+ s.append(toString(false));
s.append(" -> ");
- s.append("NULL");
- s.append(" [label=\"nextNode\"];\n");
+ s.append("NULL");
+ s.append(" [label=\"nextNode\"];\n");
}
QString str;
str.append("\n");
if(NULL!=m_internalNode)
{
- str.append(toString());
+ str.append(toString(false));
str.append(" -> ");
- str.append(m_internalNode->toString());
+ str.append(m_internalNode->toString(false));
str.append(" [label=\"internalNode\"];\n");
m_internalNode->generateDotTree(str);
}
diff --git a/node/scalaroperatornode.h b/node/scalaroperatornode.h
index e43f6f8..4aab39a 100644
--- a/node/scalaroperatornode.h
+++ b/node/scalaroperatornode.h
@@ -42,7 +42,7 @@ public:
bool setOperatorChar(QChar c);
void setInternalNode(ExecutionNode* node);
- virtual QString toString()const;
+ virtual QString toString(bool wl)const;
virtual qint64 getPriority() const;
void generateDotTree(QString& s);
diff --git a/node/sortresult.cpp b/node/sortresult.cpp
index 421beb3..d149507 100644
--- a/node/sortresult.cpp
+++ b/node/sortresult.cpp
@@ -105,9 +105,17 @@ void SortResultNode::setSortAscending(bool asc)
{
m_ascending = asc;
}
-QString SortResultNode::toString() const
+QString SortResultNode::toString(bool wl) const
{
- return QString("SortResultNode [label=\"SortResultNode %1\"").arg(m_ascending ? "Ascending":"Descending");
+ if(wl)
+ {
+ return QString("%1 [label=\"SortResultNode %2\"]").arg(m_id).arg(m_ascending ? "Ascending":"Descending");
+ }
+ else
+ {
+ return m_id;
+ }
+
}
qint64 SortResultNode::getPriority() const
{
diff --git a/node/sortresult.h b/node/sortresult.h
index d505e4b..c4f96dc 100644
--- a/node/sortresult.h
+++ b/node/sortresult.h
@@ -49,7 +49,7 @@ public:
* @brief toString
* @return
*/
- virtual QString toString()const;
+ virtual QString toString(bool wl)const;
/**
* @brief getPriority
* @return
diff --git a/node/startingnode.cpp b/node/startingnode.cpp
index 7e13f5d..5f1966e 100644
--- a/node/startingnode.cpp
+++ b/node/startingnode.cpp
@@ -32,10 +32,19 @@ void StartingNode::run(ExecutionNode*)
m_nextNode->run(this);
}
}
-QString StartingNode::toString() const
+QString StartingNode::toString(bool withlabel) const
{
- return "StartingNode [shape=box]";
+ if(withlabel)
+ {
+ return QString("%1 [label=\"StartingNode\"]").arg(m_id);
+ }
+ else
+ {
+ return m_id;
+ }
}
+
+
qint64 StartingNode::getPriority() const
{
qint64 priority=0;
diff --git a/node/startingnode.h b/node/startingnode.h
index 1edebc9..923e84b 100644
--- a/node/startingnode.h
+++ b/node/startingnode.h
@@ -41,7 +41,7 @@ public:
* @brief toString
* @return
*/
- virtual QString toString()const;
+ virtual QString toString(bool withlabel)const;
/**
* @brief getPriority
* @return