OSDN Git Service

Please enter the commit message for your changes. Lines starting
[eos/hostdependX86LINUX64.git] / util / X86LINUX64 / man / mann / array.n
1 '\"
2 '\" Copyright (c) 1993-1994 The Regents of the University of California.
3 '\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
4 '\"
5 '\" See the file "license.terms" for information on usage and redistribution
6 '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
7 '\" 
8 .TH array n 8.3 Tcl "Tcl Built-In Commands"
9 .\" The -*- nroff -*- definitions below are for supplemental macros used
10 .\" in Tcl/Tk manual entries.
11 .\"
12 .\" .AP type name in/out ?indent?
13 .\"     Start paragraph describing an argument to a library procedure.
14 .\"     type is type of argument (int, etc.), in/out is either "in", "out",
15 .\"     or "in/out" to describe whether procedure reads or modifies arg,
16 .\"     and indent is equivalent to second arg of .IP (shouldn't ever be
17 .\"     needed;  use .AS below instead)
18 .\"
19 .\" .AS ?type? ?name?
20 .\"     Give maximum sizes of arguments for setting tab stops.  Type and
21 .\"     name are examples of largest possible arguments that will be passed
22 .\"     to .AP later.  If args are omitted, default tab stops are used.
23 .\"
24 .\" .BS
25 .\"     Start box enclosure.  From here until next .BE, everything will be
26 .\"     enclosed in one large box.
27 .\"
28 .\" .BE
29 .\"     End of box enclosure.
30 .\"
31 .\" .CS
32 .\"     Begin code excerpt.
33 .\"
34 .\" .CE
35 .\"     End code excerpt.
36 .\"
37 .\" .VS ?version? ?br?
38 .\"     Begin vertical sidebar, for use in marking newly-changed parts
39 .\"     of man pages.  The first argument is ignored and used for recording
40 .\"     the version when the .VS was added, so that the sidebars can be
41 .\"     found and removed when they reach a certain age.  If another argument
42 .\"     is present, then a line break is forced before starting the sidebar.
43 .\"
44 .\" .VE
45 .\"     End of vertical sidebar.
46 .\"
47 .\" .DS
48 .\"     Begin an indented unfilled display.
49 .\"
50 .\" .DE
51 .\"     End of indented unfilled display.
52 .\"
53 .\" .SO ?manpage?
54 .\"     Start of list of standard options for a Tk widget. The manpage
55 .\"     argument defines where to look up the standard options; if
56 .\"     omitted, defaults to "options". The options follow on successive
57 .\"     lines, in three columns separated by tabs.
58 .\"
59 .\" .SE
60 .\"     End of list of standard options for a Tk widget.
61 .\"
62 .\" .OP cmdName dbName dbClass
63 .\"     Start of description of a specific option.  cmdName gives the
64 .\"     option's name as specified in the class command, dbName gives
65 .\"     the option's name in the option database, and dbClass gives
66 .\"     the option's class in the option database.
67 .\"
68 .\" .UL arg1 arg2
69 .\"     Print arg1 underlined, then print arg2 normally.
70 .\"
71 .\" .QW arg1 ?arg2?
72 .\"     Print arg1 in quotes, then arg2 normally (for trailing punctuation).
73 .\"
74 .\" .PQ arg1 ?arg2?
75 .\"     Print an open parenthesis, arg1 in quotes, then arg2 normally
76 .\"     (for trailing punctuation) and then a closing parenthesis.
77 .\"
78 .\"     # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
79 .if t .wh -1.3i ^B
80 .nr ^l \n(.l
81 .ad b
82 .\"     # Start an argument description
83 .de AP
84 .ie !"\\$4"" .TP \\$4
85 .el \{\
86 .   ie !"\\$2"" .TP \\n()Cu
87 .   el          .TP 15
88 .\}
89 .ta \\n()Au \\n()Bu
90 .ie !"\\$3"" \{\
91 \&\\$1 \\fI\\$2\\fP (\\$3)
92 .\".b
93 .\}
94 .el \{\
95 .br
96 .ie !"\\$2"" \{\
97 \&\\$1  \\fI\\$2\\fP
98 .\}
99 .el \{\
100 \&\\fI\\$1\\fP
101 .\}
102 .\}
103 ..
104 .\"     # define tabbing values for .AP
105 .de AS
106 .nr )A 10n
107 .if !"\\$1"" .nr )A \\w'\\$1'u+3n
108 .nr )B \\n()Au+15n
109 .\"
110 .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
111 .nr )C \\n()Bu+\\w'(in/out)'u+2n
112 ..
113 .AS Tcl_Interp Tcl_CreateInterp in/out
114 .\"     # BS - start boxed text
115 .\"     # ^y = starting y location
116 .\"     # ^b = 1
117 .de BS
118 .br
119 .mk ^y
120 .nr ^b 1u
121 .if n .nf
122 .if n .ti 0
123 .if n \l'\\n(.lu\(ul'
124 .if n .fi
125 ..
126 .\"     # BE - end boxed text (draw box now)
127 .de BE
128 .nf
129 .ti 0
130 .mk ^t
131 .ie n \l'\\n(^lu\(ul'
132 .el \{\
133 .\"     Draw four-sided box normally, but don't draw top of
134 .\"     box if the box started on an earlier page.
135 .ie !\\n(^b-1 \{\
136 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
137 .\}
138 .el \}\
139 \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
140 .\}
141 .\}
142 .fi
143 .br
144 .nr ^b 0
145 ..
146 .\"     # VS - start vertical sidebar
147 .\"     # ^Y = starting y location
148 .\"     # ^v = 1 (for troff;  for nroff this doesn't matter)
149 .de VS
150 .if !"\\$2"" .br
151 .mk ^Y
152 .ie n 'mc \s12\(br\s0
153 .el .nr ^v 1u
154 ..
155 .\"     # VE - end of vertical sidebar
156 .de VE
157 .ie n 'mc
158 .el \{\
159 .ev 2
160 .nf
161 .ti 0
162 .mk ^t
163 \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
164 .sp -1
165 .fi
166 .ev
167 .\}
168 .nr ^v 0
169 ..
170 .\"     # Special macro to handle page bottom:  finish off current
171 .\"     # box/sidebar if in box/sidebar mode, then invoked standard
172 .\"     # page bottom macro.
173 .de ^B
174 .ev 2
175 'ti 0
176 'nf
177 .mk ^t
178 .if \\n(^b \{\
179 .\"     Draw three-sided box if this is the box's first page,
180 .\"     draw two sides but no top otherwise.
181 .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
182 .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
183 .\}
184 .if \\n(^v \{\
185 .nr ^x \\n(^tu+1v-\\n(^Yu
186 \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
187 .\}
188 .bp
189 'fi
190 .ev
191 .if \\n(^b \{\
192 .mk ^y
193 .nr ^b 2
194 .\}
195 .if \\n(^v \{\
196 .mk ^Y
197 .\}
198 ..
199 .\"     # DS - begin display
200 .de DS
201 .RS
202 .nf
203 .sp
204 ..
205 .\"     # DE - end display
206 .de DE
207 .fi
208 .RE
209 .sp
210 ..
211 .\"     # SO - start of list of standard options
212 .de SO
213 'ie '\\$1'' .ds So \\fBoptions\\fR
214 'el .ds So \\fB\\$1\\fR
215 .SH "STANDARD OPTIONS"
216 .LP
217 .nf
218 .ta 5.5c 11c
219 .ft B
220 ..
221 .\"     # SE - end of list of standard options
222 .de SE
223 .fi
224 .ft R
225 .LP
226 See the \\*(So manual entry for details on the standard options.
227 ..
228 .\"     # OP - start of full description for a single option
229 .de OP
230 .LP
231 .nf
232 .ta 4c
233 Command-Line Name:      \\fB\\$1\\fR
234 Database Name:  \\fB\\$2\\fR
235 Database Class: \\fB\\$3\\fR
236 .fi
237 .IP
238 ..
239 .\"     # CS - begin code excerpt
240 .de CS
241 .RS
242 .nf
243 .ta .25i .5i .75i 1i
244 ..
245 .\"     # CE - end code excerpt
246 .de CE
247 .fi
248 .RE
249 ..
250 .\"     # UL - underline word
251 .de UL
252 \\$1\l'|0\(ul'\\$2
253 ..
254 .\"     # QW - apply quotation marks to word
255 .de QW
256 .ie '\\*(lq'"' ``\\$1''\\$2
257 .\"" fix emacs highlighting
258 .el \\*(lq\\$1\\*(rq\\$2
259 ..
260 .\"     # PQ - apply parens and quotation marks to word
261 .de PQ
262 .ie '\\*(lq'"' (``\\$1''\\$2)\\$3
263 .\"" fix emacs highlighting
264 .el (\\*(lq\\$1\\*(rq\\$2)\\$3
265 ..
266 .\"     # QR - quoted range
267 .de QR
268 .ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3
269 .\"" fix emacs highlighting
270 .el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3
271 ..
272 .\"     # MT - "empty" string
273 .de MT
274 .QW ""
275 ..
276 .BS
277 '\" Note:  do not modify the .SH NAME line immediately below!
278 .SH NAME
279 array \- Manipulate array variables
280 .SH SYNOPSIS
281 \fBarray \fIoption arrayName\fR ?\fIarg arg ...\fR?
282 .BE
283 .SH DESCRIPTION
284 .PP
285 This command performs one of several operations on the
286 variable given by \fIarrayName\fR.
287 Unless otherwise specified for individual commands below,
288 \fIarrayName\fR must be the name of an existing array variable.
289 The \fIoption\fR argument determines what action is carried
290 out by the command.
291 The legal \fIoptions\fR (which may be abbreviated) are:
292 .TP
293 \fBarray anymore \fIarrayName searchId\fR
294 Returns 1 if there are any more elements left to be processed
295 in an array search, 0 if all elements have already been
296 returned.
297 \fISearchId\fR indicates which search on \fIarrayName\fR to
298 check, and must have been the return value from a previous
299 invocation of \fBarray startsearch\fR.
300 This option is particularly useful if an array has an element
301 with an empty name, since the return value from
302 \fBarray nextelement\fR will not indicate whether the search
303 has been completed.
304 .TP
305 \fBarray donesearch \fIarrayName searchId\fR
306 This command terminates an array search and destroys all the
307 state associated with that search.  \fISearchId\fR indicates
308 which search on \fIarrayName\fR to destroy, and must have
309 been the return value from a previous invocation of
310 \fBarray startsearch\fR.  Returns an empty string.
311 .TP
312 \fBarray exists \fIarrayName\fR
313 Returns 1 if \fIarrayName\fR is an array variable, 0 if there
314 is no variable by that name or if it is a scalar variable.
315 .TP
316 \fBarray get \fIarrayName\fR ?\fIpattern\fR?
317 Returns a list containing pairs of elements.  The first
318 element in each pair is the name of an element in \fIarrayName\fR
319 and the second element of each pair is the value of the
320 array element.  The order of the pairs is undefined.
321 If \fIpattern\fR is not specified, then all of the elements of the
322 array are included in the result.
323 If \fIpattern\fR is specified, then only those elements whose names
324 match \fIpattern\fR (using the matching rules of
325 \fBstring match\fR) are included.
326 If \fIarrayName\fR is not the name of an array variable, or if
327 the array contains no elements, then an empty list is returned.
328 If traces on the array modify the list of elements, the elements
329 returned are those that exist both before and after the call to
330 \fBarray get\fR.
331 .TP
332 \fBarray names \fIarrayName\fR ?\fImode\fR? ?\fIpattern\fR?
333 Returns a list containing the names of all of the elements in
334 the array that match \fIpattern\fR.  \fIMode\fR may be one of
335 \fB\-exact\fR, \fB\-glob\fR, or \fB\-regexp\fR.  If specified, \fImode\fR
336 designates which matching rules to use to match \fIpattern\fR against
337 the names of the elements in the array.  If not specified, \fImode\fR
338 defaults to \fB\-glob\fR.  See the documentation for \fBstring match\fR
339 for information on glob style matching, and the documentation for
340 \fBregexp\fR for information on regexp matching.
341 If \fIpattern\fR is omitted then the command returns all of
342 the element names in the array.  If there are no (matching) elements
343 in the array, or if \fIarrayName\fR is not the name of an array
344 variable, then an empty string is returned.
345 .TP
346 \fBarray nextelement \fIarrayName searchId\fR
347 Returns the name of the next element in \fIarrayName\fR, or
348 an empty string if all elements of \fIarrayName\fR have
349 already been returned in this search.  The \fIsearchId\fR
350 argument identifies the search, and must have
351 been the return value of an \fBarray startsearch\fR command.
352 Warning:  if elements are added to or deleted from the array,
353 then all searches are automatically terminated just as if
354 \fBarray donesearch\fR had been invoked; this will cause
355 \fBarray nextelement\fR operations to fail for those searches.
356 .TP
357 \fBarray set \fIarrayName list\fR
358 Sets the values of one or more elements in \fIarrayName\fR.
359 \fIlist\fR must have a form like that returned by \fBarray get\fR,
360 consisting of an even number of elements.
361 Each odd-numbered element in \fIlist\fR is treated as an element
362 name within \fIarrayName\fR, and the following element in \fIlist\fR
363 is used as a new value for that array element.
364 If the variable \fIarrayName\fR does not already exist
365 and \fIlist\fR is empty,
366 \fIarrayName\fR is created with an empty array value.
367 .TP
368 \fBarray size \fIarrayName\fR
369 Returns a decimal string giving the number of elements in the
370 array.
371 If \fIarrayName\fR is not the name of an array then 0 is returned.
372 .TP
373 \fBarray startsearch \fIarrayName\fR
374 This command initializes an element-by-element search through the
375 array given by \fIarrayName\fR, such that invocations of the
376 \fBarray nextelement\fR command will return the names of the
377 individual elements in the array.
378 When the search has been completed, the \fBarray donesearch\fR
379 command should be invoked.
380 The return value is a
381 search identifier that must be used in \fBarray nextelement\fR
382 and \fBarray donesearch\fR commands; it allows multiple
383 searches to be underway simultaneously for the same array.
384 It is currently more efficient and easier to use either the \fBarray
385 get\fR or \fBarray names\fR, together with \fBforeach\fR, to iterate
386 over all but very large arrays.  See the examples below for how to do
387 this.
388 .TP
389 \fBarray statistics \fIarrayName\fR
390 Returns statistics about the distribution of data within the hashtable
391 that represents the array.  This information includes the number of
392 entries in the table, the number of buckets, and the utilization of
393 the buckets.
394 .TP
395 \fBarray unset \fIarrayName\fR ?\fIpattern\fR?
396 Unsets all of the elements in the array that match \fIpattern\fR (using the
397 matching rules of \fBstring match\fR).  If \fIarrayName\fR is not the name
398 of an array variable or there are no matching elements in the array, no
399 error will be raised.  If \fIpattern\fR is omitted and \fIarrayName\fR is
400 an array variable, then the command unsets the entire array.
401 The command always returns an empty string.
402 .SH EXAMPLES
403 .CS
404 \fBarray set\fR colorcount {
405     red   1
406     green 5
407     blue  4
408     white 9
409 }
410
411 foreach {color count} [\fBarray get\fR colorcount] {
412     puts "Color: $color Count: $count"
413 }
414   \fB\(->\fR Color: blue Count: 4
415     Color: white Count: 9
416     Color: green Count: 5
417     Color: red Count: 1
418
419 foreach color [\fBarray names\fR colorcount] {
420     puts "Color: $color Count: $colorcount($color)"
421 }
422   \fB\(->\fR Color: blue Count: 4
423     Color: white Count: 9
424     Color: green Count: 5
425     Color: red Count: 1
426
427 foreach color [lsort [\fBarray names\fR colorcount]] {
428     puts "Color: $color Count: $colorcount($color)"
429 }
430   \fB\(->\fR Color: blue Count: 4
431     Color: green Count: 5
432     Color: red Count: 1
433     Color: white Count: 9
434
435 \fBarray statistics\fR colorcount
436   \fB\(->\fR 4 entries in table, 4 buckets
437     number of buckets with 0 entries: 1
438     number of buckets with 1 entries: 2
439     number of buckets with 2 entries: 1
440     number of buckets with 3 entries: 0
441     number of buckets with 4 entries: 0
442     number of buckets with 5 entries: 0
443     number of buckets with 6 entries: 0
444     number of buckets with 7 entries: 0
445     number of buckets with 8 entries: 0
446     number of buckets with 9 entries: 0
447     number of buckets with 10 or more entries: 0
448     average search distance for entry: 1.2
449 .CE
450 .SH "SEE ALSO"
451 list(n), string(n), variable(n), trace(n), foreach(n)
452 .SH KEYWORDS
453 array, element names, search