diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-08-23 11:43:37 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-08-23 11:43:37 -0400 |
| commit | 3865b6ad8f8ba71dca06c81828ec2e29f3019879 (patch) | |
| tree | cfadbebe532708c931bddcc8e5b262d63946c78d /src/bigint.cpp | |
| parent | 79a4b7a2365dc50d01eb6bc29bbb77244a1620cf (diff) | |
| parent | ec2f9ef4e8be5995ab652dde59b12ee340a9e28d (diff) | |
| download | zig-3865b6ad8f8ba71dca06c81828ec2e29f3019879.tar.gz zig-3865b6ad8f8ba71dca06c81828ec2e29f3019879.zip | |
Merge remote-tracking branch 'origin/master' into fix-field-alignment-kludge
Diffstat (limited to 'src/bigint.cpp')
| -rw-r--r-- | src/bigint.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/bigint.cpp b/src/bigint.cpp index da53a2b129..b227b3b4f7 100644 --- a/src/bigint.cpp +++ b/src/bigint.cpp @@ -15,6 +15,8 @@ #include <limits> #include <algorithm> +static uint64_t bigint_as_unsigned(const BigInt *bigint); + static void bigint_normalize(BigInt *dest) { const uint64_t *digits = bigint_ptr(dest); @@ -1660,7 +1662,7 @@ size_t bigint_clz(const BigInt *bi, size_t bit_count) { return count; } -uint64_t bigint_as_unsigned(const BigInt *bigint) { +static uint64_t bigint_as_unsigned(const BigInt *bigint) { assert(!bigint->is_negative); if (bigint->digit_count == 0) { return 0; @@ -1671,6 +1673,25 @@ uint64_t bigint_as_unsigned(const BigInt *bigint) { } } +uint64_t bigint_as_u64(const BigInt *bigint) +{ + return bigint_as_unsigned(bigint); +} + +uint32_t bigint_as_u32(const BigInt *bigint) { + uint64_t value64 = bigint_as_unsigned(bigint); + uint32_t value32 = (uint32_t)value64; + assert (value64 == value32); + return value32; +} + +size_t bigint_as_usize(const BigInt *bigint) { + uint64_t value64 = bigint_as_unsigned(bigint); + size_t valueUsize = (size_t)value64; + assert (value64 == valueUsize); + return valueUsize; +} + int64_t bigint_as_signed(const BigInt *bigint) { if (bigint->digit_count == 0) { return 0; |
