File: range-tables.texi

package info (click to toggle)
xemacs20 20.4-13
  • links: PTS
  • area: main
  • in suites: slink
  • size: 67,324 kB
  • ctags: 57,643
  • sloc: lisp: 586,197; ansic: 184,662; sh: 4,296; asm: 3,179; makefile: 2,021; perl: 1,059; csh: 96; sed: 22
file content (72 lines) | stat: -rw-r--r-- 2,071 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
@c -*-texinfo-*-
@c This is part of the XEmacs Lisp Reference Manual.
@c Copyright (C) 1996 Ben Wing.
@c See the file lispref.texi for copying conditions.
@setfilename ../../info/range-tables.info
@node Range Tables, Databases, Hash Tables, top
@chapter Range Tables
@cindex Range Tables

A range table is a table that efficiently associated values with
ranges of integers.

Note that range tables have a read syntax, like this:

@example
#s(range-table data ((-3 2) foo (5 20) bar))
@end example

This maps integers in the range (-3, 2) to @code{foo} and integers
in the range (5, 20) to @code{bar}.

@defun range-table-p object
Return non-@code{nil} if @var{object} is a range table.
@end defun

@menu
* Introduction to Range Tables:: Range tables efficiently map ranges of
                                 integers to values.
* Working With Range Tables::    Range table functions.
@end menu

@node Introduction to Range Tables
@section Introduction to Range Tables

@defun make-range-table
Make a new, empty range table.
@end defun

@defun copy-range-table old-table
Make a new range table which contains the same values for the same
ranges as the given table.  The values will not themselves be copied.
@end defun

@node Working With Range Tables
@section Working With Range Tables

@defun get-range-table pos table &optional default
This function finds value for position @var{pos} in @var{table}.  If
there is no corresponding value, return @var{default} (defaults to
@code{nil}).
@end defun

@defun put-range-table start end val table
This function sets the value for range (@var{start}, @var{end}) to be
@var{val} in @var{table}.
@end defun

@defun remove-range-table start end table
This function removes the value for range (@var{start}, @var{end}) in
@var{table}.
@end defun

@defun clear-range-table table
This function flushes @var{table}.
@end defun

@defun map-range-table function table
This function maps @var{function} over entries in @var{table}, calling
it with three args, the beginning and end of the range and the
corresponding value.
@end defun