aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--parsingtoolbox.cpp27
-rw-r--r--parsingtoolbox.h5
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