aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--HelpMe.md4
-rw-r--r--die.cpp1
-rw-r--r--die.h2
-rw-r--r--node/scalaroperatornode.cpp6
-rw-r--r--parsingtoolbox.cpp1
-rw-r--r--result/diceresult.cpp1
6 files changed, 14 insertions, 1 deletions
diff --git a/HelpMe.md b/HelpMe.md
index 8dbd121..f6796ed 100644
--- a/HelpMe.md
+++ b/HelpMe.md
@@ -463,7 +463,11 @@ Result: 16
> 1d10^2
+> 15|2
+Integer division of 15 by 2. Result: 7
+> 15/2
+Division of 15 by 2. Result: 7.5
## Validator
diff --git a/die.cpp b/die.cpp
index 417ab20..7cacf18 100644
--- a/die.cpp
+++ b/die.cpp
@@ -97,6 +97,7 @@ qint64 Die::getValue() const
case MINUS:
value-=tmp;
break;
+ case INTEGER_DIVIDE:
case DIVIDE:
if(tmp!=0)
{
diff --git a/die.h b/die.h
index 24b87cd..b17ced4 100644
--- a/die.h
+++ b/die.h
@@ -34,7 +34,7 @@ public:
/**
* @brief The ArithmeticOperator enum
*/
- enum ArithmeticOperator {PLUS,MINUS,DIVIDE,MULTIPLICATION,POW};
+ enum ArithmeticOperator {PLUS,MINUS,DIVIDE,MULTIPLICATION,INTEGER_DIVIDE, POW};
/**
* @brief Die
*/
diff --git a/node/scalaroperatornode.cpp b/node/scalaroperatornode.cpp
index edc769d..4e24f2f 100644
--- a/node/scalaroperatornode.cpp
+++ b/node/scalaroperatornode.cpp
@@ -81,6 +81,9 @@ void ScalarOperatorNode::run(ExecutionNode* previous)
case Die::DIVIDE:
m_scalarResult->setValue(divide(previousResult->getResult(Result::SCALAR).toReal(),internalResult->getResult(Result::SCALAR).toReal()));
break;
+ case Die::INTEGER_DIVIDE:
+ m_scalarResult->setValue(static_cast<int>(divide(previousResult->getResult(Result::SCALAR).toReal(),internalResult->getResult(Result::SCALAR).toReal())));
+ break;
case Die::POW:
m_scalarResult->setValue(pow(previousResult->getResult(Result::SCALAR).toReal(),internalResult->getResult(Result::SCALAR).toReal()));
break;
@@ -162,6 +165,9 @@ QString ScalarOperatorNode::toString(bool wl) const
case Die::DIVIDE:
op="/";
break;
+ case Die::INTEGER_DIVIDE:
+ op="|";
+ break;
case Die::POW:
op="^";
break;
diff --git a/parsingtoolbox.cpp b/parsingtoolbox.cpp
index 07ad01a..7a3dcad 100644
--- a/parsingtoolbox.cpp
+++ b/parsingtoolbox.cpp
@@ -60,6 +60,7 @@ ParsingToolBox::ParsingToolBox()
m_arithmeticOperation->insert(QStringLiteral("-"),Die::MINUS);
m_arithmeticOperation->insert(QStringLiteral("*"),Die::MULTIPLICATION);
m_arithmeticOperation->insert(QStringLiteral("x"),Die::MULTIPLICATION);
+ m_arithmeticOperation->insert(QStringLiteral("|"),Die::INTEGER_DIVIDE);
m_arithmeticOperation->insert(QStringLiteral("/"),Die::DIVIDE);
m_arithmeticOperation->insert(QStringLiteral("÷"),Die::DIVIDE);
m_arithmeticOperation->insert(QStringLiteral("^"),Die::POW);
diff --git a/result/diceresult.cpp b/result/diceresult.cpp
index ce59cb1..7894b60 100644
--- a/result/diceresult.cpp
+++ b/result/diceresult.cpp
@@ -115,6 +115,7 @@ qreal DiceResult::getScalarResult()
scalar-=tmp->getValue();
break;
case Die::DIVIDE:
+ case Die::INTEGER_DIVIDE:
if(tmp->getValue()!=0)
{
scalar/=tmp->getValue();