]> git.eshelyaron.com Git - emacs.git/commitdiff
(CHAR_TABLE_TRANSLATE): New macro.
authorRichard M. Stallman <rms@gnu.org>
Mon, 25 May 1998 20:28:28 +0000 (20:28 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 25 May 1998 20:28:28 +0000 (20:28 +0000)
src/lisp.h

index 17f5ef9fb95265c6371e45084ccad39fafe45ba0..2831f8ed346a4923c78fa77ca43fdd04dc039c0b 100644 (file)
@@ -647,6 +647,19 @@ struct Lisp_Vector
       : XCHAR_TABLE (CT)->defalt)                      \
    : Faref (CT, make_number (IDX)))
 
+/* Almost equivalent to Faref (CT, IDX) with optimization for ASCII
+   and 8-bit Europeans characters.  However, if the result is nil,
+   return IDX.
+
+   For these characters, do not check validity of CT
+   and do not follow parent.  */
+#define CHAR_TABLE_TRANSLATE(CT, IDX)                  \
+  ((IDX) < CHAR_TABLE_SINGLE_BYTE_SLOTS                        \
+   ? (!NILP (XCHAR_TABLE (CT)->contents[IDX])          \
+      ? XINT (XCHAR_TABLE (CT)->contents[IDX])         \
+      : IDX)                                           \
+   : char_table_translate (CT, IDX))
+
 /* Equivalent to Faset (CT, IDX, VAL) with optimization for ASCII and
    8-bit Europeans characters.  Do not check validity of CT.  */
 #define CHAR_TABLE_SET(CT, IDX, VAL)                   \