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