Mercurial > hg > xemacs-beta
comparison src/lread.c @ 5581:56144c8593a8
Mechanically change INT to FIXNUM in our sources.
src/ChangeLog addition:
2011-10-09 Aidan Kehoe <kehoea@parhasard.net>
[...]
Mechanically change INT (where it refers to non-bignum Lisp
integers) to FIXNUM in our sources. Done for the following
functions, enums, and macros: Lisp_Type_Int_Even,
Lisp_Type_Int_Odd, INT_GCBITS, INT_VALBITS, make_int(), INTP(),
XINT(), CHECK_INT(), XREALINT(), INT_PLUS(), INT_MINUS(),
EMACS_INT_MAX (to MOST_POSITIVE_FIXNUM), EMACS_INT_MIN (to
MOST_NEGATIVE_FIXNUM), NUMBER_FITS_IN_AN_EMACS_INT() to
NUMBER_FITS_IN_A_FIXNUM(), XFLOATINT, XCHAR_OR_INT, INT_OR_FLOAT.
The EMACS_INT typedef was not changed, it does not describe
non-bignum Lisp integers.
Script that did the change available in
http://mid.gmane.org/20067.17650.181273.12014@parhasard.net .
modules/ChangeLog addition:
2011-10-09 Aidan Kehoe <kehoea@parhasard.net>
[...]
Mechanically change INT to FIXNUM, where the usage describes non-bignum
Lisp integers. See the src/ChangeLog entry for more details.
man/ChangeLog addition:
2011-10-09 Aidan Kehoe <kehoea@parhasard.net>
* internals/internals.texi (How Lisp Objects Are Represented in C):
* internals/internals.texi (Integers and Characters):
Mechanically change INT to FIXNUM, where the usage describes non-bignum
Lisp integers.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sun, 09 Oct 2011 09:51:57 +0100 |
parents | 58b38d5b32d0 |
children | cc7f8a0e569a |
comparison
equal
deleted
inserted
replaced
5580:a0e81357194e | 5581:56144c8593a8 |
---|---|
419 pas_de_holgazan_ici (int fd, Lisp_Object victim) | 419 pas_de_holgazan_ici (int fd, Lisp_Object victim) |
420 { | 420 { |
421 Lisp_Object tem; | 421 Lisp_Object tem; |
422 EMACS_INT pos; | 422 EMACS_INT pos; |
423 | 423 |
424 if (!INTP (XCDR (victim))) | 424 if (!FIXNUMP (XCDR (victim))) |
425 invalid_byte_code ("Bogus doc string reference", victim); | 425 invalid_byte_code ("Bogus doc string reference", victim); |
426 pos = XINT (XCDR (victim)); | 426 pos = XFIXNUM (XCDR (victim)); |
427 if (pos < 0) | 427 if (pos < 0) |
428 pos = -pos; /* kludge to mark a user variable */ | 428 pos = -pos; /* kludge to mark a user variable */ |
429 tem = unparesseuxify_doc_string (fd, pos, 0, Vload_file_name_internal, 0); | 429 tem = unparesseuxify_doc_string (fd, pos, 0, Vload_file_name_internal, 0); |
430 if (!STRINGP (tem)) | 430 if (!STRINGP (tem)) |
431 signal_error_1 (Qinvalid_byte_code, tem); | 431 signal_error_1 (Qinvalid_byte_code, tem); |
436 load_force_doc_string_unwind (Lisp_Object oldlist) | 436 load_force_doc_string_unwind (Lisp_Object oldlist) |
437 { | 437 { |
438 struct gcpro gcpro1; | 438 struct gcpro gcpro1; |
439 Lisp_Object list = Vload_force_doc_string_list; | 439 Lisp_Object list = Vload_force_doc_string_list; |
440 Lisp_Object tail; | 440 Lisp_Object tail; |
441 int fd = XINT (XCAR (Vload_descriptor_list)); | 441 int fd = XFIXNUM (XCAR (Vload_descriptor_list)); |
442 | 442 |
443 GCPRO1 (list); | 443 GCPRO1 (list); |
444 /* restore the old value first just in case an error occurs. */ | 444 /* restore the old value first just in case an error occurs. */ |
445 Vload_force_doc_string_list = oldlist; | 445 Vload_force_doc_string_list = oldlist; |
446 | 446 |
503 void | 503 void |
504 close_load_descs (void) | 504 close_load_descs (void) |
505 { | 505 { |
506 Lisp_Object tail; | 506 Lisp_Object tail; |
507 LIST_LOOP (tail, Vload_descriptor_list) | 507 LIST_LOOP (tail, Vload_descriptor_list) |
508 retry_close (XINT (XCAR (tail))); | 508 retry_close (XFIXNUM (XCAR (tail))); |
509 } | 509 } |
510 | 510 |
511 #ifdef I18N3 | 511 #ifdef I18N3 |
512 Lisp_Object Vfile_domain; | 512 Lisp_Object Vfile_domain; |
513 #endif /* I18N3 */ | 513 #endif /* I18N3 */ |
726 block_size); | 726 block_size); |
727 /* NOTE: Order of these is very important. Don't rearrange them. */ | 727 /* NOTE: Order of these is very important. Don't rearrange them. */ |
728 internal_bind_int (&load_in_progress, 1 + load_in_progress); | 728 internal_bind_int (&load_in_progress, 1 + load_in_progress); |
729 record_unwind_protect (load_unwind, lispstream); | 729 record_unwind_protect (load_unwind, lispstream); |
730 internal_bind_lisp_object (&Vload_descriptor_list, | 730 internal_bind_lisp_object (&Vload_descriptor_list, |
731 Fcons (make_int (fd), Vload_descriptor_list)); | 731 Fcons (make_fixnum (fd), Vload_descriptor_list)); |
732 internal_bind_lisp_object (&Vload_file_name_internal, found); | 732 internal_bind_lisp_object (&Vload_file_name_internal, found); |
733 /* this is not a simple internal_bind. */ | 733 /* this is not a simple internal_bind. */ |
734 record_unwind_protect (load_force_doc_string_unwind, | 734 record_unwind_protect (load_force_doc_string_unwind, |
735 Vload_force_doc_string_list); | 735 Vload_force_doc_string_list); |
736 Vload_force_doc_string_list = Qnil; | 736 Vload_force_doc_string_list = Qnil; |
842 return W_OK; | 842 return W_OK; |
843 else if (EQ (mode, Qreadable)) | 843 else if (EQ (mode, Qreadable)) |
844 return R_OK; | 844 return R_OK; |
845 else if (INTEGERP (mode)) | 845 else if (INTEGERP (mode)) |
846 { | 846 { |
847 check_integer_range (mode, Qzero, make_int (7)); | 847 check_integer_range (mode, Qzero, make_fixnum (7)); |
848 return XINT (mode); | 848 return XFIXNUM (mode); |
849 } | 849 } |
850 else | 850 else |
851 invalid_argument ("Invalid value", mode); | 851 invalid_argument ("Invalid value", mode); |
852 return 0; /* unreached */ | 852 return 0; /* unreached */ |
853 } | 853 } |
1580 record_unwind_protect (save_restriction_restore, | 1580 record_unwind_protect (save_restriction_restore, |
1581 save_restriction_save (current_buffer)); | 1581 save_restriction_save (current_buffer)); |
1582 | 1582 |
1583 /* This both uses start and checks its type. */ | 1583 /* This both uses start and checks its type. */ |
1584 Fgoto_char (start, cbuf); | 1584 Fgoto_char (start, cbuf); |
1585 Fnarrow_to_region (make_int (BUF_BEGV (current_buffer)), end, cbuf); | 1585 Fnarrow_to_region (make_fixnum (BUF_BEGV (current_buffer)), end, cbuf); |
1586 readevalloop (cbuf, XBUFFER (cbuf)->filename, Feval, | 1586 readevalloop (cbuf, XBUFFER (cbuf)->filename, Feval, |
1587 !NILP (stream)); | 1587 !NILP (stream)); |
1588 | 1588 |
1589 return unbind_to (speccount); | 1589 return unbind_to (speccount); |
1590 } | 1590 } |
1646 | 1646 |
1647 tem = read0 (lispstream); | 1647 tem = read0 (lispstream); |
1648 /* Yeah, it's ugly. Gonna make something of it? | 1648 /* Yeah, it's ugly. Gonna make something of it? |
1649 At least our reader is reentrant ... */ | 1649 At least our reader is reentrant ... */ |
1650 tem = | 1650 tem = |
1651 (Fcons (tem, make_int | 1651 (Fcons (tem, make_fixnum |
1652 (string_index_byte_to_char | 1652 (string_index_byte_to_char |
1653 (string, | 1653 (string, |
1654 startval + Lstream_byte_count (XLSTREAM (lispstream)))))); | 1654 startval + Lstream_byte_count (XLSTREAM (lispstream)))))); |
1655 Lstream_delete (XLSTREAM (lispstream)); | 1655 Lstream_delete (XLSTREAM (lispstream)); |
1656 UNGCPRO; | 1656 UNGCPRO; |
1700 } | 1700 } |
1701 } | 1701 } |
1702 | 1702 |
1703 if (i >= 0x110000 || i < 0) | 1703 if (i >= 0x110000 || i < 0) |
1704 { | 1704 { |
1705 syntax_error ("Not a Unicode code point", make_int(i)); | 1705 syntax_error ("Not a Unicode code point", make_fixnum(i)); |
1706 } | 1706 } |
1707 | 1707 |
1708 lisp_char = Funicode_to_char(make_int(i), Qnil); | 1708 lisp_char = Funicode_to_char(make_fixnum(i), Qnil); |
1709 | 1709 |
1710 if (EQ(Qnil, lisp_char)) | 1710 if (EQ(Qnil, lisp_char)) |
1711 { | 1711 { |
1712 /* Will happen on non-Mule. Silent corruption is what happens | 1712 /* Will happen on non-Mule. Silent corruption is what happens |
1713 elsewhere, and we used to do that to be consistent, but GNU error, | 1713 elsewhere, and we used to do that to be consistent, but GNU error, |
1714 so people writing portable code need to be able to handle that, and | 1714 so people writing portable code need to be able to handle that, and |
1715 given a choice I prefer that behaviour. | 1715 given a choice I prefer that behaviour. |
1716 | 1716 |
1717 An undesirable aspect to this error is that the code point is shown | 1717 An undesirable aspect to this error is that the code point is shown |
1718 as a decimal integer, which is mostly unreadable. */ | 1718 as a decimal integer, which is mostly unreadable. */ |
1719 syntax_error ("Unsupported Unicode code point", make_int(i)); | 1719 syntax_error ("Unsupported Unicode code point", make_fixnum(i)); |
1720 } | 1720 } |
1721 | 1721 |
1722 return XCHAR(lisp_char); | 1722 return XCHAR(lisp_char); |
1723 } | 1723 } |
1724 | 1724 |
1968 number = atoi (read_buffer); | 1968 number = atoi (read_buffer); |
1969 else if (sizeof (long) == sizeof (EMACS_INT)) | 1969 else if (sizeof (long) == sizeof (EMACS_INT)) |
1970 number = atol (read_buffer); | 1970 number = atol (read_buffer); |
1971 else | 1971 else |
1972 ABORT (); | 1972 ABORT (); |
1973 return make_int (number); | 1973 return make_fixnum (number); |
1974 } | 1974 } |
1975 #else | 1975 #else |
1976 return parse_integer ((Ibyte *) read_ptr, len, 10); | 1976 return parse_integer ((Ibyte *) read_ptr, len, 10); |
1977 #endif | 1977 #endif |
1978 } | 1978 } |
2059 goto overflow; | 2059 goto overflow; |
2060 } | 2060 } |
2061 | 2061 |
2062 { | 2062 { |
2063 EMACS_INT int_result = negativland ? - (EMACS_INT) num : (EMACS_INT) num; | 2063 EMACS_INT int_result = negativland ? - (EMACS_INT) num : (EMACS_INT) num; |
2064 Lisp_Object result = make_int (int_result); | 2064 Lisp_Object result = make_fixnum (int_result); |
2065 if (num && ((XINT (result) < 0) != negativland)) | 2065 if (num && ((XFIXNUM (result) < 0) != negativland)) |
2066 goto overflow; | 2066 goto overflow; |
2067 if (XINT (result) != int_result) | 2067 if (XFIXNUM (result) != int_result) |
2068 goto overflow; | 2068 goto overflow; |
2069 return result; | 2069 return result; |
2070 } | 2070 } |
2071 overflow: | 2071 overflow: |
2072 #ifdef HAVE_BIGNUM | 2072 #ifdef HAVE_BIGNUM |
2077 #else | 2077 #else |
2078 return Fsignal (Qinvalid_read_syntax, | 2078 return Fsignal (Qinvalid_read_syntax, |
2079 list3 (build_msg_string | 2079 list3 (build_msg_string |
2080 ("Integer constant overflow in reader"), | 2080 ("Integer constant overflow in reader"), |
2081 make_string (buf, len), | 2081 make_string (buf, len), |
2082 make_int (base))); | 2082 make_fixnum (base))); |
2083 #endif /* HAVE_BIGNUM */ | 2083 #endif /* HAVE_BIGNUM */ |
2084 loser: | 2084 loser: |
2085 return Fsignal (Qinvalid_read_syntax, | 2085 return Fsignal (Qinvalid_read_syntax, |
2086 list3 (build_msg_string | 2086 list3 (build_msg_string |
2087 ("Invalid integer constant in reader"), | 2087 ("Invalid integer constant in reader"), |
2088 make_string (buf, len), | 2088 make_string (buf, len), |
2089 make_int (base))); | 2089 make_fixnum (base))); |
2090 } | 2090 } |
2091 | 2091 |
2092 | 2092 |
2093 static Lisp_Object | 2093 static Lisp_Object |
2094 read_integer (Lisp_Object readcharfun, int base) | 2094 read_integer (Lisp_Object readcharfun, int base) |
2198 if (c != '(') | 2198 if (c != '(') |
2199 RETURN_UNGCPRO (continuable_read_syntax_error ("#s not followed by paren")); | 2199 RETURN_UNGCPRO (continuable_read_syntax_error ("#s not followed by paren")); |
2200 list = read_list (readcharfun, ')', 0, 0); | 2200 list = read_list (readcharfun, ')', 0, 0); |
2201 orig_list = list; | 2201 orig_list = list; |
2202 { | 2202 { |
2203 int len = XINT (Flength (list)); | 2203 int len = XFIXNUM (Flength (list)); |
2204 if (len == 0) | 2204 if (len == 0) |
2205 RETURN_UNGCPRO (continuable_read_syntax_error | 2205 RETURN_UNGCPRO (continuable_read_syntax_error |
2206 ("structure type not specified")); | 2206 ("structure type not specified")); |
2207 if (!(len & 1)) | 2207 if (!(len & 1)) |
2208 RETURN_UNGCPRO | 2208 RETURN_UNGCPRO |
2708 { | 2708 { |
2709 n *= 10; | 2709 n *= 10; |
2710 n += c - '0'; | 2710 n += c - '0'; |
2711 c = readchar (readcharfun); | 2711 c = readchar (readcharfun); |
2712 } | 2712 } |
2713 found = assq_no_quit (make_int (n), Vread_objects); | 2713 found = assq_no_quit (make_fixnum (n), Vread_objects); |
2714 if (c == '=') | 2714 if (c == '=') |
2715 { | 2715 { |
2716 /* #n=object returns object, but associates it with | 2716 /* #n=object returns object, but associates it with |
2717 n for #n#. */ | 2717 n for #n#. */ |
2718 if (CONSP (found)) | 2718 if (CONSP (found)) |
2719 { | 2719 { |
2720 return Fsignal (Qinvalid_read_syntax, | 2720 return Fsignal (Qinvalid_read_syntax, |
2721 list2 (build_msg_string | 2721 list2 (build_msg_string |
2722 ("Multiply defined object label"), | 2722 ("Multiply defined object label"), |
2723 make_int (n))); | 2723 make_fixnum (n))); |
2724 } | 2724 } |
2725 else | 2725 else |
2726 { | 2726 { |
2727 Lisp_Object object; | 2727 Lisp_Object object; |
2728 | 2728 |
2729 found = Fcons (make_int (n), Qnil); | 2729 found = Fcons (make_fixnum (n), Qnil); |
2730 /* Make FOUND a placeholder for the object that will | 2730 /* Make FOUND a placeholder for the object that will |
2731 be read. (We've just consed it, and it's not | 2731 be read. (We've just consed it, and it's not |
2732 visible from Lisp, so there's no possibility of | 2732 visible from Lisp, so there's no possibility of |
2733 confusing it with something else in the read | 2733 confusing it with something else in the read |
2734 structure.) */ | 2734 structure.) */ |
2749 return XCDR (found); | 2749 return XCDR (found); |
2750 else | 2750 else |
2751 return Fsignal (Qinvalid_read_syntax, | 2751 return Fsignal (Qinvalid_read_syntax, |
2752 list2 (build_msg_string | 2752 list2 (build_msg_string |
2753 ("Undefined symbol label"), | 2753 ("Undefined symbol label"), |
2754 make_int (n))); | 2754 make_fixnum (n))); |
2755 } | 2755 } |
2756 return Fsignal (Qinvalid_read_syntax, | 2756 return Fsignal (Qinvalid_read_syntax, |
2757 list1 (build_ascstring ("#"))); | 2757 list1 (build_ascstring ("#"))); |
2758 } | 2758 } |
2759 default: | 2759 default: |
3157 | 3157 |
3158 sequence_reader (readcharfun, terminator, &s, read_list_conser); | 3158 sequence_reader (readcharfun, terminator, &s, read_list_conser); |
3159 | 3159 |
3160 UNGCPRO; | 3160 UNGCPRO; |
3161 tem = s.head; | 3161 tem = s.head; |
3162 len = XINT (Flength (tem)); | 3162 len = XFIXNUM (Flength (tem)); |
3163 | 3163 |
3164 s.head = make_vector (len, Qnil); | 3164 s.head = make_vector (len, Qnil); |
3165 | 3165 |
3166 for (i = 0, p = &(XVECTOR_DATA (s.head)[0]); | 3166 for (i = 0, p = &(XVECTOR_DATA (s.head)[0]); |
3167 i < len; | 3167 i < len; |
3190 | 3190 |
3191 /* Note: we tell read_list not to search for doc references | 3191 /* Note: we tell read_list not to search for doc references |
3192 because we need to handle the "doc reference" for the | 3192 because we need to handle the "doc reference" for the |
3193 instructions and constants differently. */ | 3193 instructions and constants differently. */ |
3194 stuff = read_list (readcharfun, terminator, 0, 0); | 3194 stuff = read_list (readcharfun, terminator, 0, 0); |
3195 len = XINT (Flength (stuff)); | 3195 len = XFIXNUM (Flength (stuff)); |
3196 if (len < COMPILED_STACK_DEPTH + 1 || len > COMPILED_DOMAIN + 1) | 3196 if (len < COMPILED_STACK_DEPTH + 1 || len > COMPILED_DOMAIN + 1) |
3197 return | 3197 return |
3198 continuable_read_syntax_error ("#[...] used with wrong number of elements"); | 3198 continuable_read_syntax_error ("#[...] used with wrong number of elements"); |
3199 | 3199 |
3200 for (iii = 0; CONSP (stuff); iii++) | 3200 for (iii = 0; CONSP (stuff); iii++) |