+\f
+/* Current buffer's map from characters to lower-case characters. */
+
+#define DOWNCASE_TABLE BVAR (current_buffer, downcase_table)
+
+/* Current buffer's map from characters to upper-case characters. */
+
+#define UPCASE_TABLE BVAR (current_buffer, upcase_table)
+
+/* Downcase a character, or make no change if that cannot be done. */
+
+static inline EMACS_INT
+downcase (int ch)
+{
+ Lisp_Object down = CHAR_TABLE_REF (DOWNCASE_TABLE, ch);
+ return NATNUMP (down) ? XFASTINT (down) : ch;
+}
+#define DOWNCASE(CH) downcase (CH)
+
+/* 1 if CH is upper case. */
+
+#define UPPERCASEP(CH) (DOWNCASE (CH) != (CH))