diff src/specifier.c @ 116:9f59509498e1 r20-1b10

Import from CVS: tag r20-1b10
author cvs
date Mon, 13 Aug 2007 09:23:06 +0200
parents 6a378aca36af
children cca96a509cfe
line wrap: on
line diff
--- a/src/specifier.c	Mon Aug 13 09:21:56 2007 +0200
+++ b/src/specifier.c	Mon Aug 13 09:23:06 2007 +0200
@@ -35,6 +35,7 @@
 #include "opaque.h"
 #include "specifier.h"
 #include "window.h"
+#include "glyphs.h"  /* for DISP_TABLE_SIZE definition */
 
 Lisp_Object Qspecifierp;
 Lisp_Object Qprepend, Qappend, Qremove_tag_set_prepend, Qremove_tag_set_append;
@@ -2877,6 +2878,30 @@
   return (BOOLEAN_SPECIFIERP (object) ? Qt : Qnil);
 }
 
+/************************************************************************/
+/*                        Display table specifier type                  */
+/************************************************************************/
+
+DEFINE_SPECIFIER_TYPE (display_table);
+
+void
+display_table_validate(instantiator)
+Lisp_Object instantiator;
+{
+  if (!NILP(instantiator) &&
+      (!VECTORP (instantiator) ||
+       XVECTOR (instantiator)->size != DISP_TABLE_SIZE))
+    dead_wrong_type_argument(display_table_specifier_methods->predicate_symbol, instantiator);
+  return;
+}
+DEFUN ("display-table-specifier-p", Fdisplay_table_specifier_p, 1, 1, 0, /*
+Return non-nil if OBJECT is an display-table specifier.
+*/
+       (object))
+{
+  return (DISPLAYTABLE_SPECIFIERP (object) ? Qt : Qnil);
+}
+
 
 /************************************************************************/
 /*                           Initialization                             */
@@ -2977,6 +3002,11 @@
   INITIALIZE_SPECIFIER_TYPE (boolean, "boolean", "boolean-specifier-p");
 
   SPECIFIER_HAS_METHOD (boolean, validate);
+
+  INITIALIZE_SPECIFIER_TYPE (display_table, "display-table",
+			     "display-table-p");
+
+  SPECIFIER_HAS_METHOD (display_table, validate);
 }
 
 void