diff options
| author | Paul Eggert | 2018-09-04 19:14:01 -0700 |
|---|---|---|
| committer | Paul Eggert | 2018-09-04 19:15:57 -0700 |
| commit | ecb985c10d5241a65ab9552ebfcecaa150b35427 (patch) | |
| tree | c4f12a76561d84518c597cb8e25cfd3813023456 /src/lisp.h | |
| parent | e3661f8c35b3057c58e8c0b474f597697ce413ba (diff) | |
| download | emacs-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.h | 33 |
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); | |||
| 3297 | extern Lisp_Object make_bignum_str (char const *, int); | 3297 | extern Lisp_Object make_bignum_str (char const *, int); |
| 3298 | extern Lisp_Object double_to_bignum (double); | 3298 | extern Lisp_Object double_to_bignum (double); |
| 3299 | 3299 | ||
| 3300 | /* Converthe integer NUM to *N. Return true if successful, false | ||
| 3301 | (possibly setting *N) otherwise. */ | ||
| 3302 | INLINE bool | ||
| 3303 | integer_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 | } | ||
| 3317 | INLINE bool | ||
| 3318 | integer_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. */ |
| 3301 | extern _Noreturn void wrong_choice (Lisp_Object, Lisp_Object); | 3334 | extern _Noreturn void wrong_choice (Lisp_Object, Lisp_Object); |
| 3302 | extern void notify_variable_watchers (Lisp_Object, Lisp_Object, | 3335 | extern void notify_variable_watchers (Lisp_Object, Lisp_Object, |