+/* This is the maximum byte length of multi-byte sequence. */
+#define MAX_MULTIBYTE_LENGTH 4
+
+extern void invalid_character P_ ((int));
+
+extern int translate_char P_ ((Lisp_Object, int, int, int, int));
+extern int split_string P_ ((const unsigned char *, int, int *,
+ unsigned char *, unsigned char *));
+extern int char_to_string P_ ((int, unsigned char *));
+extern int char_to_string_1 P_ ((int, unsigned char *));
+extern int string_to_char P_ ((const unsigned char *, int, int *));
+extern int char_printable_p P_ ((int c));
+extern int multibyte_form_length P_ ((const unsigned char *, int));
+extern void parse_str_as_multibyte P_ ((const unsigned char *, int, int *,
+ int *));
+extern int str_as_multibyte P_ ((unsigned char *, int, int, int *));
+extern int parse_str_to_multibyte P_ ((unsigned char *, int));
+extern int str_to_multibyte P_ ((unsigned char *, int, int));
+extern int str_as_unibyte P_ ((unsigned char *, int));
+extern int get_charset_id P_ ((Lisp_Object));
+extern int find_charset_in_text P_ ((const unsigned char *, int, int, int *,
+ Lisp_Object));
+extern int strwidth P_ ((unsigned char *, int));
+extern int c_string_width P_ ((const unsigned char *, int, int, int *, int *));
+extern int lisp_string_width P_ ((Lisp_Object, int, int *, int *));
+extern int char_bytes P_ ((int));
+extern int char_valid_p P_ ((int, int));
+
+EXFUN (Funibyte_char_to_multibyte, 1);
+
+extern Lisp_Object Vtranslation_table_vector;
+
+/* Return a translation table of id number ID. */
+#define GET_TRANSLATION_TABLE(id) \
+ (XCDR(XVECTOR(Vtranslation_table_vector)->contents[(id)]))
+
+/* A char-table for characters which may invoke auto-filling. */
+extern Lisp_Object Vauto_fill_chars;
+
+/* Copy LEN bytes from FROM to TO. This macro should be used only
+ when a caller knows that LEN is short and the obvious copy loop is
+ faster than calling bcopy which has some overhead. Copying a
+ multibyte sequence of a multibyte character is the typical case. */
+
+#define BCOPY_SHORT(from, to, len) \
+ do { \
+ int i = len; \
+ const unsigned char *from_p = from; \
+ unsigned char *to_p = to; \
+ while (i--) *to_p++ = *from_p++; \
+ } while (0)