aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorRichard M. Stallman1998-01-09 23:17:00 +0000
committerRichard M. Stallman1998-01-09 23:17:00 +0000
commita1b5012f8aada770dda68c83afd8880fbda9f356 (patch)
tree9f424a4381a05300aeb65bea4dfdbf1ae49ddf18 /src/lisp.h
parentf3ba54094e9f22ff95216f8aa0b528125591ea52 (diff)
downloademacs-a1b5012f8aada770dda68c83afd8880fbda9f356.tar.gz
emacs-a1b5012f8aada770dda68c83afd8880fbda9f356.zip
(STRING_MULTIBYTE): New macro.
(struct lisp_String): New field size_byte.
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h31
1 files changed, 25 insertions, 6 deletions
diff --git a/src/lisp.h b/src/lisp.h
index c5b9c815852..272ef009a7f 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -540,11 +540,16 @@ struct Lisp_Buffer_Cons
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
545struct Lisp_String 549struct 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 };
@@ -1511,6 +1516,7 @@ EXFUN (Fnatnump, 1);
1511EXFUN (Fsymbolp, 1); 1516EXFUN (Fsymbolp, 1);
1512EXFUN (Fvectorp, 1); 1517EXFUN (Fvectorp, 1);
1513EXFUN (Fstringp, 1); 1518EXFUN (Fstringp, 1);
1519EXFUN (Fmultibyte_string_p, 1);
1514EXFUN (Farrayp, 1); 1520EXFUN (Farrayp, 1);
1515EXFUN (Fsequencep, 1); 1521EXFUN (Fsequencep, 1);
1516EXFUN (Fbufferp, 1); 1522EXFUN (Fbufferp, 1);
@@ -1595,6 +1601,7 @@ EXFUN (Fforward_char, 1);
1595EXFUN (Fforward_line, 1); 1601EXFUN (Fforward_line, 1);
1596extern int forward_point P_ ((int)); 1602extern int forward_point P_ ((int));
1597extern int internal_self_insert P_ ((int, int)); 1603extern int internal_self_insert P_ ((int, int));
1604extern int nonascii_insert_offset;
1598 1605
1599/* Defined in coding.c */ 1606/* Defined in coding.c */
1600EXFUN (Fcoding_system_p, 1); 1607EXFUN (Fcoding_system_p, 1);
@@ -1607,6 +1614,8 @@ EXFUN (Fdecode_coding_string, 3);
1607 1614
1608/* Defined in charset.c */ 1615/* Defined in charset.c */
1609EXFUN (Fchar_bytes, 1); 1616EXFUN (Fchar_bytes, 1);
1617extern int chars_in_text P_ ((unsigned char *, int));
1618extern int multibyte_chars_in_text P_ ((unsigned char *, int));
1610 1619
1611/* Defined in syntax.c */ 1620/* Defined in syntax.c */
1612EXFUN (Fforward_word, 1); 1621EXFUN (Fforward_word, 1);
@@ -1628,6 +1637,7 @@ EXFUN (Fconcat, MANY);
1628EXFUN (Fvconcat, MANY); 1637EXFUN (Fvconcat, MANY);
1629EXFUN (Fcopy_sequence, 1); 1638EXFUN (Fcopy_sequence, 1);
1630EXFUN (Fsubstring, 3); 1639EXFUN (Fsubstring, 3);
1640extern Lisp_Object substring_both P_ ((Lisp_Object, int, int, int, int));
1631EXFUN (Fnth, 2); 1641EXFUN (Fnth, 2);
1632EXFUN (Fnthcdr, 2); 1642EXFUN (Fnthcdr, 2);
1633EXFUN (Fmemq, 2); 1643EXFUN (Fmemq, 2);
@@ -1656,6 +1666,8 @@ extern Lisp_Object concat2 P_ ((Lisp_Object, Lisp_Object));
1656extern Lisp_Object concat3 P_ ((Lisp_Object, Lisp_Object, Lisp_Object)); 1666extern Lisp_Object concat3 P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
1657extern Lisp_Object nconc2 P_ ((Lisp_Object, Lisp_Object)); 1667extern Lisp_Object nconc2 P_ ((Lisp_Object, Lisp_Object));
1658extern Lisp_Object assq_no_quit P_ ((Lisp_Object, Lisp_Object)); 1668extern Lisp_Object assq_no_quit P_ ((Lisp_Object, Lisp_Object));
1669extern int string_char_to_byte P_ ((Lisp_Object, int));
1670extern int string_byte_to_char P_ ((Lisp_Object, int));
1659EXFUN (Fcopy_alist, 1); 1671EXFUN (Fcopy_alist, 1);
1660EXFUN (Fplist_get, 2); 1672EXFUN (Fplist_get, 2);
1661EXFUN (Fset_char_table_parent, 2); 1673EXFUN (Fset_char_table_parent, 2);
@@ -1679,16 +1691,19 @@ EXFUN (Ftruncate, 2);
1679extern void move_gap P_ ((int)); 1691extern void move_gap P_ ((int));
1680extern void move_gap_both P_ ((int, int)); 1692extern void move_gap_both P_ ((int, int));
1681extern void make_gap P_ ((int)); 1693extern void make_gap P_ ((int));
1694extern int copy_text P_ ((unsigned char *, unsigned char *, int, int, int));
1695extern int count_size_as_multibyte P_ ((unsigned char *, int));
1682extern void insert P_ ((unsigned char *, int)); 1696extern void insert P_ ((unsigned char *, int));
1683extern void insert_and_inherit P_ ((unsigned char *, int)); 1697extern void insert_and_inherit P_ ((unsigned char *, int));
1684extern void insert_1 P_ ((unsigned char *, int, int, int, int)); 1698extern void insert_1 P_ ((unsigned char *, int, int, int, int));
1685extern void insert_from_string P_ ((Lisp_Object, int, int, int)); 1699extern void insert_1_both P_ ((unsigned char *, int, int, int, int, int));
1700extern void insert_from_string P_ ((Lisp_Object, int, int, int, int, int));
1686extern void insert_from_buffer P_ ((struct buffer *, int, int, int)); 1701extern void insert_from_buffer P_ ((struct buffer *, int, int, int));
1687extern void insert_char P_ ((int)); 1702extern void insert_char P_ ((int));
1688extern void insert_string P_ ((char *)); 1703extern void insert_string P_ ((char *));
1689extern void insert_before_markers P_ ((unsigned char *, int)); 1704extern void insert_before_markers P_ ((unsigned char *, int));
1690extern void insert_before_markers_and_inherit P_ ((unsigned char *, int)); 1705extern void insert_before_markers_and_inherit P_ ((unsigned char *, int));
1691extern void insert_from_string_before_markers P_ ((Lisp_Object, int, int, int)); 1706extern void insert_from_string_before_markers P_ ((Lisp_Object, int, int, int, int, int));
1692extern void del_range P_ ((int, int)); 1707extern void del_range P_ ((int, int));
1693extern void del_range_1 P_ ((int, int, int)); 1708extern void del_range_1 P_ ((int, int, int));
1694extern void del_range_byte P_ ((int, int, int)); 1709extern void del_range_byte P_ ((int, int, int));
@@ -1710,13 +1725,15 @@ extern void quit_error_check P_ ((void));
1710 1725
1711/* Defined in xdisp.c */ 1726/* Defined in xdisp.c */
1712extern Lisp_Object Vmessage_log_max; 1727extern Lisp_Object Vmessage_log_max;
1728extern int message_enable_multibyte;
1713extern void message P_ ((/* char *, ... */)); 1729extern void message P_ ((/* char *, ... */));
1714extern void message_nolog P_ ((/* char *, ... */)); 1730extern void message_nolog P_ ((/* char *, ... */));
1715extern void message1 P_ ((char *)); 1731extern void message1 P_ ((char *));
1716extern void message1_nolog P_ ((char *)); 1732extern void message1_nolog P_ ((char *));
1717extern void message2 P_ ((char *, int)); 1733extern void message2 P_ ((char *, int, int));
1718extern void message2_nolog P_ ((char *, int, int)); 1734extern void message2_nolog P_ ((char *, int, int));
1719extern void message_dolog P_ ((char *, int, int)); 1735extern void message_dolog P_ ((char *, int, int, int));
1736extern void message_with_string P_ ((char *, Lisp_Object, int));
1720extern void message_log_maybe_newline P_ ((void)); 1737extern void message_log_maybe_newline P_ ((void));
1721extern void update_echo_area P_ ((void)); 1738extern void update_echo_area P_ ((void));
1722extern void truncate_echo_area P_ ((int)); 1739extern void truncate_echo_area P_ ((int));
@@ -1742,10 +1759,12 @@ EXFUN (Fmake_marker, 0);
1742EXFUN (Fmake_string, 2); 1759EXFUN (Fmake_string, 2);
1743extern Lisp_Object build_string P_ ((char *)); 1760extern Lisp_Object build_string P_ ((char *));
1744extern Lisp_Object make_string P_ ((char *, int)); 1761extern Lisp_Object make_string P_ ((char *, int));
1762extern Lisp_Object make__multibytestring P_ ((char *, int, int));
1745extern Lisp_Object make_event_array P_ ((int, Lisp_Object *)); 1763extern Lisp_Object make_event_array P_ ((int, Lisp_Object *));
1746extern Lisp_Object make_uninit_string P_ ((int)); 1764extern Lisp_Object make_uninit_string P_ ((int));
1765extern Lisp_Object make_uninit_multibyte_string P_ ((int, int));
1747EXFUN (Fpurecopy, 1); 1766EXFUN (Fpurecopy, 1);
1748extern Lisp_Object make_pure_string P_ ((char *, int)); 1767extern Lisp_Object make_pure_string P_ ((char *, int, int));
1749extern Lisp_Object pure_cons P_ ((Lisp_Object, Lisp_Object)); 1768extern Lisp_Object pure_cons P_ ((Lisp_Object, Lisp_Object));
1750extern Lisp_Object make_pure_vector P_ ((EMACS_INT)); 1769extern Lisp_Object make_pure_vector P_ ((EMACS_INT));
1751EXFUN (Fgarbage_collect, 0); 1770EXFUN (Fgarbage_collect, 0);
@@ -1802,7 +1821,7 @@ extern Lisp_Object read_filtered_event P_ ((int, int, int));
1802EXFUN (Feval_region, 3); 1821EXFUN (Feval_region, 3);
1803extern Lisp_Object intern P_ ((char *)); 1822extern Lisp_Object intern P_ ((char *));
1804extern Lisp_Object make_symbol P_ ((char *)); 1823extern Lisp_Object make_symbol P_ ((char *));
1805extern Lisp_Object oblookup P_ ((Lisp_Object, char *, int)); 1824extern 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)
1808extern Lisp_Object Vcurrent_load_list; 1827extern Lisp_Object Vcurrent_load_list;