aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorPaul Eggert2018-09-04 19:14:01 -0700
committerPaul Eggert2018-09-04 19:15:57 -0700
commitecb985c10d5241a65ab9552ebfcecaa150b35427 (patch)
treec4f12a76561d84518c597cb8e25cfd3813023456 /src/lisp.h
parente3661f8c35b3057c58e8c0b474f597697ce413ba (diff)
downloademacs-ecb985c10d5241a65ab9552ebfcecaa150b35427.tar.gz
emacs-ecb985c10d5241a65ab9552ebfcecaa150b35427.zip
Simplify bignum->intmax conversion
* src/lisp.h (integer_to_intmax, integer_to_uintmax): New functions. * src/data.c (cons_to_unsigned, cons_to_signed) (arith_driver): * src/dbusbind.c (xd_extract_signed, xd_extract_unsigned): * src/dispnew.c (sit_for): * src/editfns.c (styled_format): * src/emacs-module.c (module_extract_integer): * src/fileio.c (file_offset): * src/font.c (font_unparse_xlfd, Fopen_font): * src/xdisp.c (calc_line_height_property): * src/process.c (handle_child_signal):
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/lisp.h b/src/lisp.h
index d244bc02d4b..78c25f97dc8 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3297,6 +3297,39 @@ extern Lisp_Object bignum_to_string (Lisp_Object, int);
3297extern Lisp_Object make_bignum_str (char const *, int); 3297extern Lisp_Object make_bignum_str (char const *, int);
3298extern Lisp_Object double_to_bignum (double); 3298extern Lisp_Object double_to_bignum (double);
3299 3299
3300/* Converthe integer NUM to *N. Return true if successful, false
3301 (possibly setting *N) otherwise. */
3302INLINE bool
3303integer_to_intmax (Lisp_Object num, intmax_t *n)
3304{
3305 if (FIXNUMP (num))
3306 {
3307 *n = XFIXNUM (num);
3308 return true;
3309 }
3310 else
3311 {
3312 intmax_t i = bignum_to_intmax (num);
3313 *n = i;
3314 return i != 0;
3315 }
3316}
3317INLINE bool
3318integer_to_uintmax (Lisp_Object num, uintmax_t *n)
3319{
3320 if (FIXNUMP (num))
3321 {
3322 *n = XFIXNUM (num);
3323 return 0 <= XFIXNUM (num);
3324 }
3325 else
3326 {
3327 uintmax_t i = bignum_to_uintmax (num);
3328 *n = i;
3329 return i != 0;
3330 }
3331}
3332
3300/* Defined in data.c. */ 3333/* Defined in data.c. */
3301extern _Noreturn void wrong_choice (Lisp_Object, Lisp_Object); 3334extern _Noreturn void wrong_choice (Lisp_Object, Lisp_Object);
3302extern void notify_variable_watchers (Lisp_Object, Lisp_Object, 3335extern void notify_variable_watchers (Lisp_Object, Lisp_Object,