comparison src/lisp.h @ 20625:a9c4bf3f4e46

(STRING_MULTIBYTE): New macro. (struct lisp_String): New field size_byte.
author Richard M. Stallman <rms@gnu.org>
date Fri, 09 Jan 1998 23:17:00 +0000
parents d8013f2236a0
children ed9ed828415e
comparison
equal deleted inserted replaced
20624:9ac0b485cf60 20625:a9c4bf3f4e46
538 Lisp_Object car, cdr; 538 Lisp_Object car, cdr;
539 struct buffer *buffer; 539 struct buffer *buffer;
540 int bufpos; 540 int bufpos;
541 }; 541 };
542 542
543 /* Nonzero if STR is a multibyte string. */
544 #define STRING_MULTIBYTE(STR) \
545 (XSTRING (STR)->size != XSTRING (STR)->size_byte)
546
543 /* In a string or vector, the sign bit of the `size' is the gc mark bit */ 547 /* In a string or vector, the sign bit of the `size' is the gc mark bit */
544 548
545 struct Lisp_String 549 struct Lisp_String
546 { 550 {
547 EMACS_INT size; 551 EMACS_INT size;
552 EMACS_INT size_byte;
548 DECLARE_INTERVALS /* `data' field must be last. */ 553 DECLARE_INTERVALS /* `data' field must be last. */
549 unsigned char data[1]; 554 unsigned char data[1];
550 }; 555 };
551 556
552 /* If a struct is made to look like a vector, this macro returns the length 557 /* If a struct is made to look like a vector, this macro returns the length
1509 EXFUN (Fintegerp, 1); 1514 EXFUN (Fintegerp, 1);
1510 EXFUN (Fnatnump, 1); 1515 EXFUN (Fnatnump, 1);
1511 EXFUN (Fsymbolp, 1); 1516 EXFUN (Fsymbolp, 1);
1512 EXFUN (Fvectorp, 1); 1517 EXFUN (Fvectorp, 1);
1513 EXFUN (Fstringp, 1); 1518 EXFUN (Fstringp, 1);
1519 EXFUN (Fmultibyte_string_p, 1);
1514 EXFUN (Farrayp, 1); 1520 EXFUN (Farrayp, 1);
1515 EXFUN (Fsequencep, 1); 1521 EXFUN (Fsequencep, 1);
1516 EXFUN (Fbufferp, 1); 1522 EXFUN (Fbufferp, 1);
1517 EXFUN (Fmarkerp, 1); 1523 EXFUN (Fmarkerp, 1);
1518 EXFUN (Fsubrp, 1); 1524 EXFUN (Fsubrp, 1);
1593 EXFUN (Fend_of_line, 1); 1599 EXFUN (Fend_of_line, 1);
1594 EXFUN (Fforward_char, 1); 1600 EXFUN (Fforward_char, 1);
1595 EXFUN (Fforward_line, 1); 1601 EXFUN (Fforward_line, 1);
1596 extern int forward_point P_ ((int)); 1602 extern int forward_point P_ ((int));
1597 extern int internal_self_insert P_ ((int, int)); 1603 extern int internal_self_insert P_ ((int, int));
1604 extern int nonascii_insert_offset;
1598 1605
1599 /* Defined in coding.c */ 1606 /* Defined in coding.c */
1600 EXFUN (Fcoding_system_p, 1); 1607 EXFUN (Fcoding_system_p, 1);
1601 EXFUN (Fcheck_coding_system, 1); 1608 EXFUN (Fcheck_coding_system, 1);
1602 EXFUN (Fread_coding_system, 2); 1609 EXFUN (Fread_coding_system, 2);
1605 EXFUN (Fencode_coding_string, 3); 1612 EXFUN (Fencode_coding_string, 3);
1606 EXFUN (Fdecode_coding_string, 3); 1613 EXFUN (Fdecode_coding_string, 3);
1607 1614
1608 /* Defined in charset.c */ 1615 /* Defined in charset.c */
1609 EXFUN (Fchar_bytes, 1); 1616 EXFUN (Fchar_bytes, 1);
1617 extern int chars_in_text P_ ((unsigned char *, int));
1618 extern int multibyte_chars_in_text P_ ((unsigned char *, int));
1610 1619
1611 /* Defined in syntax.c */ 1620 /* Defined in syntax.c */
1612 EXFUN (Fforward_word, 1); 1621 EXFUN (Fforward_word, 1);
1613 EXFUN (Fskip_chars_forward, 2); 1622 EXFUN (Fskip_chars_forward, 2);
1614 EXFUN (Fskip_chars_backward, 2); 1623 EXFUN (Fskip_chars_backward, 2);
1626 EXFUN (Fappend, MANY); 1635 EXFUN (Fappend, MANY);
1627 EXFUN (Fconcat, MANY); 1636 EXFUN (Fconcat, MANY);
1628 EXFUN (Fvconcat, MANY); 1637 EXFUN (Fvconcat, MANY);
1629 EXFUN (Fcopy_sequence, 1); 1638 EXFUN (Fcopy_sequence, 1);
1630 EXFUN (Fsubstring, 3); 1639 EXFUN (Fsubstring, 3);
1640 extern Lisp_Object substring_both P_ ((Lisp_Object, int, int, int, int));
1631 EXFUN (Fnth, 2); 1641 EXFUN (Fnth, 2);
1632 EXFUN (Fnthcdr, 2); 1642 EXFUN (Fnthcdr, 2);
1633 EXFUN (Fmemq, 2); 1643 EXFUN (Fmemq, 2);
1634 EXFUN (Fassq, 2); 1644 EXFUN (Fassq, 2);
1635 EXFUN (Fassoc, 2); 1645 EXFUN (Fassoc, 2);
1654 EXFUN (Fprovide, 1); 1664 EXFUN (Fprovide, 1);
1655 extern Lisp_Object concat2 P_ ((Lisp_Object, Lisp_Object)); 1665 extern Lisp_Object concat2 P_ ((Lisp_Object, Lisp_Object));
1656 extern Lisp_Object concat3 P_ ((Lisp_Object, Lisp_Object, Lisp_Object)); 1666 extern Lisp_Object concat3 P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
1657 extern Lisp_Object nconc2 P_ ((Lisp_Object, Lisp_Object)); 1667 extern Lisp_Object nconc2 P_ ((Lisp_Object, Lisp_Object));
1658 extern Lisp_Object assq_no_quit P_ ((Lisp_Object, Lisp_Object)); 1668 extern Lisp_Object assq_no_quit P_ ((Lisp_Object, Lisp_Object));
1669 extern int string_char_to_byte P_ ((Lisp_Object, int));
1670 extern int string_byte_to_char P_ ((Lisp_Object, int));
1659 EXFUN (Fcopy_alist, 1); 1671 EXFUN (Fcopy_alist, 1);
1660 EXFUN (Fplist_get, 2); 1672 EXFUN (Fplist_get, 2);
1661 EXFUN (Fset_char_table_parent, 2); 1673 EXFUN (Fset_char_table_parent, 2);
1662 EXFUN (Fchar_table_extra_slot, 2); 1674 EXFUN (Fchar_table_extra_slot, 2);
1663 EXFUN (Fset_char_table_extra_slot, 3); 1675 EXFUN (Fset_char_table_extra_slot, 3);
1677 1689
1678 /* Defined in insdel.c */ 1690 /* Defined in insdel.c */
1679 extern void move_gap P_ ((int)); 1691 extern void move_gap P_ ((int));
1680 extern void move_gap_both P_ ((int, int)); 1692 extern void move_gap_both P_ ((int, int));
1681 extern void make_gap P_ ((int)); 1693 extern void make_gap P_ ((int));
1694 extern int copy_text P_ ((unsigned char *, unsigned char *, int, int, int));
1695 extern int count_size_as_multibyte P_ ((unsigned char *, int));
1682 extern void insert P_ ((unsigned char *, int)); 1696 extern void insert P_ ((unsigned char *, int));
1683 extern void insert_and_inherit P_ ((unsigned char *, int)); 1697 extern void insert_and_inherit P_ ((unsigned char *, int));
1684 extern void insert_1 P_ ((unsigned char *, int, int, int, int)); 1698 extern void insert_1 P_ ((unsigned char *, int, int, int, int));
1685 extern void insert_from_string P_ ((Lisp_Object, int, int, int)); 1699 extern void insert_1_both P_ ((unsigned char *, int, int, int, int, int));
1700 extern void insert_from_string P_ ((Lisp_Object, int, int, int, int, int));
1686 extern void insert_from_buffer P_ ((struct buffer *, int, int, int)); 1701 extern void insert_from_buffer P_ ((struct buffer *, int, int, int));
1687 extern void insert_char P_ ((int)); 1702 extern void insert_char P_ ((int));
1688 extern void insert_string P_ ((char *)); 1703 extern void insert_string P_ ((char *));
1689 extern void insert_before_markers P_ ((unsigned char *, int)); 1704 extern void insert_before_markers P_ ((unsigned char *, int));
1690 extern void insert_before_markers_and_inherit P_ ((unsigned char *, int)); 1705 extern void insert_before_markers_and_inherit P_ ((unsigned char *, int));
1691 extern void insert_from_string_before_markers P_ ((Lisp_Object, int, int, int)); 1706 extern void insert_from_string_before_markers P_ ((Lisp_Object, int, int, int, int, int));
1692 extern void del_range P_ ((int, int)); 1707 extern void del_range P_ ((int, int));
1693 extern void del_range_1 P_ ((int, int, int)); 1708 extern void del_range_1 P_ ((int, int, int));
1694 extern void del_range_byte P_ ((int, int, int)); 1709 extern void del_range_byte P_ ((int, int, int));
1695 extern void del_range_both P_ ((int, int, int, int, int)); 1710 extern void del_range_both P_ ((int, int, int, int, int));
1696 extern void del_range_2 P_ ((int, int, int, int)); 1711 extern void del_range_2 P_ ((int, int, int, int));
1708 extern Lisp_Object sit_for P_ ((int, int, int, int, int)); 1723 extern Lisp_Object sit_for P_ ((int, int, int, int, int));
1709 extern void quit_error_check P_ ((void)); 1724 extern void quit_error_check P_ ((void));
1710 1725
1711 /* Defined in xdisp.c */ 1726 /* Defined in xdisp.c */
1712 extern Lisp_Object Vmessage_log_max; 1727 extern Lisp_Object Vmessage_log_max;
1728 extern int message_enable_multibyte;
1713 extern void message P_ ((/* char *, ... */)); 1729 extern void message P_ ((/* char *, ... */));
1714 extern void message_nolog P_ ((/* char *, ... */)); 1730 extern void message_nolog P_ ((/* char *, ... */));
1715 extern void message1 P_ ((char *)); 1731 extern void message1 P_ ((char *));
1716 extern void message1_nolog P_ ((char *)); 1732 extern void message1_nolog P_ ((char *));
1717 extern void message2 P_ ((char *, int)); 1733 extern void message2 P_ ((char *, int, int));
1718 extern void message2_nolog P_ ((char *, int, int)); 1734 extern void message2_nolog P_ ((char *, int, int));
1719 extern void message_dolog P_ ((char *, int, int)); 1735 extern void message_dolog P_ ((char *, int, int, int));
1736 extern void message_with_string P_ ((char *, Lisp_Object, int));
1720 extern void message_log_maybe_newline P_ ((void)); 1737 extern void message_log_maybe_newline P_ ((void));
1721 extern void update_echo_area P_ ((void)); 1738 extern void update_echo_area P_ ((void));
1722 extern void truncate_echo_area P_ ((int)); 1739 extern void truncate_echo_area P_ ((int));
1723 extern void redisplay P_ ((void)); 1740 extern void redisplay P_ ((void));
1724 extern void redisplay_preserve_echo_area P_ ((void)); 1741 extern void redisplay_preserve_echo_area P_ ((void));
1740 EXFUN (Fmake_symbol, 1); 1757 EXFUN (Fmake_symbol, 1);
1741 EXFUN (Fmake_marker, 0); 1758 EXFUN (Fmake_marker, 0);
1742 EXFUN (Fmake_string, 2); 1759 EXFUN (Fmake_string, 2);
1743 extern Lisp_Object build_string P_ ((char *)); 1760 extern Lisp_Object build_string P_ ((char *));
1744 extern Lisp_Object make_string P_ ((char *, int)); 1761 extern Lisp_Object make_string P_ ((char *, int));
1762 extern Lisp_Object make__multibytestring P_ ((char *, int, int));
1745 extern Lisp_Object make_event_array P_ ((int, Lisp_Object *)); 1763 extern Lisp_Object make_event_array P_ ((int, Lisp_Object *));
1746 extern Lisp_Object make_uninit_string P_ ((int)); 1764 extern Lisp_Object make_uninit_string P_ ((int));
1765 extern Lisp_Object make_uninit_multibyte_string P_ ((int, int));
1747 EXFUN (Fpurecopy, 1); 1766 EXFUN (Fpurecopy, 1);
1748 extern Lisp_Object make_pure_string P_ ((char *, int)); 1767 extern Lisp_Object make_pure_string P_ ((char *, int, int));
1749 extern Lisp_Object pure_cons P_ ((Lisp_Object, Lisp_Object)); 1768 extern Lisp_Object pure_cons P_ ((Lisp_Object, Lisp_Object));
1750 extern Lisp_Object make_pure_vector P_ ((EMACS_INT)); 1769 extern Lisp_Object make_pure_vector P_ ((EMACS_INT));
1751 EXFUN (Fgarbage_collect, 0); 1770 EXFUN (Fgarbage_collect, 0);
1752 EXFUN (Fmake_byte_code, MANY); 1771 EXFUN (Fmake_byte_code, MANY);
1753 EXFUN (Fmake_bool_vector, 2); 1772 EXFUN (Fmake_bool_vector, 2);
1800 EXFUN (Fread_char, 0); 1819 EXFUN (Fread_char, 0);
1801 extern Lisp_Object read_filtered_event P_ ((int, int, int)); 1820 extern Lisp_Object read_filtered_event P_ ((int, int, int));
1802 EXFUN (Feval_region, 3); 1821 EXFUN (Feval_region, 3);
1803 extern Lisp_Object intern P_ ((char *)); 1822 extern Lisp_Object intern P_ ((char *));
1804 extern Lisp_Object make_symbol P_ ((char *)); 1823 extern Lisp_Object make_symbol P_ ((char *));
1805 extern Lisp_Object oblookup P_ ((Lisp_Object, char *, int)); 1824 extern Lisp_Object oblookup P_ ((Lisp_Object, char *, int, int));
1806 #define LOADHIST_ATTACH(x) \ 1825 #define LOADHIST_ATTACH(x) \
1807 if (initialized) Vcurrent_load_list = Fcons (x, Vcurrent_load_list) 1826 if (initialized) Vcurrent_load_list = Fcons (x, Vcurrent_load_list)
1808 extern Lisp_Object Vcurrent_load_list; 1827 extern Lisp_Object Vcurrent_load_list;
1809 extern Lisp_Object Vload_history; 1828 extern Lisp_Object Vload_history;
1810 extern int openp P_ ((Lisp_Object, Lisp_Object, char *, Lisp_Object *, int)); 1829 extern int openp P_ ((Lisp_Object, Lisp_Object, char *, Lisp_Object *, int));