From 29b83cecea5cbb09a715282824feb568f03cdf54 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sat, 16 Jun 2012 10:20:19 +0200 Subject: [PATCH] * category.h (CHAR_HAS_CATEGORY): Define as inline. (CATEGORY_MEMBER): Enforce 1/0 value. * category.c (_temp_category_set): Remove. --- src/ChangeLog | 6 ++++++ src/category.c | 3 --- src/category.h | 26 +++++++++++++------------- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 6b2984c882..b5a22a0ebc 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2012-06-16 Andreas Schwab + + * category.h (CHAR_HAS_CATEGORY): Define as inline. + (CATEGORY_MEMBER): Enforce 1/0 value. + * category.c (_temp_category_set): Remove. + 2012-06-16 Eli Zaretskii * window.c (Fdelete_other_windows_internal) diff --git a/src/category.c b/src/category.c index a59ad3da53..5cb3020a2d 100644 --- a/src/category.c +++ b/src/category.c @@ -50,9 +50,6 @@ static int category_table_version; 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) \ diff --git a/src/category.h b/src/category.h index 423270100b..580e516afd 100644 --- a/src/category.h +++ b/src/category.h @@ -1,6 +1,6 @@ /* Declarations having to do with Emacs category tables. Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008, 2009, 2010, 2011 + 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 National Institute of Advanced Industrial Science and Technology (AIST) Registration Number H14PRO021 Copyright (C) 2003 @@ -69,27 +69,27 @@ along with GNU Emacs. If not, see . */ #define CHECK_CATEGORY_SET(x) \ CHECK_TYPE (CATEGORY_SET_P (x), Qcategorysetp, x) +/* Return the category set of character C in the current category table. */ +#define CATEGORY_SET(c) char_category_set (c) + /* 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) \ - (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; + ((XCATEGORY_SET (category_set)->data[(category) / 8] \ + >> ((category) % 8)) & 1) -/* Return 1 if category set of CH contains CATEGORY, elt return 0. */ -#define CHAR_HAS_CATEGORY(ch, category) \ - (_temp_category_set = CATEGORY_SET (ch), \ - CATEGORY_MEMBER (category, _temp_category_set)) +/* Return 1 if category set of CH contains CATEGORY, else return 0. */ +static inline int +CHAR_HAS_CATEGORY (int ch, int category) +{ + Lisp_Object category_set = CATEGORY_SET (ch); + return CATEGORY_MEMBER (category, category_set); +} /* The standard category table is stored where it will automatically be used in all new buffers. */ #define Vstandard_category_table BVAR (&buffer_defaults, category_table) -/* Return the category set of character C in the current category table. */ -#define CATEGORY_SET(c) char_category_set (c) - /* Return the doc string of CATEGORY in category table TABLE. */ #define CATEGORY_DOCSTRING(table, category) \ XVECTOR (Fchar_table_extra_slot (table, make_number (0)))->contents[(category) - ' '] -- 2.20.1