/* GNU Emacs routines to deal with category tables.
-Copyright (C) 1998, 2001-2011 Free Software Foundation, Inc.
+Copyright (C) 1998, 2001-2012 Free Software Foundation, Inc.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
2005, 2006, 2007, 2008, 2009, 2010, 2011
National Institute of Advanced Industrial Science and Technology (AIST)
For the moment, we are not using this feature. */
static int category_table_version;
-Lisp_Object Qcategory_table, Qcategoryp, Qcategorysetp, Qcategory_table_p;
+static Lisp_Object Qcategory_table, Qcategoryp, Qcategorysetp, Qcategory_table_p;
/* Temporary internal variable used in macro CHAR_HAS_CATEGORY. */
Lisp_Object _temp_category_set;
+/* Make CATEGORY_SET includes (if VAL is t) or excludes (if VAL is
+ nil) CATEGORY. */
+#define SET_CATEGORY_SET(category_set, category, val) \
+ set_category_set (category_set, category, val)
+static void set_category_set (Lisp_Object, Lisp_Object, Lisp_Object);
\f
/* Category set staff. */
static Lisp_Object
hash_get_category_set (Lisp_Object table, Lisp_Object category_set)
{
- Lisp_Object val;
struct Lisp_Hash_Table *h;
- int i;
- unsigned hash;
+ ptrdiff_t i;
+ EMACS_UINT hash;
if (NILP (XCHAR_TABLE (table)->extras[1]))
XCHAR_TABLE (table)->extras[1]
\f
/* Category staff. */
-Lisp_Object check_category_table (Lisp_Object table);
+static Lisp_Object check_category_table (Lisp_Object table);
DEFUN ("define-category", Fdefine_category, Sdefine_category, 2, 3, 0,
doc: /* Define CATEGORY as a category which is described by DOCSTRING.
table = check_category_table (table);
if (!NILP (CATEGORY_DOCSTRING (table, XFASTINT (category))))
- error ("Category `%c' is already defined", XFASTINT (category));
+ error ("Category `%c' is already defined", (int) XFASTINT (category));
if (!NILP (Vpurify_flag))
docstring = Fpurecopy (docstring);
CATEGORY_DOCSTRING (table, XFASTINT (category)) = docstring;
valid, return TABLE itself, but if not valid, signal an error of
wrong-type-argument. */
-Lisp_Object
+static Lisp_Object
check_category_table (Lisp_Object table)
{
if (NILP (table))
the original and the copy. This function is called recursively by
binding TABLE to a sub char table. */
-Lisp_Object
+static Lisp_Object
copy_category_table (Lisp_Object table)
{
table = copy_char_table (table);
return build_string (str);
}
-void
+static void
set_category_set (Lisp_Object category_set, Lisp_Object category, Lisp_Object val)
{
do {
table = check_category_table (table);
if (NILP (CATEGORY_DOCSTRING (table, XFASTINT (category))))
- error ("Undefined category: %c", XFASTINT (category));
+ error ("Undefined category: %c", (int) XFASTINT (category));
set_value = NILP (reset) ? Qt : Qnil;
init_category_once (void)
{
/* This has to be done here, before we call Fmake_char_table. */
- Qcategory_table = intern_c_string ("category-table");
- staticpro (&Qcategory_table);
+ DEFSYM (Qcategory_table, "category-table");
/* Intern this now in case it isn't already done.
Setting this variable twice is harmless.
void
syms_of_category (void)
{
- Qcategoryp = intern_c_string ("categoryp");
- staticpro (&Qcategoryp);
- Qcategorysetp = intern_c_string ("categorysetp");
- staticpro (&Qcategorysetp);
- Qcategory_table_p = intern_c_string ("category-table-p");
- staticpro (&Qcategory_table_p);
+ DEFSYM (Qcategoryp, "categoryp");
+ DEFSYM (Qcategorysetp, "categorysetp");
+ DEFSYM (Qcategory_table_p, "category-table-p");
DEFVAR_LISP ("word-combining-categories", Vword_combining_categories,
doc: /* List of pair (cons) of categories to determine word boundary.
category_table_version = 0;
}
-