diff options
| -rw-r--r-- | parsingtoolbox.cpp | 27 | ||||
| -rw-r--r-- | parsingtoolbox.h | 5 |
2 files changed, 31 insertions, 1 deletions
diff --git a/parsingtoolbox.cpp b/parsingtoolbox.cpp index 23e35ba..d396d9c 100644 --- a/parsingtoolbox.cpp +++ b/parsingtoolbox.cpp @@ -42,6 +42,16 @@ ParsingToolBox::ParsingToolBox() m_conditionOperation = new QMap<QString,OperationCondition::ConditionOperator>(); m_conditionOperation->insert("%",OperationCondition::Modulo); + + + m_arithmeticOperation = new QHash<QString,ScalarOperatorNode::ArithmeticOperator>(); + m_arithmeticOperation->insert(QStringLiteral("+"),ScalarOperatorNode::PLUS); + m_arithmeticOperation->insert(QStringLiteral("-"),ScalarOperatorNode::MINUS); + m_arithmeticOperation->insert(QStringLiteral("*"),ScalarOperatorNode::MULTIPLICATION); + m_arithmeticOperation->insert(QStringLiteral("x"),ScalarOperatorNode::MULTIPLICATION); + m_arithmeticOperation->insert(QStringLiteral("/"),ScalarOperatorNode::DIVIDE); + m_arithmeticOperation->insert(QStringLiteral("÷"),ScalarOperatorNode::DIVIDE); + } ExecutionNode* ParsingToolBox::addSort(ExecutionNode* e,bool b) { @@ -73,6 +83,23 @@ bool ParsingToolBox::readDiceLogicOperator(QString& str,OperationCondition::Cond return false; } +bool ParsingToolBox::readArithmeticOperator(QString &str, ScalarOperatorNode::ArithmeticOperator &op) +{ + bool found = false; + //QHash<QString,ScalarOperatorNode::ArithmeticOperator>::Iterator + auto i = m_arithmeticOperation->begin(); + for(; i !=m_arithmeticOperation->end() && !found; ++i) + { + if(str.startsWith(i.key())) + { + op = i.value(); + str=str.remove(0,i.key().size()); + found=true; + } + } + return found; +} + bool ParsingToolBox::readLogicOperator(QString& str,BooleanCondition::LogicOperator& op) { QString longKey; diff --git a/parsingtoolbox.h b/parsingtoolbox.h index 94ef624..1af0efd 100644 --- a/parsingtoolbox.h +++ b/parsingtoolbox.h @@ -30,6 +30,7 @@ #include "operationcondition.h" #include "compositevalidator.h" #include "range.h" +#include "node/scalaroperatornode.h" /** * @brief The ParsingToolBox is gathering many useful methods for dice parsing. @@ -39,6 +40,7 @@ class ParsingToolBox { public: enum LIST_OPERATOR {NONE,UNIQUE}; + /** * @brief ParsingToolBox */ @@ -144,12 +146,13 @@ public: bool readDiceLogicOperator(QString &str, OperationCondition::ConditionOperator &op); - + bool readArithmeticOperator(QString& str, ScalarOperatorNode::ArithmeticOperator& op); private: QMap<QString,BooleanCondition::LogicOperator>* m_logicOp; QMap<QString,CompositeValidator::LogicOperation>* m_logicOperation; QMap<QString,OperationCondition::ConditionOperator>* m_conditionOperation; + QHash<QString,ScalarOperatorNode::ArithmeticOperator>* m_arithmeticOperation; }; #endif // PARSINGTOOLBOX_H |