summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Gayot <og@satcom1.com>2017-11-19 13:12:12 +0100
committerOlivier Gayot <og@satcom1.com>2017-11-19 16:21:05 +0100
commit471186ab6e721fed603871f385d9590a69878de3 (patch)
tree6bafd2b5de0ef26032e2e49d2429c45f3cc7b29c
parent5a2d18587b53133bc831967ccd8d6a5dd6e54190 (diff)
Allowed construction of number from 64-bits-wide integer
Signed-off-by: Olivier Gayot <og@satcom1.com>
-rw-r--r--number.cpp15
-rw-r--r--number.h2
2 files changed, 13 insertions, 4 deletions
diff --git a/number.cpp b/number.cpp
index 497cf64..fa62b00 100644
--- a/number.cpp
+++ b/number.cpp
@@ -2,9 +2,18 @@
#include <sstream>
#include "number.h"
-number::number(std::uint32_t n):
- _operands{n}
-{ }
+number::number(std::uint64_t n)
+{
+ if (n == 0) {
+ return;
+ }
+
+ _operands.push_back(n & UINT32_MAX);
+
+ if (n > UINT32_MAX) {
+ _operands.push_back(n >> 32);
+ }
+}
/* Type Conversion {{{ */
diff --git a/number.h b/number.h
index 16fcea6..f68299d 100644
--- a/number.h
+++ b/number.h
@@ -13,7 +13,7 @@ public:
number &operator=(const number &) = default;
- number(std::uint32_t);
+ number(std::uint64_t);
/**
* \brief Return a hexadecimal string representation of this number.