annotate nt/paths.h @ 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 4be1180a9e89
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
100
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
1 /* Hey Emacs, this is -*- C -*- code! */
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
2
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
3 /* Synched up with: Not synched with FSF. */
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
4
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
5 /* Think twice before editing this file. Generated automatically by configure.
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
6
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
7 The file startup.el guesses at reasonable values for load-path, exec-path,
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
8 and lock-directory. This means that if you move emacs and its associated
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
9 sub-tree to a different place in the filesystem, or to a different machine,
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
10 you won't have to do anything for it to work.
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
11
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
12 If you define the paths in this file then they will take precedence over
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
13 any value generated by the heuristic in startup.el. The hardcoded paths
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
14 will be checked to see if they are valid, in which case they will be used.
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
15 Otherwise the editor will attempt to make its normal guess.
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
16
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
17 See the NEWS file for a description of the heuristic used to locate the lisp
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
18 and exec directories at startup time. If you are looking at this file
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
19 because you are having trouble, then you would be much better off arranging
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
20 for those heuristics to succeed than defining the paths in this file.
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
21
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
22 ** Let me say that again. If you're editing this file, you're making
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
23 ** a mistake. Re-read the section on installation in ../etc/NEWS.
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
24
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
25 If it defines anything, this file should define some subset of the following:
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
26
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
27 PATH_PREFIX The default value of `prefix-directory'. This is the
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
28 default root for everything.
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
29
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
30 PATH_LOADSEARCH The default value of `load-path'.
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
31
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
32 PATH_EXEC The default value of `exec-directory' and `exec-path'.
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
33 (exec-path also contains the value of whatever is in
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
34 the PATH environment variable.)
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
35
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
36 PATH_DATA The default value of `data-directory'. This
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
37 is where architecture-independent files are
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
38 searched for.
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
39
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
40 PATH_LOCK The name of the directory that contains lock files
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
41 with which we record what files are being modified in
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
42 Emacs. This directory should be writable by everyone.
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
43 If this is specified, the string must end with a slash!
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
44
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
45 PATH_SUPERLOCK The name of the file !!!SuperLock!!! in the lock
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
46 directory. You probably should let this default...
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
47
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
48 PATH_INFO The default value of `Info-directory-list'.
4be1180a9e89 Import from CVS: tag r20-1b2
cvs
parents:
diff changeset
49 This is where info files are searched for. */