comparison src/coding.c @ 59168:0345f2b10f1d

(decode_coding_XXX, decode_composition_emacs_mule) (decode_coding_emacs_mule, encode_coding_emacs_mule) (decode_coding_iso2022, encode_designation_at_bol) (encode_coding_iso2022, decode_coding_sjis_big5, decode_eol) (decode_coding): Constify arguments and local vars.
author Dan Nicolaescu <dann@ics.uci.edu>
date Tue, 28 Dec 2004 14:50:49 +0000
parents 8a2a99b47220
children 2eadf4401d2d
comparison
equal deleted inserted replaced
59167:a2a87e183a52 59168:0345f2b10f1d
145 Below is a template for these functions. */ 145 Below is a template for these functions. */
146 #if 0 146 #if 0
147 static void 147 static void
148 decode_coding_XXX (coding, source, destination, src_bytes, dst_bytes) 148 decode_coding_XXX (coding, source, destination, src_bytes, dst_bytes)
149 struct coding_system *coding; 149 struct coding_system *coding;
150 unsigned char *source, *destination; 150 const unsigned char *source;
151 unsigned char *destination;
151 int src_bytes, dst_bytes; 152 int src_bytes, dst_bytes;
152 { 153 {
153 ... 154 ...
154 } 155 }
155 #endif 156 #endif
798 */ 799 */
799 static INLINE int 800 static INLINE int
800 decode_composition_emacs_mule (coding, src, src_end, 801 decode_composition_emacs_mule (coding, src, src_end,
801 destination, dst_end, dst_bytes) 802 destination, dst_end, dst_bytes)
802 struct coding_system *coding; 803 struct coding_system *coding;
803 unsigned char *src, *src_end, **destination, *dst_end; 804 const unsigned char *src, *src_end;
805 unsigned char **destination, *dst_end;
804 int dst_bytes; 806 int dst_bytes;
805 { 807 {
806 unsigned char *dst = *destination; 808 unsigned char *dst = *destination;
807 int method, data_len, nchars; 809 int method, data_len, nchars;
808 unsigned char *src_base = src++; 810 const unsigned char *src_base = src++;
809 /* Store components of composition. */ 811 /* Store components of composition. */
810 int component[COMPOSITION_DATA_MAX_BUNCH_LENGTH]; 812 int component[COMPOSITION_DATA_MAX_BUNCH_LENGTH];
811 int ncomponent; 813 int ncomponent;
812 /* Store multibyte form of characters to be composed. This is for 814 /* Store multibyte form of characters to be composed. This is for
813 Emacs 20 style composition sequence. */ 815 Emacs 20 style composition sequence. */
944 /* See the above "GENERAL NOTES on `decode_coding_XXX ()' functions". */ 946 /* See the above "GENERAL NOTES on `decode_coding_XXX ()' functions". */
945 947
946 static void 948 static void
947 decode_coding_emacs_mule (coding, source, destination, src_bytes, dst_bytes) 949 decode_coding_emacs_mule (coding, source, destination, src_bytes, dst_bytes)
948 struct coding_system *coding; 950 struct coding_system *coding;
949 unsigned char *source, *destination; 951 const unsigned char *source;
952 unsigned char *destination;
950 int src_bytes, dst_bytes; 953 int src_bytes, dst_bytes;
951 { 954 {
952 unsigned char *src = source; 955 const unsigned char *src = source;
953 unsigned char *src_end = source + src_bytes; 956 const unsigned char *src_end = source + src_bytes;
954 unsigned char *dst = destination; 957 unsigned char *dst = destination;
955 unsigned char *dst_end = destination + dst_bytes; 958 unsigned char *dst_end = destination + dst_bytes;
956 /* SRC_BASE remembers the start position in source in each loop. 959 /* SRC_BASE remembers the start position in source in each loop.
957 The loop will be exited when there's not enough source code, or 960 The loop will be exited when there's not enough source code, or
958 when there's not enough destination area to produce a 961 when there's not enough destination area to produce a
959 character. */ 962 character. */
960 unsigned char *src_base; 963 const unsigned char *src_base;
961 964
962 coding->produced_char = 0; 965 coding->produced_char = 0;
963 while ((src_base = src) < src_end) 966 while ((src_base = src) < src_end)
964 { 967 {
965 unsigned char tmp[MAX_MULTIBYTE_LENGTH], *p; 968 unsigned char tmp[MAX_MULTIBYTE_LENGTH];
969 const unsigned char *p;
966 int bytes; 970 int bytes;
967 971
968 if (*src == '\r') 972 if (*src == '\r')
969 { 973 {
970 int c = *src++; 974 int c = *src++;
1114 unsigned char *, int, int)); 1118 unsigned char *, int, int));
1115 1119
1116 static void 1120 static void
1117 encode_coding_emacs_mule (coding, source, destination, src_bytes, dst_bytes) 1121 encode_coding_emacs_mule (coding, source, destination, src_bytes, dst_bytes)
1118 struct coding_system *coding; 1122 struct coding_system *coding;
1119 unsigned char *source, *destination; 1123 const unsigned char *source;
1124 unsigned char *destination;
1120 int src_bytes, dst_bytes; 1125 int src_bytes, dst_bytes;
1121 { 1126 {
1122 unsigned char *src = source; 1127 const unsigned char *src = source;
1123 unsigned char *src_end = source + src_bytes; 1128 const unsigned char *src_end = source + src_bytes;
1124 unsigned char *dst = destination; 1129 unsigned char *dst = destination;
1125 unsigned char *dst_end = destination + dst_bytes; 1130 unsigned char *dst_end = destination + dst_bytes;
1126 unsigned char *src_base; 1131 const unsigned char *src_base;
1127 int c; 1132 int c;
1128 int char_offset; 1133 int char_offset;
1129 int *data; 1134 int *data;
1130 1135
1131 Lisp_Object translation_table; 1136 Lisp_Object translation_table;
1808 /* See the above "GENERAL NOTES on `decode_coding_XXX ()' functions". */ 1813 /* See the above "GENERAL NOTES on `decode_coding_XXX ()' functions". */
1809 1814
1810 static void 1815 static void
1811 decode_coding_iso2022 (coding, source, destination, src_bytes, dst_bytes) 1816 decode_coding_iso2022 (coding, source, destination, src_bytes, dst_bytes)
1812 struct coding_system *coding; 1817 struct coding_system *coding;
1813 unsigned char *source, *destination; 1818 const unsigned char *source;
1819 unsigned char *destination;
1814 int src_bytes, dst_bytes; 1820 int src_bytes, dst_bytes;
1815 { 1821 {
1816 unsigned char *src = source; 1822 const unsigned char *src = source;
1817 unsigned char *src_end = source + src_bytes; 1823 const unsigned char *src_end = source + src_bytes;
1818 unsigned char *dst = destination; 1824 unsigned char *dst = destination;
1819 unsigned char *dst_end = destination + dst_bytes; 1825 unsigned char *dst_end = destination + dst_bytes;
1820 /* Charsets invoked to graphic plane 0 and 1 respectively. */ 1826 /* Charsets invoked to graphic plane 0 and 1 respectively. */
1821 int charset0 = CODING_SPEC_ISO_PLANE_CHARSET (coding, 0); 1827 int charset0 = CODING_SPEC_ISO_PLANE_CHARSET (coding, 0);
1822 int charset1 = CODING_SPEC_ISO_PLANE_CHARSET (coding, 1); 1828 int charset1 = CODING_SPEC_ISO_PLANE_CHARSET (coding, 1);
1823 /* SRC_BASE remembers the start position in source in each loop. 1829 /* SRC_BASE remembers the start position in source in each loop.
1824 The loop will be exited when there's not enough source code 1830 The loop will be exited when there's not enough source code
1825 (within macro ONE_MORE_BYTE), or when there's not enough 1831 (within macro ONE_MORE_BYTE), or when there's not enough
1826 destination area to produce a character (within macro 1832 destination area to produce a character (within macro
1827 EMIT_CHAR). */ 1833 EMIT_CHAR). */
1828 unsigned char *src_base; 1834 const unsigned char *src_base;
1829 int c, charset; 1835 int c, charset;
1830 Lisp_Object translation_table; 1836 Lisp_Object translation_table;
1831 Lisp_Object safe_chars; 1837 Lisp_Object safe_chars;
1832 1838
1833 safe_chars = coding_safe_chars (coding->symbol); 1839 safe_chars = coding_safe_chars (coding->symbol);
2594 2600
2595 static unsigned char * 2601 static unsigned char *
2596 encode_designation_at_bol (coding, translation_table, src, src_end, dst) 2602 encode_designation_at_bol (coding, translation_table, src, src_end, dst)
2597 struct coding_system *coding; 2603 struct coding_system *coding;
2598 Lisp_Object translation_table; 2604 Lisp_Object translation_table;
2599 unsigned char *src, *src_end, *dst; 2605 const unsigned char *src, *src_end;
2606 unsigned char *dst;
2600 { 2607 {
2601 int charset, c, found = 0, reg; 2608 int charset, c, found = 0, reg;
2602 /* Table of charsets to be designated to each graphic register. */ 2609 /* Table of charsets to be designated to each graphic register. */
2603 int r[4]; 2610 int r[4];
2604 2611
2635 /* See the above "GENERAL NOTES on `encode_coding_XXX ()' functions". */ 2642 /* See the above "GENERAL NOTES on `encode_coding_XXX ()' functions". */
2636 2643
2637 static void 2644 static void
2638 encode_coding_iso2022 (coding, source, destination, src_bytes, dst_bytes) 2645 encode_coding_iso2022 (coding, source, destination, src_bytes, dst_bytes)
2639 struct coding_system *coding; 2646 struct coding_system *coding;
2640 unsigned char *source, *destination; 2647 const unsigned char *source;
2648 unsigned char *destination;
2641 int src_bytes, dst_bytes; 2649 int src_bytes, dst_bytes;
2642 { 2650 {
2643 unsigned char *src = source; 2651 const unsigned char *src = source;
2644 unsigned char *src_end = source + src_bytes; 2652 const unsigned char *src_end = source + src_bytes;
2645 unsigned char *dst = destination; 2653 unsigned char *dst = destination;
2646 unsigned char *dst_end = destination + dst_bytes; 2654 unsigned char *dst_end = destination + dst_bytes;
2647 /* Since the maximum bytes produced by each loop is 20, we subtract 19 2655 /* Since the maximum bytes produced by each loop is 20, we subtract 19
2648 from DST_END to assure overflow checking is necessary only at the 2656 from DST_END to assure overflow checking is necessary only at the
2649 head of loop. */ 2657 head of loop. */
2651 /* SRC_BASE remembers the start position in source in each loop. 2659 /* SRC_BASE remembers the start position in source in each loop.
2652 The loop will be exited when there's not enough source text to 2660 The loop will be exited when there's not enough source text to
2653 analyze multi-byte codes (within macro ONE_MORE_CHAR), or when 2661 analyze multi-byte codes (within macro ONE_MORE_CHAR), or when
2654 there's not enough destination area to produce encoded codes 2662 there's not enough destination area to produce encoded codes
2655 (within macro EMIT_BYTES). */ 2663 (within macro EMIT_BYTES). */
2656 unsigned char *src_base; 2664 const unsigned char *src_base;
2657 int c; 2665 int c;
2658 Lisp_Object translation_table; 2666 Lisp_Object translation_table;
2659 Lisp_Object safe_chars; 2667 Lisp_Object safe_chars;
2660 2668
2661 if (coding->flags & CODING_FLAG_ISO_SAFE) 2669 if (coding->flags & CODING_FLAG_ISO_SAFE)
3045 3053
3046 static void 3054 static void
3047 decode_coding_sjis_big5 (coding, source, destination, 3055 decode_coding_sjis_big5 (coding, source, destination,
3048 src_bytes, dst_bytes, sjis_p) 3056 src_bytes, dst_bytes, sjis_p)
3049 struct coding_system *coding; 3057 struct coding_system *coding;
3050 unsigned char *source, *destination; 3058 const unsigned char *source;
3059 unsigned char *destination;
3051 int src_bytes, dst_bytes; 3060 int src_bytes, dst_bytes;
3052 int sjis_p; 3061 int sjis_p;
3053 { 3062 {
3054 unsigned char *src = source; 3063 const unsigned char *src = source;
3055 unsigned char *src_end = source + src_bytes; 3064 const unsigned char *src_end = source + src_bytes;
3056 unsigned char *dst = destination; 3065 unsigned char *dst = destination;
3057 unsigned char *dst_end = destination + dst_bytes; 3066 unsigned char *dst_end = destination + dst_bytes;
3058 /* SRC_BASE remembers the start position in source in each loop. 3067 /* SRC_BASE remembers the start position in source in each loop.
3059 The loop will be exited when there's not enough source code 3068 The loop will be exited when there's not enough source code
3060 (within macro ONE_MORE_BYTE), or when there's not enough 3069 (within macro ONE_MORE_BYTE), or when there's not enough
3061 destination area to produce a character (within macro 3070 destination area to produce a character (within macro
3062 EMIT_CHAR). */ 3071 EMIT_CHAR). */
3063 unsigned char *src_base; 3072 const unsigned char *src_base;
3064 Lisp_Object translation_table; 3073 Lisp_Object translation_table;
3065 3074
3066 if (NILP (Venable_character_translation)) 3075 if (NILP (Venable_character_translation))
3067 translation_table = Qnil; 3076 translation_table = Qnil;
3068 else 3077 else
3318 /* See the above "GENERAL NOTES on `decode_coding_XXX ()' functions". */ 3327 /* See the above "GENERAL NOTES on `decode_coding_XXX ()' functions". */
3319 3328
3320 static void 3329 static void
3321 decode_eol (coding, source, destination, src_bytes, dst_bytes) 3330 decode_eol (coding, source, destination, src_bytes, dst_bytes)
3322 struct coding_system *coding; 3331 struct coding_system *coding;
3323 unsigned char *source, *destination; 3332 const unsigned char *source;
3333 unsigned char *destination;
3324 int src_bytes, dst_bytes; 3334 int src_bytes, dst_bytes;
3325 { 3335 {
3326 unsigned char *src = source; 3336 const unsigned char *src = source;
3327 unsigned char *dst = destination; 3337 unsigned char *dst = destination;
3328 unsigned char *src_end = src + src_bytes; 3338 const unsigned char *src_end = src + src_bytes;
3329 unsigned char *dst_end = dst + dst_bytes; 3339 unsigned char *dst_end = dst + dst_bytes;
3330 Lisp_Object translation_table; 3340 Lisp_Object translation_table;
3331 /* SRC_BASE remembers the start position in source in each loop. 3341 /* SRC_BASE remembers the start position in source in each loop.
3332 The loop will be exited when there's not enough source code 3342 The loop will be exited when there's not enough source code
3333 (within macro ONE_MORE_BYTE), or when there's not enough 3343 (within macro ONE_MORE_BYTE), or when there's not enough
3334 destination area to produce a character (within macro 3344 destination area to produce a character (within macro
3335 EMIT_CHAR). */ 3345 EMIT_CHAR). */
3336 unsigned char *src_base; 3346 const unsigned char *src_base;
3337 int c; 3347 int c;
3338 3348
3339 translation_table = Qnil; 3349 translation_table = Qnil;
3340 switch (coding->eol_type) 3350 switch (coding->eol_type)
3341 { 3351 {
4858 unibyte. */ 4868 unibyte. */
4859 4869
4860 int 4870 int
4861 decode_coding (coding, source, destination, src_bytes, dst_bytes) 4871 decode_coding (coding, source, destination, src_bytes, dst_bytes)
4862 struct coding_system *coding; 4872 struct coding_system *coding;
4863 const unsigned char *source; 4873 const const unsigned char *source;
4864 unsigned char *destination; 4874 unsigned char *destination;
4865 int src_bytes, dst_bytes; 4875 int src_bytes, dst_bytes;
4866 { 4876 {
4867 int extra = 0; 4877 int extra = 0;
4868 4878