diff options
author | Andy Wingo <wingo@pobox.com> | 2022-01-06 11:10:02 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2022-01-13 09:37:16 +0100 |
commit | f4db3ca3f9986477f6a8d4eddae8b88604e3f8a9 (patch) | |
tree | a289ceae1d4d36d90ba070c15efaddc34ffee7b3 /libguile/integers.h | |
parent | 7c53325c31b86198b6c021c5c2b62c3742363619 (diff) | |
download | guile-f4db3ca3f9986477f6a8d4eddae8b88604e3f8a9.tar.gz |
Reimplement scm_is_{un,}signed_integer for bignums
* libguile/integers.c (negative_int64):
(int64_magnitude):
(negative_uint64_to_int64):
(positive_uint64_to_int64):
(bignum_to_int64):
(bignum_to_uint64): New helpers.
(scm_integer_to_int64_z):
(scm_integer_to_uint64_z): New internal functions.
* libguile/integers.h: Declare internal functions.
* libguile/numbers.c (scm_is_signed_integer):
(scm_is_unsigned_integer): Simplify bigint cases.
Diffstat (limited to 'libguile/integers.h')
-rw-r--r-- | libguile/integers.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libguile/integers.h b/libguile/integers.h index bda575774..60e3ea9bd 100644 --- a/libguile/integers.h +++ b/libguile/integers.h @@ -199,6 +199,9 @@ SCM_INTERNAL SCM scm_integer_exact_quotient_zi (struct scm_bignum *n, SCM_INTERNAL SCM scm_integer_exact_quotient_zz (struct scm_bignum *n, struct scm_bignum *d); +SCM_INTERNAL int scm_integer_to_int64_z (struct scm_bignum *z, int64_t *val); +SCM_INTERNAL int scm_integer_to_uint64_z (struct scm_bignum *z, uint64_t *val); + #endif /* SCM_INTEGERS_H */ |