diff src/specifier.c @ 371:cc15677e0335 r21-2b1

Import from CVS: tag r21-2b1
author cvs
date Mon, 13 Aug 2007 11:03:08 +0200
parents 7347b34c275b
children 8626e4521993
line wrap: on
line diff
--- a/src/specifier.c	Mon Aug 13 11:01:58 2007 +0200
+++ b/src/specifier.c	Mon Aug 13 11:03:08 2007 +0200
@@ -37,8 +37,7 @@
 #include "opaque.h"
 #include "specifier.h"
 #include "window.h"
-#include "chartab.h"
-#include "rangetab.h"
+#include "glyphs.h"  /* for DISP_TABLE_SIZE definition */
 
 Lisp_Object Qspecifierp;
 Lisp_Object Qprepend, Qappend, Qremove_tag_set_prepend, Qremove_tag_set_append;
@@ -2995,38 +2994,14 @@
 
 DEFINE_SPECIFIER_TYPE (display_table);
 
-#define VALID_SINGLE_DISPTABLE_INSTANTIATOR_P(instantiator) \
- (VECTORP (instantiator) \
-  || (CHAR_TABLEP (instantiator) \
-      && (XCHAR_TABLE_TYPE (instantiator) == CHAR_TABLE_TYPE_CHAR \
-         || XCHAR_TABLE_TYPE (instantiator) == CHAR_TABLE_TYPE_GENERIC)) \
-  || RANGE_TABLEP (instantiator))
-
 static void
 display_table_validate (Lisp_Object instantiator)
 {
-  if (NILP (instantiator))
-    /* OK */
-    ;
-  else if (CONSP (instantiator))
-    {
-      Lisp_Object tail;
-      EXTERNAL_LIST_LOOP (tail, instantiator)
-	{
-	  Lisp_Object car = XCAR (tail);
-	  if (!VALID_SINGLE_DISPTABLE_INSTANTIATOR_P (car))
-	    goto lose;
-	}
-    }
-  else
-    {
-      if (!VALID_SINGLE_DISPTABLE_INSTANTIATOR_P (instantiator))
-	{
-	lose:
-	  dead_wrong_type_argument (display_table_specifier_methods->predicate_symbol,
-				    instantiator);
-	}
-    }
+  if (!NILP(instantiator) &&
+      (!VECTORP (instantiator) ||
+       XVECTOR_LENGTH (instantiator) != DISP_TABLE_SIZE))
+    dead_wrong_type_argument (display_table_specifier_methods->predicate_symbol,
+			      instantiator);
 }
 
 DEFUN ("display-table-specifier-p", Fdisplay_table_specifier_p, 1, 1, 0, /*