summaryrefslogtreecommitdiff
path: root/src/mongo/util/safe_num.h
diff options
context:
space:
mode:
authorBilly Donahue <billy.donahue@mongodb.com>2019-04-24 17:26:22 -0400
committerBilly Donahue <billy.donahue@mongodb.com>2019-04-30 00:28:32 -0400
commit3d2cb8571b68999c10a5fab5bd0e8b9e5e498337 (patch)
treee8df2217e2fd568e25b8cd1a1a3e3aa17d6247cd /src/mongo/util/safe_num.h
parent54e3e3d5de5a87ca76c98c97fb4e46fdfacf525d (diff)
downloadmongo-3d2cb8571b68999c10a5fab5bd0e8b9e5e498337.tar.gz
SERVER-40813 remove all -inl.h files
Diffstat (limited to 'src/mongo/util/safe_num.h')
-rw-r--r--src/mongo/util/safe_num.h98
1 files changed, 96 insertions, 2 deletions
diff --git a/src/mongo/util/safe_num.h b/src/mongo/util/safe_num.h
index f6ef4042533..529adec4878 100644
--- a/src/mongo/util/safe_num.h
+++ b/src/mongo/util/safe_num.h
@@ -242,6 +242,100 @@ private:
// Convenience method for unittest code. Please use accessors otherwise.
std::ostream& operator<<(std::ostream& os, const SafeNum& snum);
-} // namespace mongo
+inline SafeNum::SafeNum() : _type(EOO) {}
+
+inline SafeNum::~SafeNum() {}
+
+inline SafeNum::SafeNum(const SafeNum& rhs) : _type(rhs._type), _value(rhs._value) {}
+
+inline SafeNum& SafeNum::operator=(const SafeNum& rhs) {
+ _type = rhs._type;
+ _value = rhs._value;
+ return *this;
+}
+
+inline SafeNum::SafeNum(int32_t num) : _type(NumberInt) {
+ _value.int32Val = num;
+}
+
+inline SafeNum::SafeNum(int64_t num) : _type(NumberLong) {
+ _value.int64Val = num;
+}
+
+inline SafeNum::SafeNum(double num) : _type(NumberDouble) {
+ _value.doubleVal = num;
+}
+
+inline SafeNum::SafeNum(Decimal128 num) : _type(NumberDecimal) {
+ _value.decimalVal = num.getValue();
+}
+
+inline bool SafeNum::operator==(const SafeNum& rhs) const {
+ return isEquivalent(rhs);
+}
+
+inline bool SafeNum::operator!=(const SafeNum& rhs) const {
+ return !isEquivalent(rhs);
+}
+
+inline SafeNum SafeNum::operator+(const SafeNum& rhs) const {
+ return addInternal(*this, rhs);
+}
+
+inline SafeNum& SafeNum::operator+=(const SafeNum& rhs) {
+ return *this = addInternal(*this, rhs);
+}
+
+inline SafeNum SafeNum::operator*(const SafeNum& rhs) const {
+ return mulInternal(*this, rhs);
+}
+
+inline SafeNum& SafeNum::operator*=(const SafeNum& rhs) {
+ return *this = mulInternal(*this, rhs);
+}
+
+inline SafeNum SafeNum::bitAnd(const SafeNum& rhs) const {
+ return andInternal(*this, rhs);
+}
+
+inline SafeNum SafeNum::operator&(const SafeNum& rhs) const {
+ return bitAnd(rhs);
+}
+
+inline SafeNum& SafeNum::operator&=(const SafeNum& rhs) {
+ return *this = bitAnd(rhs);
+}
+
+inline SafeNum SafeNum::bitOr(const SafeNum& rhs) const {
+ return orInternal(*this, rhs);
+}
+
+inline SafeNum SafeNum::operator|(const SafeNum& rhs) const {
+ return bitOr(rhs);
+}
+
+inline SafeNum& SafeNum::operator|=(const SafeNum& rhs) {
+ return *this = bitOr(rhs);
+}
+
+inline SafeNum SafeNum::bitXor(const SafeNum& rhs) const {
+ return xorInternal(*this, rhs);
+}
+
+inline SafeNum SafeNum::operator^(const SafeNum& rhs) const {
+ return bitXor(rhs);
+}
+
+inline SafeNum& SafeNum::operator^=(const SafeNum& rhs) {
+ return *this = bitXor(rhs);
+}
+
+inline bool SafeNum::isValid() const {
+ return _type != EOO;
+}
-#include "mongo/util/safe_num-inl.h"
+inline BSONType SafeNum::type() const {
+ return _type;
+}
+
+} // namespace mongo