diff src/casetab.c @ 272:c5d627a313b1 r21-0b34

Import from CVS: tag r21-0b34
author cvs
date Mon, 13 Aug 2007 10:28:48 +0200
parents 677f6a0ee643
children 6330739388db
line wrap: on
line diff
--- a/src/casetab.c	Mon Aug 13 10:27:41 2007 +0200
+++ b/src/casetab.c	Mon Aug 13 10:28:48 2007 +0200
@@ -53,20 +53,19 @@
 
 static void compute_trt_inverse (Lisp_Object trt, Lisp_Object inverse);
 
-#define STRING256_P(obj) \
-  (STRINGP (obj) && string_char_length (XSTRING (obj)) == 256)
+#define STRING256_P(obj) (STRINGP (obj) && XSTRING_CHAR_LENGTH (obj) == 256)
 
 DEFUN ("case-table-p", Fcase_table_p, 1, 1, 0, /*
-Return t iff ARG is a case table.
+Return t if ARG is a case table.
 See `set-case-table' for more information on these data structures.
 */
        (table))
 {
   Lisp_Object down, up, canon, eqv;
-  down = Fcar_safe (table);
-  up = Fcar_safe (Fcdr_safe (table));
-  canon = Fcar_safe (Fcdr_safe (Fcdr_safe (table)));
-  eqv = Fcar_safe (Fcdr_safe (Fcdr_safe (Fcdr_safe (table))));
+  if (!CONSP (table)) return Qnil; down  = XCAR (table); table = XCDR (table);
+  if (!CONSP (table)) return Qnil; up    = XCAR (table); table = XCDR (table);
+  if (!CONSP (table)) return Qnil; canon = XCAR (table); table = XCDR (table);
+  if (!CONSP (table)) return Qnil; eqv   = XCAR (table);
 
   return (STRING256_P (down)
 	  && (NILP (up) || STRING256_P (up))
@@ -91,15 +90,12 @@
 */
        (buffer))
 {
-  Lisp_Object down, up, canon, eqv;
   struct buffer *buf = decode_buffer (buffer, 0);
 
-  down = buf->downcase_table;
-  up = buf->upcase_table;
-  canon = buf->case_canon_table;
-  eqv = buf->case_eqv_table;
-
-  return Fcons (down, Fcons (up, Fcons (canon, Fcons (eqv, Qnil))));
+  return list4 (buf->downcase_table,
+		buf->upcase_table,
+		buf->case_canon_table,
+		buf->case_eqv_table);
 }
 
 DEFUN ("standard-case-table", Fstandard_case_table, 0, 0, 0, /*
@@ -108,11 +104,10 @@
 */
        ())
 {
-  return Fcons (Vascii_downcase_table,
-		Fcons (Vascii_upcase_table,
-		       Fcons (Vascii_canon_table,
-			      Fcons (Vascii_eqv_table,
-				     Qnil))));
+  return list4 (Vascii_downcase_table,
+		Vascii_upcase_table,
+		Vascii_canon_table,
+		Vascii_eqv_table);
 }
 
 static Lisp_Object set_case_table (Lisp_Object table, int standard);
@@ -194,15 +189,15 @@
 static Lisp_Object
 set_case_table (Lisp_Object table, int standard)
 {
-  Lisp_Object down, up, canon, eqv;
+  Lisp_Object down, up, canon, eqv, tail = table;
   struct buffer *buf = current_buffer;
 
   check_case_table (table);
 
-  down = Fcar_safe (table);
-  up = Fcar_safe (Fcdr_safe (table));
-  canon = Fcar_safe (Fcdr_safe (Fcdr_safe (table)));
-  eqv = Fcar_safe (Fcdr_safe (Fcdr_safe (Fcdr_safe (table))));
+  down  = XCAR (tail); tail = XCDR (tail);
+  up    = XCAR (tail); tail = XCDR (tail);
+  canon = XCAR (tail); tail = XCDR (tail);
+  eqv   = XCAR (tail);
 
   if (NILP (up))
     {