Mercurial > hg > xemacs-beta
annotate lisp/mule/mule-composite-stub.el @ 4967:0d4c9d0f6a8d
rewrite dynarr code
-------------------- ChangeLog entries follow: --------------------
src/ChangeLog addition:
2010-02-03 Ben Wing <ben@xemacs.org>
* device-x.c (x_get_resource_prefix):
* device-x.c (Fx_get_resource):
* device-x.c (Fx_get_resource_prefix):
* device-x.c (Fx_put_resource):
* dialog-msw.c:
* dialog-msw.c (handle_question_dialog_box):
* dired-msw.c (mswindows_sort_files):
* dired-msw.c (mswindows_get_files):
* extents.c (extent_fragment_sort_by_priority):
* extents.c (Fset_extent_parent):
* file-coding.c (coding_reader):
* file-coding.c (coding_writer):
* file-coding.c (gzip_convert):
* frame.c (generate_title_string):
* gutter.c (calculate_gutter_size_from_display_lines):
* indent.c (vmotion_1):
* lread.c (read_bit_vector):
* mule-coding.c (iso2022_decode):
* rangetab.c:
* rangetab.c (Fcopy_range_table):
* rangetab.c (Fget_range_table):
* rangetab.c (unified_range_table_copy_data):
* redisplay-msw.c (mswindows_output_string):
* redisplay-output.c (output_display_line):
* redisplay-output.c (redisplay_move_cursor):
* redisplay-output.c (redisplay_clear_bottom_of_window):
* redisplay-tty.c (tty_output_ichar_dynarr):
* redisplay-tty.c (set_foreground_to):
* redisplay-tty.c (set_background_to):
* redisplay-xlike-inc.c (XLIKE_output_string):
* redisplay.c (redisplay_window_text_width_string):
* redisplay.c (redisplay_text_width_string):
* redisplay.c (create_text_block):
* redisplay.c (SET_CURRENT_MODE_CHARS_PIXSIZE):
* redisplay.c (generate_fstring_runes):
* redisplay.c (regenerate_modeline):
* redisplay.c (ensure_modeline_generated):
* redisplay.c (real_current_modeline_height):
* redisplay.c (create_string_text_block):
* redisplay.c (regenerate_window):
* redisplay.c (REGEN_INC_FIND_START_END):
* redisplay.c (point_visible):
* redisplay.c (redisplay_window):
* redisplay.c (mark_glyph_block_dynarr):
* redisplay.c (line_start_cache_start):
* redisplay.c (start_with_line_at_pixpos):
* redisplay.c (update_line_start_cache):
* redisplay.c (glyph_to_pixel_translation):
* redisplay.c (pixel_to_glyph_translation):
* sysdep.c (qxe_readdir):
* text.c (dfc_convert_to_external_format):
* text.c (dfc_convert_to_internal_format):
* toolbar-common.c (common_output_toolbar_button):
* window.c (window_modeline_height):
* window.c (Fwindow_last_line_visible_height):
* window.c (window_displayed_height):
* window.c (window_scroll):
* window.c (get_current_pixel_pos):
Use Dynarr_begin() in place of Dynarr_atp (foo, 0).
* dynarr.c (Dynarr_realloc):
* dynarr.c (Dynarr_lisp_realloc):
* dynarr.c (Dynarr_resize):
* dynarr.c (Dynarr_insert_many):
* dynarr.c (Dynarr_delete_many):
* dynarr.c (Dynarr_memory_usage):
* dynarr.c (stack_like_malloc):
* dynarr.c (stack_like_free):
* lisp.h:
* lisp.h (DECLARE_DYNARR_LISP_IMP):
* lisp.h (XD_DYNARR_DESC):
* lisp.h (Dynarr_pop):
* gutter.c (output_gutter):
* redisplay-output.c (sync_rune_structs):
* redisplay-output.c (redisplay_output_window):
Redo the dynarr code, add greater checks.
Rename the `len', `largest' and `max' members to `len_',
`largest_' and `max_' to try and catch existing places that might
directly modify these values. Make new accessors Dynarr_largest()
and Dynarr_max() and make them and existing Dynarr_length() be
non-lvalues by adding '+ 0' to them; fix a couple of places in the
redisplay code that tried to modify the length directly by setting
Dynarr_length(). Use the accessors whenever possible even in the
dynarr code itself. The accessors also verify that 0 <= len <=
largest <= max. Rename settor function Dynarr_set_size() to
Dynarr_set_length() and use it more consistently; also create
lower-level Dynarr_set_length_1(). This latter function should be
the only function that directly modifies the `len_' member of a
Dynarr, and in the process makes sure that the `largest' value is
kept correct.
Consistently use ERROR_CHECK_STRUCTURES instead of
ERROR_CHECK_TYPES for error-checking code. Reintroduce the
temporarily disabled verification code on the positions of
Dynarr_at(), Dynarr_atp() and Dynarr_atp_past_end().
Also create Dynarr_resize_if() in place of a repeated
code fragment. Clean up all the functions that modify Dynarrs to
use the new macros and functions and verify the correctness of the
Dynarr both before and after the change.
Note that there are two kinds of verification -- one for accessing
and one for modifying. The difference is that the modify
verification additionally checks to make sure that the Dynarr
isn't locked. (This is used in redisplay to check for problems
with reentrancy.)
* lrecord.h: Move XD_DYNARR_DESC to lisp.h, grouping with the dynarr code.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Wed, 03 Feb 2010 20:51:18 -0600 |
parents | 2923009caf47 |
children | 308d34e9f07d |
rev | line source |
---|---|
778 | 1 ;;; mule-composite-stub.el --- Stubs of composition support -*- coding: iso-2022-7bit; -*- |
2 | |
3 ;; Copyright (C) 2002 Ben Wing. | |
4 | |
5 ;; Keywords: multibyte character, composition | |
6 | |
7 ;; This file is part of XEmacs. | |
8 | |
9 ;; XEmacs is free software; you can redistribute it and/or modify it | |
10 ;; under the terms of the GNU General Public License as published by | |
11 ;; the Free Software Foundation; either version 2, or (at your option) | |
12 ;; any later version. | |
13 | |
14 ;; XEmacs is distributed in the hope that it will be useful, but | |
15 ;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
17 ;; General Public License for more details. | |
18 | |
19 ;; You should have received a copy of the GNU General Public License | |
20 ;; along with XEmacs; see the file COPYING. If not, write to the Free | |
21 ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | |
22 ;; 02111-1307, USA. | |
23 | |
24 ;;; Synched up with: Emacs 21.1 (src/fontset.c, src/composite.c). | |
25 | |
26 ;;; Commentary: | |
27 | |
28 ;;; Code: | |
29 | |
30 (defvar use-default-ascent (make-char-table 'generic) | |
31 "UNIMPLEMENTED. | |
32 Char table of characters whose ascent values should be ignored. | |
33 If an entry for a character is non-nil, the ascent value of the glyph | |
34 is assumed to be what specified by _MULE_DEFAULT_ASCENT property of a font. | |
35 | |
36 This affects how a composite character which contains | |
37 such a character is displayed on screen.") | |
38 | |
39 (defvar ignore-relative-composition (make-char-table 'generic) | |
40 "UNIMPLEMENTED. | |
41 Char table of characters which is not composed relatively. | |
42 If an entry for a character is non-nil, a composition sequence | |
43 which contains that character is displayed so that | |
44 the glyph of that character is put without considering | |
45 an ascent and descent value of a previous character.") | |
46 | |
47 (defvar compose-chars-after-function 'compose-chars-after | |
48 "UNIMPLEMENTED. | |
49 Function to adjust composition of buffer text. | |
50 | |
51 The function is called with three arguments FROM, TO, and OBJECT. | |
52 FROM and TO specify the range of text of which composition should be | |
53 adjusted. OBJECT, if non-nil, is a string that contains the text. | |
54 | |
55 This function is called after a text with `composition' property is | |
56 inserted or deleted to keep `composition' property of buffer text | |
57 valid. | |
58 | |
59 The default value is the function `compose-chars-after'.") | |
60 | |
61 (defvar composition-function-table (make-char-table 'generic) | |
62 "UNIMPLEMENTED. | |
63 Char table of patterns and functions to make a composition. | |
64 | |
65 Each element is nil or an alist of PATTERNs vs FUNCs, where PATTERNs | |
66 are regular expressions and FUNCs are functions. FUNC is responsible | |
67 for composing text matching the corresponding PATTERN. FUNC is called | |
68 with three arguments FROM, TO, and PATTERN. See the function | |
69 `compose-chars-after' for more detail. | |
70 | |
71 This table is looked up by the first character of a composition when | |
72 the composition gets invalid after a change in a buffer.") | |
73 | |
74 (defun compose-region-internal (start end &optional components mod-func) | |
75 "UNIMPLEMENTED. | |
76 Internal use only. | |
77 | |
78 Compose text in the region between START and END. | |
79 Optional 3rd and 4th arguments are COMPONENTS and MODIFICATION-FUNC | |
80 for the composition. See `compose-region' for more detial." | |
81 nil) | |
82 | |
83 (defun compose-string-internal (string start end &optional components mod-func) | |
84 "UNIMPLEMENTED. | |
85 Internal use only. | |
86 | |
87 Compose text between indices START and END of STRING. | |
88 Optional 4th and 5th arguments are COMPONENTS and MODIFICATION-FUNC | |
89 for the composition. See `compose-string' for more detial." | |
90 nil) | |
91 | |
92 (defun find-composition-internal (pos limit string detail-p) | |
93 "UNIMPLEMENTED. | |
94 Internal use only. | |
95 | |
96 Return information about composition at or nearest to position POS. | |
97 See `find-composition' for more detail." | |
98 nil) |