*** empty log message ***
[bpt/emacs.git] / src / category.h
index 723bdb0..5607efa 100644 (file)
@@ -1,7 +1,6 @@
 /* Declarations having to do with Emacs category tables.
-   Ver.1.0
-   Copyright (C) 1995 Free Software Foundation, Inc.
    Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
+     Licensed to the Free Software Foundation.
 
 This file is part of GNU Emacs.
 
@@ -37,12 +36,12 @@ Boston, MA 02111-1307, USA.  */
    categories.  Total number of categories is limited to 95.
 
    A category set is a set of categories represented by Lisp
-   bool-vector of length 128 (only elements of 31th through 125th
+   bool-vector of length 128 (only elements of 31th through 126th
    are used).
 
    A category table is like syntax-table, represented by a Lisp
    char-table.  The contents are category sets or nil.  It has two
-   extra slots. for a vector of doc string of each category and a
+   extra slots, for a vector of doc string of each category and a
    version number.
 
    The first extra slot is a vector of doc strings of categories, the
@@ -54,7 +53,7 @@ Boston, MA 02111-1307, USA.  */
 #define CATEGORYP(x) \
   (INTEGERP ((x)) && XFASTINT ((x)) >= 0x20 && XFASTINT ((x)) <= 0x7E)
 
-#define CHECK_CATEGORY(x, i)                                           \
+#define CHECK_CATEGORY(x)                                              \
   do {                                                                 \
     if (!CATEGORYP ((x))) x = wrong_type_argument (Qcategoryp, (x));   \
   } while (0)
@@ -72,7 +71,7 @@ Boston, MA 02111-1307, USA.  */
 #define SET_CATEGORY_SET(category_set, category, val) \
   (Faset (category_set, category, val))
 
-#define CHECK_CATEGORY_SET(x, i)                                          \
+#define CHECK_CATEGORY_SET(x)                                     \
   do {                                                                    \
     if (!CATEGORY_SET_P ((x))) x = wrong_type_argument (Qcategorysetp, (x)); \
   } while (0)
@@ -80,9 +79,8 @@ Boston, MA 02111-1307, USA.  */
 /* Return 1 if CATEGORY_SET contains CATEGORY, else return 0.
    The faster version of `!NILP (Faref (category_set, category))'.  */
 #define CATEGORY_MEMBER(category, category_set)                                \
-  (!NILP (category_set)                                                        \
-   && (XCATEGORY_SET (category_set)->data[XFASTINT (category) / 8]     \
-       & (1 << (XFASTINT (category) % 8))))
+  (XCATEGORY_SET (category_set)->data[(category) / 8]                  \
+   & (1 << ((category) % 8)))
 
 /* Temporary internal variable used in macro CHAR_HAS_CATEGORY.  */
 extern Lisp_Object _temp_category_set;
@@ -98,28 +96,29 @@ extern Lisp_Object _temp_category_set;
 
 /* Return the category set of character C in the current category table.  */
 #ifdef __GNUC__
-#define CATEGORY_SET(c)                                                \
-  ({ Lisp_Object table = current_buffer->category_table;       \
-     Lisp_Object temp;                                         \
-     if (c < CHAR_TABLE_ORDINARY_SLOTS)                                \
-       while (NILP (temp = XCHAR_TABLE (table)->contents[c])   \
-             && NILP (temp = XCHAR_TABLE (table)->defalt))     \
-        table = XCHAR_TABLE (table)->parent;                   \
-     else                                                      \
-       temp = Faref (table, c);                                        \
+#define CATEGORY_SET(c)                                                             \
+  ({ Lisp_Object table = current_buffer->category_table;                    \
+     Lisp_Object temp;                                                      \
+     if ((c) < CHAR_TABLE_SINGLE_BYTE_SLOTS)                                \
+       while (NILP (temp = XCHAR_TABLE (table)->contents[(unsigned char) c]) \
+             && NILP (temp = XCHAR_TABLE (table)->defalt))                  \
+        table = XCHAR_TABLE (table)->parent;                                \
+     else                                                                   \
+       temp = Faref (table, make_number (c));                               \
      temp; })
 #else
-#define CATEGORY_SET(c) Faref (current_buffer->category_table, c)
-#endif   
+#define CATEGORY_SET(c) \
+  Faref (current_buffer->category_table, make_number (c))
+#endif
 
 /* Return the doc string of CATEGORY in category table TABLE.  */
 #define CATEGORY_DOCSTRING(table, category) \
-  XVECTOR (Fchar_table_extra_slot (table, 0))->contents[(category) - ' ']
+  XVECTOR (Fchar_table_extra_slot (table, make_number (0)))->contents[(category) - ' ']
 
 /* Return the version number of category table TABLE.  Not used for
    the moment.  */
 #define CATEGORY_TABLE_VERSION (table) \
-  Fchar_table_extra_slot (table, 1)
+  Fchar_table_extra_slot (table, make_number (1))
 
 /* Return 1 if there is a word boundary between two word-constituent
    characters C1 and C2 if they appear in this order, else return 0.
@@ -128,3 +127,8 @@ extern Lisp_Object _temp_category_set;
 #define WORD_BOUNDARY_P(c1, c2)                                        \
   (!(SINGLE_BYTE_CHAR_P (c1) && SINGLE_BYTE_CHAR_P (c2))       \
    && word_boundary_p (c1, c2))
+
+extern int word_boundary_p P_ ((int, int));
+
+/* arch-tag: 309dfe83-c3e2-4d22-8e81-faae5aece0ff
+   (do not change this comment) */