declare smobs in alloc.c
[bpt/emacs.git] / lisp / case-table.el
index ab4f83e..6a9958c 100644 (file)
@@ -1,10 +1,9 @@
-;;; case-table.el --- code to extend the character set and support case tables
+;;; case-table.el --- code to extend the character set and support case tables  -*- lexical-binding: t -*-
 
-;; Copyright (C) 1988, 1994, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1994, 2001-2014 Free Software Foundation, Inc.
 
 ;; Author: Howard Gayle
-;; Maintainer: FSF
+;; Maintainer: emacs-devel@gnu.org
 ;; Keywords: i18n
 ;; Package: emacs
 
        (describe-vector description)
        (help-mode)))))
 
+(defun case-table-get-table (case-table table)
+  "Return the TABLE of CASE-TABLE.
+TABLE can be `down', `up', `eqv' or `canon'."
+  (let ((slot-nb (cdr (assq table '((up . 0) (canon . 1) (eqv . 2))))))
+    (or (if (eq table 'down) case-table)
+        (char-table-extra-slot case-table slot-nb)
+        ;; Setup all extra slots of CASE-TABLE by temporarily selecting
+        ;; it as the standard case table.
+        (let ((old (standard-case-table)))
+          (unwind-protect
+              (progn
+                (set-standard-case-table case-table)
+                (char-table-extra-slot case-table slot-nb))
+            (or (eq case-table old)
+                (set-standard-case-table old)))))))
+
 (defun get-upcase-table (case-table)
   "Return the upcase table of CASE-TABLE."
-  (or (char-table-extra-slot case-table 0)
-      ;; Setup all extra slots of CASE-TABLE by temporarily selecting
-      ;; it as the standard case table.
-      (let ((old (standard-case-table)))
-       (unwind-protect
-           (progn
-             (set-standard-case-table case-table)
-             (char-table-extra-slot case-table 0))
-         (or (eq case-table old)
-             (set-standard-case-table old))))))
+  (case-table-get-table case-table 'up))
+(make-obsolete 'get-upcase-table 'case-table-get-table "24.4")
 
 (defun copy-case-table (case-table)
   (let ((copy (copy-sequence case-table))
@@ -98,7 +105,7 @@ It also modifies `standard-syntax-table' to
 indicate left and right delimiters."
   (aset table l l)
   (aset table r r)
-  (let ((up (get-upcase-table table)))
+  (let ((up (case-table-get-table table 'up)))
     (aset up l l)
     (aset up r r))
   ;; Clear out the extra slots so that they will be
@@ -118,7 +125,7 @@ It also modifies `standard-syntax-table' to give them the syntax of
 word constituents."
   (aset table uc lc)
   (aset table lc lc)
-  (let ((up (get-upcase-table table)))
+  (let ((up (case-table-get-table table 'up)))
     (aset up uc uc)
     (aset up lc uc))
   ;; Clear out the extra slots so that they will be
@@ -133,7 +140,7 @@ word constituents."
 It also modifies `standard-syntax-table' to give them the syntax of
 word constituents."
   (aset table lc lc)
-  (let ((up (get-upcase-table table)))
+  (let ((up (case-table-get-table table 'up)))
     (aset up uc uc)
     (aset up lc uc))
   ;; Clear out the extra slots so that they will be
@@ -149,7 +156,7 @@ It also modifies `standard-syntax-table' to give them the syntax of
 word constituents."
   (aset table uc lc)
   (aset table lc lc)
-  (let ((up (get-upcase-table table)))
+  (let ((up (case-table-get-table table 'up)))
     (aset up uc uc))
   ;; Clear out the extra slots so that they will be
   ;; recomputed from the main (downcase) table and upcase table.
@@ -165,7 +172,7 @@ that will be used as the downcase part of a case table.
 It also modifies `standard-syntax-table'.
 SYNTAX should be \" \", \"w\", \".\" or \"_\"."
   (aset table c c)
-  (let ((up (get-upcase-table table)))
+  (let ((up (case-table-get-table table 'up)))
     (aset up c c))
   ;; Clear out the extra slots so that they will be
   ;; recomputed from the main (downcase) table and upcase table.
@@ -175,5 +182,4 @@ SYNTAX should be \" \", \"w\", \".\" or \"_\"."
 
 (provide 'case-table)
 
-;; arch-tag: 3c2cf885-2c9a-449a-9972-2e269191896d
 ;;; case-table.el ends here