1.fp 5 CW
2.de Af
3.ds ;G \\*(;G\\f\\$1\\$3\\f\\$2
4.if !\\$4 .Af \\$2 \\$1 "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
5..
6.de aF
7.ie \\$3 .ft \\$1
8.el \{\
9.ds ;G \&
10.nr ;G \\n(.f
11.Af "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
12\\*(;G
13.ft \\n(;G \}
14..
15.de L
16.aF 5 \\n(.f "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
17..
18.de LR
19.aF 5 1 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
20..
21.de RL
22.aF 1 5 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
23..
24.de EX		\" start example
25.ta 1i 2i 3i 4i 5i 6i
26.PP
27.RS 
28.PD 0
29.ft 5
30.nf
31..
32.de EE		\" end example
33.fi
34.ft
35.PD
36.RE
37.PP
38..
39.TH TAB 3
40.SH NAME
41tab \- simple table lookup routines
42.SH SYNOPSIS
43.L "#include <ast.h>"
44.sp
45.L "int tabindex(const void* tab, int size, const char* name);" 
46.L "void* tablook(const void* tab, int size, const char* name);" 
47.SH DESCRIPTION
48These routines do linear lookups in
49.I small
50tables (on the order of 32 elements).
51Each table element has a size of
52.L size
53bytes and the beginning of the element points to a name that is
54matched by the lookup routines.
55.PP
56.L tabindex
57returns the index of the table element in
58.L tab
59that matches
60.LR name .
61If there is no match then
62.L \-1
63is returned.
64.PP
65.L tablook
66returns a pointer to the table element in
67.L tab
68that matches
69.LR name .
70If there is no match then
71.L 0
72is returned.
73.SH "SEE ALSO"
74hash(3)
75