annotate man/lispref/range-tables.texi @ 2420:ad56e5a6d09f

[xemacs-hg @ 2004-12-06 03:46:06 by ben] (none) README.packages: Document use of --package-prefix. Fix error in specifying standard package location. make-docfile.c: Use QXE_PATH_MAX. info.el: Correct doc string giving example package path. menubar-items.el: Move Prefix Rectangle command up one level. xemacs/packages.texi: Add long form of Lisp Reference Manual to links. Add links pointing to Lisp Reference Manual for more detailed package discussion. lispref/range-tables.texi: Document range-table changes. internals/internals.texi: Update history section. elhash.c, elhash.h, profile.c: Create inchash_eq() to allow direct incrementing of hash-table entry. Use in profile.c to try to reduce profiling overhead. Increase initial size of profile hash tables to reduce profiling overhead. buffer.c, device-msw.c, dialog-msw.c, dired-msw.c, editfns.c, event-msw.c, events.c, glyphs-msw.c, keymap.c, objects-msw.c, process-nt.c, syswindows.h, text.c, text.h, unexnt.c: Rename xetcs* -> qxetcs* for consistency with qxestr*. Rename ei*_c(_*) -> ei*_ascii(_*) since they work with ASCII-only strings not "C strings", whatever those are. This is the last place where "c" was incorrectly being used for "ascii". dialog-msw.c, dumper.c, event-msw.c, fileio.c, glyphs-gtk.c, glyphs-x.c, nt.c, process-nt.c, realpath.c, sysdep.c, sysfile.h, unexcw.c, unexnext.c, unexnt.c: Try to avoid differences in systems that do or do not include final null byte in PATH_MAX. Create PATH_MAX_INTERNAL and PATH_MAX_EXTERNAL and use them everywhere. Rewrite code in dumper.c to avoid use of PATH_MAX. When necessary in nt.c, use _MAX_PATH instead of MAX_PATH to be consistent with other places. text.c: Code to short-circuit when binary or Unicode was not working due to EOL wrapping. Fix this code to work when either no EOL autodetection or no CR's or LF's in the text. lisp.h, rangetab.c, rangetab.h, regex.c, search.c: Implement different types of ranges (open/closed start and end). Change default to be start-closed, end-open.
author ben
date Mon, 06 Dec 2004 03:46:07 +0000
parents 576fb035e263
children ab71ad6ff3dd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1 @c -*-texinfo-*-
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2 @c This is part of the XEmacs Lisp Reference Manual.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3 @c Copyright (C) 1996 Ben Wing.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4 @c See the file lispref.texi for copying conditions.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5 @setfilename ../../info/range-tables.info
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6 @node Range Tables, Databases, Hash Tables, top
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7 @chapter Range Tables
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8 @cindex Range Tables
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10 A range table is a table that efficiently associated values with
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11 ranges of integers.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13 Note that range tables have a read syntax, like this:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15 @example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16 #s(range-table data ((-3 2) foo (5 20) bar))
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17 @end example
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19 This maps integers in the range (-3, 2) to @code{foo} and integers
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20 in the range (5, 20) to @code{bar}.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22 @defun range-table-p object
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23 Return non-@code{nil} if @var{object} is a range table.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24 @end defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26 @menu
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27 * Introduction to Range Tables:: Range tables efficiently map ranges of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28 integers to values.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29 * Working With Range Tables:: Range table functions.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
30 @end menu
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
31
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32 @node Introduction to Range Tables
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33 @section Introduction to Range Tables
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
35 @defun make-range-table
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36 Make a new, empty range table.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
37 @end defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
39 @defun copy-range-table range-table
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
40 This function returns a new range table which contains the same values
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
41 for the same ranges as @var{range-table}. The values will not
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
42 themselves be copied.
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43 @end defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45 @node Working With Range Tables
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46 @section Working With Range Tables
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
48 @defun get-range-table pos range-table &optional default
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
49 This function finds value for position @var{pos} in @var{range-table}.
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
50 If there is no corresponding value, return @var{default} (defaults to
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51 @code{nil}).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52 @end defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
54 @defun put-range-table start end value range-table
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55 This function sets the value for range (@var{start}, @var{end}) to be
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
56 @var{value} in @var{range-table}.
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
57 @end defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
58
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
59 @defun remove-range-table start end range-table
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60 This function removes the value for range (@var{start}, @var{end}) in
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
61 @var{range-table}.
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
62 @end defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
63
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
64 @defun clear-range-table range-table
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
65 This function flushes @var{range-table}.
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66 @end defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
68 @defun map-range-table function range-table
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
69 This function maps @var{function} over entries in @var{range-table},
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 0
diff changeset
70 calling it with three args, the beginning and end of the range and the
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
71 corresponding value.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
72 @end defun
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73