annotate src/casetab.h @ 5050:6f2158fa75ed

Fix quick-build, use asserts() in place of ABORT() -------------------- ChangeLog entries follow: -------------------- ChangeLog addition: 2010-02-20 Ben Wing <ben@xemacs.org> * configure.ac (XE_COMPLEX_ARG): Correct doc of --quick-build: It also doesn't check for Lisp shadows. src/ChangeLog addition: 2010-02-20 Ben Wing <ben@xemacs.org> * EmacsFrame.c: * EmacsFrame.c (EmacsFrameRecomputeCellSize): * alloca.c (i00afunc): * buffer.c: * buffer.c (MARKED_SLOT): * buffer.c (complex_vars_of_buffer): * cm.c: * cm.c (cmcheckmagic): * console.c: * console.c (MARKED_SLOT): * device-x.c: * device-x.c (x_get_visual_depth): * emacs.c (sort_args): * eval.c (throw_or_bomb_out): * event-stream.c: * event-stream.c (Fadd_timeout): * event-stream.c (Fadd_async_timeout): * event-stream.c (Frecent_keys): * events.c: * events.c (Fdeallocate_event): * events.c (event_pixel_translation): * extents.c: * extents.c (process_extents_for_insertion_mapper): * fns.c (Fbase64_encode_region): * fns.c (Fbase64_encode_string): * fns.c (Fbase64_decode_region): * fns.c (Fbase64_decode_string): * font-lock.c: * font-lock.c (find_context): * frame-x.c: * frame-x.c (x_wm_mark_shell_size_user_specified): * frame-x.c (x_wm_mark_shell_position_user_specified): * frame-x.c (x_wm_set_shell_iconic_p): * frame-x.c (x_wm_set_cell_size): * frame-x.c (x_wm_set_variable_size): * frame-x.c (x_wm_store_class_hints): * frame-x.c (x_wm_maybe_store_wm_command): * frame-x.c (x_initialize_frame_size): * frame.c (delete_frame_internal): * frame.c (change_frame_size_1): * free-hook.c (check_free): * free-hook.c (note_block_input): * free-hook.c (log_gcpro): * gccache-gtk.c (gc_cache_lookup): * gccache-x.c: * gccache-x.c (gc_cache_lookup): * glyphs-gtk.c: * glyphs-gtk.c (init_image_instance_from_gdk_pixmap): * glyphs-x.c: * glyphs-x.c (extract_xpm_color_names): * insdel.c: * insdel.c (move_gap): * keymap.c: * keymap.c (keymap_lookup_directly): * keymap.c (keymap_delete_inverse_internal): * keymap.c (accessible_keymaps_mapper_1): * keymap.c (where_is_recursive_mapper): * lisp.h: * lstream.c (make_lisp_buffer_stream_1): * macros.c: * macros.c (pop_kbd_macro_event): * mc-alloc.c (remove_page_from_used_list): * menubar-x.c: * menubar-x.c (set_frame_menubar): * ralloc.c: * ralloc.c (obtain): * ralloc.c (relinquish): * ralloc.c (relocate_blocs): * ralloc.c (resize_bloc): * ralloc.c (r_alloc_free): * ralloc.c (r_re_alloc): * ralloc.c (r_alloc_thaw): * ralloc.c (init_ralloc): * ralloc.c (Free_Addr_Block): * scrollbar-x.c: * scrollbar-x.c (x_update_scrollbar_instance_status): * sunplay.c (init_device): * unexnt.c: * unexnt.c (read_in_bss): * unexnt.c (map_in_heap): * window.c: * window.c (real_window): * window.c (window_display_lines): * window.c (window_display_buffer): * window.c (set_window_display_buffer): * window.c (unshow_buffer): * window.c (Fget_lru_window): if (...) ABORT(); ---> assert(); More specifically: if (x == y) ABORT (); --> assert (x != y); if (x != y) ABORT (); --> assert (x == y); if (x > y) ABORT (); --> assert (x <= y); etc. if (!x) ABORT (); --> assert (x); if (x) ABORT (); --> assert (!x); DeMorgan's Law's applied and manually simplified: if (x && !y) ABORT (); --> assert (!x || y); if (!x || y >= z) ABORT (); --> assert (x && y < z); Checked to make sure that assert() of an expression with side effects ensures that the side effects get executed even when asserts are disabled, and add a comment about this being a requirement of any "disabled assert" expression. * depend: * make-src-depend: * make-src-depend (PrintDeps): Fix broken code in make-src-depend so it does what it was always supposed to do, which was separate out config.h and lisp.h and all the files they include into separate variables in the depend part of Makefile so that quick-build can turn off the lisp.h/config.h/text.h/etc. dependencies of the source files, to speed up recompilation.
author Ben Wing <ben@xemacs.org>
date Sat, 20 Feb 2010 05:05:54 -0600
parents 1e7cc382eb16
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_ */