summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2013-10-22 05:17:33 -0700
committerEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2013-10-22 05:17:33 -0700
commitf16847ab29d474e2b20d7f8c9f3a0f229b54c850 (patch)
tree1b66e989cb28ce42070abcf739157170b1f780ff /src
parent0914ea9fc9795cc997f8fdb22a8c678ad0ff40ba (diff)
{auto} support for modulus operator
Diffstat (limited to 'src')
-rw-r--r--src/value.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/value.cpp b/src/value.cpp
index b1ec3c8..5e6d9b0 100644
--- a/src/value.cpp
+++ b/src/value.cpp
@@ -569,6 +569,22 @@ Value &Value::operator/=(const char *value) { return Arithmetic<std::div
Value &Value::operator/=(double value) { return Arithmetic<std::divides>(this).assign(value); }
/**
+ * Divide the object with a certain value and get the rest
+ * Note that this does not use the Arithmetic object, because no conversion between floats is necessary
+ * @param value
+ * @return Value
+ */
+Value &Value::operator%=(const Value &value) { return operator=(numericValue() % value.numericValue()); }
+Value &Value::operator%=(int16_t value) { return operator=(numericValue() % value); }
+Value &Value::operator%=(int32_t value) { return operator=(numericValue() % value); }
+Value &Value::operator%=(int64_t value) { return operator=(numericValue() % value); }
+Value &Value::operator%=(bool value) { return operator=(numericValue() % value); }
+Value &Value::operator%=(char value) { return operator=(numericValue() % value); }
+Value &Value::operator%=(const std::string &value) { return operator=(numericValue() % atoi(value.c_str())); }
+Value &Value::operator%=(const char *value) { return operator=(numericValue() % atoi(value)); }
+Value &Value::operator%=(double value) { return operator=(numericValue() % (int)value); }
+
+/**
* Assignment operator
* @param value
* @return Value
@@ -628,6 +644,20 @@ Value Value::operator/(const std::string &value) { return Arithmetic<std::div
Value Value::operator/(const char *value) { return Arithmetic<std::divides>(this).apply(value); }
Value Value::operator/(double value) { return Arithmetic<std::divides>(this).apply(value); }
+/**
+ * Modulus operator
+ * @param value
+ * @return Value
+ */
+Value Value::operator%(const Value &value) { return Value(numericValue() % value.numericValue()); }
+Value Value::operator%(int16_t value) { return Value(numericValue() % value); }
+Value Value::operator%(int32_t value) { return Value(numericValue() % value); }
+Value Value::operator%(int64_t value) { return Value(numericValue() % value); }
+Value Value::operator%(bool value) { return Value(numericValue() % value); }
+Value Value::operator%(char value) { return Value(numericValue() % value); }
+Value Value::operator%(const std::string &value) { return Value(numericValue() % atoi(value.c_str())); }
+Value Value::operator%(const char *value) { return Value(numericValue() % atoi(value)); }
+Value Value::operator%(double value) { return Value(numericValue() % (int)value); }
/**
* The type of object