From d3b925e690b56ef4dce68246661f5c55a93564cf Mon Sep 17 00:00:00 2001 From: Renaud G Date: Sun, 10 Jan 2016 14:40:06 +0100 Subject: -Add management of operationCondition : modulo operator. --- parsingtoolbox.cpp | 48 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) (limited to 'parsingtoolbox.cpp') diff --git a/parsingtoolbox.cpp b/parsingtoolbox.cpp index 495ae6e..7646970 100644 --- a/parsingtoolbox.cpp +++ b/parsingtoolbox.cpp @@ -39,6 +39,9 @@ ParsingToolBox::ParsingToolBox() m_logicOperation->insert("|",CompositeValidator::OR); m_logicOperation->insert("^",CompositeValidator::EXCLUSIVE_OR); m_logicOperation->insert("&",CompositeValidator::AND); + + m_conditionOperation = new QMap(); + m_conditionOperation->insert("%",OperationCondition::Modulo); } ExecutionNode* ParsingToolBox::addSort(ExecutionNode* e,bool b) { @@ -47,6 +50,29 @@ ExecutionNode* ParsingToolBox::addSort(ExecutionNode* e,bool b) e->setNextNode(nodeSort); return nodeSort; } +bool ParsingToolBox::readDiceLogicOperator(QString& str,OperationCondition::ConditionOperator& op) +{ + QString longKey; + foreach(QString tmp, m_conditionOperation->keys()) + { + if(str.startsWith(tmp)) + { + if(longKey.size()0) + { + str=str.remove(0,longKey.size()); + op = m_conditionOperation->value(longKey); + return true; + } + + return false; +} + bool ParsingToolBox::readLogicOperator(QString& str,BooleanCondition::LogicOperator& op) { QString longKey; @@ -82,9 +108,29 @@ Validator* ParsingToolBox::readValidator(QString& str) Validator* returnVal=NULL; BooleanCondition::LogicOperator myLogicOp = BooleanCondition::Equal; bool hasReadLogicOperator = readLogicOperator(str,myLogicOp); + + + OperationCondition::ConditionOperator condiOp = OperationCondition::Modulo; + bool hasDiceLogicOperator = readDiceLogicOperator(str,condiOp); qint64 value=0; - if(readNumber(str,value)) + if(hasDiceLogicOperator) + { + if(readNumber(str,value)) + { + OperationCondition* condition = new OperationCondition(); + condition->setValue(value); + Validator* valid = readValidator(str); + BooleanCondition* boolC = dynamic_cast(valid); + if(NULL!=boolC) + { + condition->setBoolean(boolC); + } + returnVal = condition; + } + + } + else if(readNumber(str,value)) { if(str.startsWith("-")) { -- cgit v1.2.3-70-g09d2