Mercurial > hg > xemacs-beta
comparison src/data.c @ 5438:8d29f1c4bb98
Merge with 21.5 trunk.
author | Mats Lidell <matsl@xemacs.org> |
---|---|
date | Fri, 26 Nov 2010 06:43:36 +0100 |
parents | 308d34e9f07d c096d8051f89 |
children | 89331fa1c819 |
comparison
equal
deleted
inserted
replaced
5437:002cb5224e4f | 5438:8d29f1c4bb98 |
---|---|
154 { | 154 { |
155 signal_error_1 (Qargs_out_of_range, list3 (a1, a2, a3)); | 155 signal_error_1 (Qargs_out_of_range, list3 (a1, a2, a3)); |
156 } | 156 } |
157 | 157 |
158 void | 158 void |
159 check_int_range (EMACS_INT val, EMACS_INT min, EMACS_INT max) | 159 check_integer_range (Lisp_Object val, Lisp_Object min, Lisp_Object max) |
160 { | 160 { |
161 if (val < min || val > max) | 161 Lisp_Object args[] = { min, val, max }; |
162 args_out_of_range_3 (make_int (val), make_int (min), make_int (max)); | 162 int ii; |
163 | |
164 for (ii = 0; ii < countof (args); ii++) | |
165 { | |
166 CHECK_INTEGER (args[ii]); | |
167 } | |
168 | |
169 if (NILP (Fleq (countof (args), args))) | |
170 args_out_of_range_3 (val, min, max); | |
163 } | 171 } |
164 | 172 |
165 | 173 |
166 /* Data type predicates */ | 174 /* Data type predicates */ |
167 | 175 |
500 DEFUN ("natnump", Fnatnump, 1, 1, 0, /* | 508 DEFUN ("natnump", Fnatnump, 1, 1, 0, /* |
501 Return t if OBJECT is a nonnegative integer. | 509 Return t if OBJECT is a nonnegative integer. |
502 */ | 510 */ |
503 (object)) | 511 (object)) |
504 { | 512 { |
505 return NATNUMP (object) | 513 return NATNUMP (object) ? Qt : Qnil; |
506 #ifdef HAVE_BIGNUM | |
507 || (BIGNUMP (object) && bignum_sign (XBIGNUM_DATA (object)) >= 0) | |
508 #endif | |
509 ? Qt : Qnil; | |
510 } | 514 } |
511 | 515 |
512 DEFUN ("nonnegativep", Fnonnegativep, 1, 1, 0, /* | 516 DEFUN ("nonnegativep", Fnonnegativep, 1, 1, 0, /* |
513 Return t if OBJECT is a nonnegative number. | 517 Return t if OBJECT is a nonnegative number. |
514 */ | 518 */ |
515 (object)) | 519 (object)) |
516 { | 520 { |
517 return NATNUMP (object) | 521 return NATNUMP (object) |
518 #ifdef HAVE_BIGNUM | |
519 || (BIGNUMP (object) && bignum_sign (XBIGNUM_DATA (object)) >= 0) | |
520 #endif | |
521 #ifdef HAVE_RATIO | 522 #ifdef HAVE_RATIO |
522 || (RATIOP (object) && ratio_sign (XRATIO_DATA (object)) >= 0) | 523 || (RATIOP (object) && ratio_sign (XRATIO_DATA (object)) >= 0) |
523 #endif | 524 #endif |
524 #ifdef HAVE_BIGFLOAT | 525 #ifdef HAVE_BIGFLOAT |
525 || (BIGFLOATP (object) && bigfloat_sign (XBIGFLOAT_DATA (object)) >= 0) | 526 || (BIGFLOATP (object) && bigfloat_sign (XBIGFLOAT_DATA (object)) >= 0) |
1291 | 1292 |
1292 if (NILP (base)) | 1293 if (NILP (base)) |
1293 b = 10; | 1294 b = 10; |
1294 else | 1295 else |
1295 { | 1296 { |
1296 CHECK_INT (base); | 1297 check_integer_range (base, make_int (2), make_int (16)); |
1297 b = XINT (base); | 1298 b = XINT (base); |
1298 check_int_range (b, 2, 16); | |
1299 } | 1299 } |
1300 | 1300 |
1301 p = XSTRING_DATA (string); | 1301 p = XSTRING_DATA (string); |
1302 | 1302 |
1303 /* Skip any whitespace at the front of the number. Some versions of | 1303 /* Skip any whitespace at the front of the number. Some versions of |