From 26e813ad2e4fa13f4b2873df99cb8e3be380c875 Mon Sep 17 00:00:00 2001 From: Renaud G Date: Thu, 27 Aug 2015 01:29:13 +0200 Subject: add method to get all string results --- diceparser.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'diceparser.cpp') diff --git a/diceparser.cpp b/diceparser.cpp index 3831400..8c910a2 100644 --- a/diceparser.cpp +++ b/diceparser.cpp @@ -393,6 +393,29 @@ QString DiceParser::getStringResult() } return str; } +QStringList DiceParser::getAllStringResult(bool& hasAlias) +{ + ExecutionNode* next = getLeafNode(); + Result* result=next->getResult(); + QStringList stringListResult; + + while(NULL!=result) + { + if(result->hasResultOfType(Result::STRING)) + { + StringResult* stringResult = dynamic_cast(result); + if(NULL!=stringResult) + { + stringListResult << stringResult->getText(); + hasAlias = stringResult->hasHighLight(); + } + } + result = result->getPrevious(); + } + + return stringListResult; +} + void DiceParser::getLastDiceResult(ExportedDiceResult& diceValues) { ExecutionNode* next = getLeafNode(); -- cgit v1.2.3-70-g09d2 From da1db7bc2436f94ab288d8da8d98a8209d3d2caa Mon Sep 17 00:00:00 2001 From: Renaud G Date: Fri, 28 Aug 2015 08:35:33 +0200 Subject: fix cppcheck issue --- booleancondition.cpp | 1 + diceparser.cpp | 17 +++++++++-------- node/keepdiceexecnode.cpp | 4 +--- node/parenthesesnode.cpp | 1 + node/scalaroperatornode.cpp | 2 +- node/sortresult.cpp | 7 +------ parsingtoolbox.cpp | 5 +++-- result/result.cpp | 2 +- 8 files changed, 18 insertions(+), 21 deletions(-) (limited to 'diceparser.cpp') diff --git a/booleancondition.cpp b/booleancondition.cpp index 533ec02..c5fd7c7 100644 --- a/booleancondition.cpp +++ b/booleancondition.cpp @@ -23,6 +23,7 @@ BooleanCondition::BooleanCondition() + : m_operator(Equal) { } qint64 BooleanCondition::hasValid(Die* b,bool recursive,bool unhighlight) const diff --git a/diceparser.cpp b/diceparser.cpp index 8c910a2..bfe8247 100644 --- a/diceparser.cpp +++ b/diceparser.cpp @@ -42,7 +42,7 @@ #define DEFAULT_FACES_NUMBER 10 DiceParser::DiceParser() - : m_start(NULL) + : m_start(NULL),m_current(NULL) { m_parsingToolbox = new ParsingToolBox(); @@ -166,7 +166,8 @@ bool DiceParser::parseLine(QString str) keepParsing =!str.isEmpty(); if(keepParsing) { - keepParsing = readOperator(str,m_current); + // keepParsing = + readOperator(str,m_current); m_current = getLatestNode(m_current); } @@ -428,7 +429,6 @@ void DiceParser::getLastDiceResult(ExportedDiceResult& diceValues) DiceResult* diceResult = dynamic_cast(result); if(NULL!=diceResult) { - bool hasResult = false; quint64 face=0; ListDiceResult listpair; foreach(Die* die, diceResult->getResultList()) @@ -436,7 +436,6 @@ void DiceParser::getLastDiceResult(ExportedDiceResult& diceValues) if(!die->hasBeenDisplayed()) { QList valuesResult; - hasResult=true; valuesResult.append(die->getValue()); die->displayed(); face = die->getFaces(); @@ -545,10 +544,10 @@ bool DiceParser::readDice(QString& str,ExecutionNode* & node) if(readDiceOperator(str,currentOperator)) { - int num; - int end; if(currentOperator==D) { + int num; + int end; if(m_parsingToolbox->readNumber(str,num)) { if(num<1) @@ -837,7 +836,8 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/ if(NULL!=validator) { /// @todo display warning here. - bool b = m_parsingToolbox->isValidValidator(previous,validator); + //bool b = + m_parsingToolbox->isValidValidator(previous,validator); CountExecuteNode* countNode = new CountExecuteNode(); countNode->setValidator(validator); @@ -859,7 +859,8 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/ if(NULL!=validator) { /// @todo display warning here. - bool b = m_parsingToolbox->isValidValidator(previous,validator); + //bool b = + m_parsingToolbox->isValidValidator(previous,validator); RerollDiceNode* rerollNode = new RerollDiceNode(); if(m_OptionOp->value(tmp)==RerollAndAdd) { diff --git a/node/keepdiceexecnode.cpp b/node/keepdiceexecnode.cpp index a225ac4..a230107 100644 --- a/node/keepdiceexecnode.cpp +++ b/node/keepdiceexecnode.cpp @@ -42,10 +42,8 @@ m_previousNode = previous; if(NULL!=previousDiceResult) { QList diceList=previousDiceResult->getResultList(); - QList diceList2=m_diceResult->getResultList(); + QList diceList2 = diceList.mid(0,m_numberOfDice); - - diceList2 = diceList.mid(0,m_numberOfDice); foreach(Die* tmp,diceList.mid(m_numberOfDice,-1)) { tmp->setHighlighted(false); diff --git a/node/parenthesesnode.cpp b/node/parenthesesnode.cpp index 2876147..f81fc1c 100644 --- a/node/parenthesesnode.cpp +++ b/node/parenthesesnode.cpp @@ -22,6 +22,7 @@ #include "parenthesesnode.h" ParenthesesNode::ParenthesesNode() + : m_internalNode(NULL) { } diff --git a/node/scalaroperatornode.cpp b/node/scalaroperatornode.cpp index c5f91f9..d532df0 100644 --- a/node/scalaroperatornode.cpp +++ b/node/scalaroperatornode.cpp @@ -26,7 +26,7 @@ ScalarOperatorNode::ScalarOperatorNode() - : m_internalNode(NULL),m_scalarResult(new ScalarResult()) + : m_internalNode(NULL),m_scalarResult(new ScalarResult()),m_operator(PLUS) { m_scalarOperationList.insert('+',PLUS); m_scalarOperationList.insert('-',MINUS); diff --git a/node/sortresult.cpp b/node/sortresult.cpp index 44a25f0..421beb3 100644 --- a/node/sortresult.cpp +++ b/node/sortresult.cpp @@ -54,14 +54,11 @@ void SortResultNode::run(ExecutionNode* node) bool found = false; int start = 0; int end = diceList2.size(); - int distance = 0; Die* tmp2 = NULL; while(!found) { - distance = end-start; + int distance = end-start; j = (start+end)/2; - - if(distance == 0) { j=end; @@ -78,9 +75,7 @@ void SortResultNode::run(ExecutionNode* node) { start=j+1; } - } - } diceList2.insert(j,tmp1); } diff --git a/parsingtoolbox.cpp b/parsingtoolbox.cpp index f6b1f12..2d26d79 100644 --- a/parsingtoolbox.cpp +++ b/parsingtoolbox.cpp @@ -75,7 +75,6 @@ Validator* ParsingToolBox::readValidator(QString& str) { Validator* returnVal=NULL; bool expectSquareBrasket=false; - bool isOk = true; if((str.startsWith("["))) { str=str.remove(0,1); @@ -83,11 +82,13 @@ Validator* ParsingToolBox::readValidator(QString& str) } BooleanCondition::LogicOperator myLogicOp = BooleanCondition::Equal; - bool hasReadLogicOperator = readLogicOperator(str,myLogicOp); + //bool hasReadLogicOperator = + readLogicOperator(str,myLogicOp); int value=0; if(readNumber(str,value)) { + bool isOk = true; if(str.startsWith("-")) { str=str.remove(0,1); diff --git a/result/result.cpp b/result/result.cpp index 257045c..161cfea 100644 --- a/result/result.cpp +++ b/result/result.cpp @@ -22,7 +22,7 @@ #include "result.h" Result::Result() - : m_previous(NULL) + : m_previous(NULL),m_resultTypes(STRING) { } -- cgit v1.2.3-70-g09d2 From 4e36ee1d9ce7016f9fc2a56ff5d039a534c6d5f0 Mon Sep 17 00:00:00 2001 From: Renaud G Date: Sat, 29 Aug 2015 00:18:57 +0200 Subject: fix compilation. --- diceparser.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'diceparser.cpp') diff --git a/diceparser.cpp b/diceparser.cpp index bfe8247..dcb5030 100644 --- a/diceparser.cpp +++ b/diceparser.cpp @@ -181,11 +181,7 @@ bool DiceParser::parseLine(QString str) { m_errorMap.insert(ExecutionNode::NOTHING_UNDERSTOOD,QObject::tr("Nothing was understood")); } - else - { - return false; - } - + return false; } bool DiceParser::readExpression(QString& str,ExecutionNode* & node) -- cgit v1.2.3-70-g09d2 From 7ce5a4af6fb836432eb6ce7637ea09d6a5b4e0bd Mon Sep 17 00:00:00 2001 From: Renaud G Date: Tue, 1 Sep 2015 16:34:56 +0200 Subject: add getAllDiceResult function and hasSeparator --- diceparser.cpp | 45 +++++++++++++++++++++++++++++++++++++++------ diceparser.h | 9 +++++++++ 2 files changed, 48 insertions(+), 6 deletions(-) (limited to 'diceparser.cpp') diff --git a/diceparser.cpp b/diceparser.cpp index dcb5030..802b5f2 100644 --- a/diceparser.cpp +++ b/diceparser.cpp @@ -44,6 +44,7 @@ DiceParser::DiceParser() : m_start(NULL),m_current(NULL) { + m_currentTreeHasSeparator =false; m_parsingToolbox = new ParsingToolBox(); m_mapDiceOp = new QMap(); @@ -145,6 +146,7 @@ void DiceParser::insertAlias(DiceAlias* dice, int i) bool DiceParser::parseLine(QString str) { + m_currentTreeHasSeparator = false; m_errorMap.clear(); if(NULL!=m_start) { @@ -412,7 +414,36 @@ QStringList DiceParser::getAllStringResult(bool& hasAlias) return stringListResult; } +QStringList DiceParser::getAllDiceResult(bool& hasAlias) +{ + ExecutionNode* next = getLeafNode(); + Result* result=next->getResult(); + QList dieListResult; + QStringList stringListResult; + while(NULL!=result) + { + if(result->hasResultOfType(Result::DICE_LIST)) + { + DiceResult* stringResult = dynamic_cast(result); + if(NULL!=stringResult) + { + dieListResult << stringResult->getResultList(); + hasAlias = true; + } + } + result = result->getPrevious(); + } + foreach(Die* die, dieListResult) + { + foreach (qint64 value, die->getListValue()) + { + stringListResult << QString::number(value); + } + } + + return stringListResult; +} void DiceParser::getLastDiceResult(ExportedDiceResult& diceValues) { ExecutionNode* next = getLeafNode(); @@ -701,21 +732,19 @@ bool DiceParser::readOperator(QString& str,ExecutionNode* previous) } else if(readInstructionOperator(str[0])) { - str=str.remove(0,1); - delete node; + str=str.remove(0,1); + delete node; ExecutionNode* nodeExec = NULL; if(readExpression(str,nodeExec)) { - - // nodeExec = getLatestNode(nodeExec); - if(NULL==nodeExec) { return false; } previous->setNextNode(nodeExec); - + m_currentTreeHasSeparator = true; return true; + } } else @@ -728,6 +757,10 @@ bool DiceParser::readOperator(QString& str,ExecutionNode* previous) } return false; } +bool DiceParser::hasSeparator()const +{ + return m_currentTreeHasSeparator; +} DiceRollerNode* DiceParser::addRollDiceNode(qint64 faces,ExecutionNode* previous) { DiceRollerNode* mydiceRoller= new DiceRollerNode(faces); diff --git a/diceparser.h b/diceparser.h index 6cc6d47..3fc2cb7 100644 --- a/diceparser.h +++ b/diceparser.h @@ -196,6 +196,14 @@ public: * @return */ QStringList getAllStringResult(bool& hasAlias); + /** + * @brief getAllDiceResult + * @param hasAlias + * @return + */ + QStringList getAllDiceResult(bool& hasAlias); + + bool hasSeparator()const; private: /** @@ -301,6 +309,7 @@ private: QString m_command; ParsingToolBox* m_parsingToolbox; QString m_helpPath; + bool m_currentTreeHasSeparator; }; #endif // DICEPARSER_H -- cgit v1.2.3-70-g09d2