annotate src/casetab.h @ 3017:1e7cc382eb16

[xemacs-hg @ 2005-10-24 10:07:26 by ben] refactor mc-alloc dependencies next-error.el, occur.el: Fix some byte-compile warnings. alloc.c, buffer.c, buffer.h, casetab.c, casetab.h, charset.h, chartab.c, chartab.h, console-impl.h, console-msw-impl.h, console.c, data.c, database.c, device-impl.h, device-msw.c, device.c, dialog-msw.c, elhash.c, events.h, extents-impl.h, extents.c, faces.c, faces.h, file-coding.c, file-coding.h, frame-impl.h, frame.c, glyphs.c, glyphs.h, gui.c, gui.h, keymap.c, lisp.h, lrecord.h, lstream.c, lstream.h, mule-charset.c, objects-impl.h, objects.c, opaque.c, opaque.h, print.c, process.c, procimpl.h, rangetab.c, rangetab.h, scrollbar-gtk.c, scrollbar-msw.c, scrollbar-x.c, scrollbar.c, scrollbar.h, specifier.c, specifier.h, symbols.c, symeval.h, toolbar.c, toolbar.h, tooltalk.c, ui-gtk.c, ui-gtk.h, unicode.c, window-impl.h, window.c: Eliminate the majority of #ifdef MC_ALLOC occurrences through macros LCRECORD_HEADER, ALLOC_LCRECORD_TYPE, MALLOCED_STORAGE_SIZE, etc. (defined in lrecord.h).
author ben
date Mon, 24 Oct 2005 10:07:42 +0000
parents 6fa9919a9a0b
children e0db3c197671
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
446
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
1 /* XEmacs routines to deal with case tables.
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
2 Copyright (C) 2000 Yoshiki Hayashi.
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
3 Copyright (C) 2002 Ben Wing.
446
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
4 This file is part of XEmacs.
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
5
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
6 XEmacs is free software; you can redistribute it and/or modify it
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
7 under the terms of the GNU General Public License as published by the
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
8 Free Software Foundation; either version 2, or (at your option) any
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
9 later version.
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
10
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
14 for more details.
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
15
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
17 along with XEmacs; see the file COPYING. If not, write to
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
19 Boston, MA 02111-1307, USA. */
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
20
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
21 /* Synched up with: Not in FSF. */
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
22
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
23 #ifndef INCLUDED_casetab_h_
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
24 #define INCLUDED_casetab_h_
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
25
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
26 struct Lisp_Case_Table
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
27 {
3017
1e7cc382eb16 [xemacs-hg @ 2005-10-24 10:07:26 by ben]
ben
parents: 2720
diff changeset
28 struct LCRECORD_HEADER header;
446
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
29 Lisp_Object downcase_table;
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
30 Lisp_Object upcase_table;
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
31 Lisp_Object case_canon_table;
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
32 Lisp_Object case_eqv_table;
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
33 int dirty;
446
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
34 };
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
35 typedef struct Lisp_Case_Table Lisp_Case_Table;
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
36
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
37 DECLARE_LRECORD (case_table, Lisp_Case_Table);
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
38 #define XCASE_TABLE(x) XRECORD (x, case_table, Lisp_Case_Table)
617
af57a77cbc92 [xemacs-hg @ 2001-06-18 07:09:50 by ben]
ben
parents: 446
diff changeset
39 #define wrap_case_table(p) wrap_record (p, case_table)
446
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
40 #define CASE_TABLEP(x) RECORDP (x, case_table)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
41 #define CHECK_CASE_TABLE(x) CHECK_RECORD (x, case_table)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
42 #define CONCHECK_CASE_TABLE(x) CONCHECK_RECORD (x, case_table)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
43
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
44 void recompute_case_table (Lisp_Object casetab);
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
45
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
46 DECLARE_INLINE_HEADER (
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
47 Lisp_Case_Table *
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
48 XCASE_TABLE_UPDATE (Lisp_Object table)
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
49 )
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
50 {
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
51 Lisp_Case_Table *ct = XCASE_TABLE (table);
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
52 /* If the table is dirty (changes have been made without ancillary
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
53 structures updated), recompute first. */
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
54 if (ct->dirty)
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
55 recompute_case_table (table);
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
56 return ct;
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
57 }
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
58
446
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
59 #define CASE_TABLE_DOWNCASE(ct) ((ct)->downcase_table)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
60 #define CASE_TABLE_UPCASE(ct) ((ct)->upcase_table)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
61 #define CASE_TABLE_CANON(ct) ((ct)->case_canon_table)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
62 #define CASE_TABLE_EQV(ct) ((ct)->case_eqv_table)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
63 #define XCASE_TABLE_DOWNCASE(ct) (XCASE_TABLE (ct)->downcase_table)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
64 #define XCASE_TABLE_UPCASE(ct) (XCASE_TABLE (ct)->upcase_table)
826
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
65 /* Only do automatic updating for canon and eqv, which are the two that are
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
66 automatically computed and that are not up to date. These are not
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
67 normally used by the simple case routines. canon is used by
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
68 compare-buffer-substrings when case-insensitive and by the regex
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
69 routines, and eqv is used only by the Boyer-Moore search routines. */
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
70 #define XCASE_TABLE_CANON(ct) (XCASE_TABLE_UPDATE (ct)->case_canon_table)
6728e641994e [xemacs-hg @ 2002-05-05 11:30:15 by ben]
ben
parents: 793
diff changeset
71 #define XCASE_TABLE_EQV(ct) (XCASE_TABLE_UPDATE (ct)->case_eqv_table)
446
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
72
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
73 #define SET_CASE_TABLE_DOWNCASE(ct, p) ((ct)->downcase_table = p)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
74 #define SET_CASE_TABLE_UPCASE(ct, p) ((ct)->upcase_table = p)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
75 #define SET_CASE_TABLE_CANON(ct, p) ((ct)->case_canon_table = p)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
76 #define SET_CASE_TABLE_EQV(ct, p) ((ct)->case_eqv_table = p)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
77 #define XSET_CASE_TABLE_DOWNCASE(ct, p) \
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
78 SET_CASE_TABLE_DOWNCASE (XCASE_TABLE (ct), p)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
79 #define XSET_CASE_TABLE_UPCASE(ct, p) \
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
80 SET_CASE_TABLE_UPCASE (XCASE_TABLE (ct), p)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
81 #define XSET_CASE_TABLE_CANON(ct, p) \
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
82 SET_CASE_TABLE_CANON (XCASE_TABLE (ct), p)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
83 #define XSET_CASE_TABLE_EQV(ct, p) \
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
84 SET_CASE_TABLE_EQV (XCASE_TABLE (ct), p)
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
85
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
86 extern Lisp_Object Vstandard_case_table;
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
87
1ccc32a20af4 Import from CVS: tag r21-2-38
cvs
parents:
diff changeset
88 #endif /* INCLUDED_casetab_h_ */