OSDN Git Service

Please enter the commit message for your changes. Lines starting
[eos/hostdependX86LINUX64.git] / util / X86LINUX64 / man / mann / lset.n
1 '\"
2 '\" Copyright (c) 2001 by Kevin B. Kenny <kennykb@acm.org>.  All rights reserved.
3 '\"
4 '\" See the file "license.terms" for information on usage and redistribution
5 '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
6 '\" 
7 .TH lset n 8.4 Tcl "Tcl Built-In Commands"
8 .\" The -*- nroff -*- definitions below are for supplemental macros used
9 .\" in Tcl/Tk manual entries.
10 .\"
11 .\" .AP type name in/out ?indent?
12 .\"     Start paragraph describing an argument to a library procedure.
13 .\"     type is type of argument (int, etc.), in/out is either "in", "out",
14 .\"     or "in/out" to describe whether procedure reads or modifies arg,
15 .\"     and indent is equivalent to second arg of .IP (shouldn't ever be
16 .\"     needed;  use .AS below instead)
17 .\"
18 .\" .AS ?type? ?name?
19 .\"     Give maximum sizes of arguments for setting tab stops.  Type and
20 .\"     name are examples of largest possible arguments that will be passed
21 .\"     to .AP later.  If args are omitted, default tab stops are used.
22 .\"
23 .\" .BS
24 .\"     Start box enclosure.  From here until next .BE, everything will be
25 .\"     enclosed in one large box.
26 .\"
27 .\" .BE
28 .\"     End of box enclosure.
29 .\"
30 .\" .CS
31 .\"     Begin code excerpt.
32 .\"
33 .\" .CE
34 .\"     End code excerpt.
35 .\"
36 .\" .VS ?version? ?br?
37 .\"     Begin vertical sidebar, for use in marking newly-changed parts
38 .\"     of man pages.  The first argument is ignored and used for recording
39 .\"     the version when the .VS was added, so that the sidebars can be
40 .\"     found and removed when they reach a certain age.  If another argument
41 .\"     is present, then a line break is forced before starting the sidebar.
42 .\"
43 .\" .VE
44 .\"     End of vertical sidebar.
45 .\"
46 .\" .DS
47 .\"     Begin an indented unfilled display.
48 .\"
49 .\" .DE
50 .\"     End of indented unfilled display.
51 .\"
52 .\" .SO ?manpage?
53 .\"     Start of list of standard options for a Tk widget. The manpage
54 .\"     argument defines where to look up the standard options; if
55 .\"     omitted, defaults to "options". The options follow on successive
56 .\"     lines, in three columns separated by tabs.
57 .\"
58 .\" .SE
59 .\"     End of list of standard options for a Tk widget.
60 .\"
61 .\" .OP cmdName dbName dbClass
62 .\"     Start of description of a specific option.  cmdName gives the
63 .\"     option's name as specified in the class command, dbName gives
64 .\"     the option's name in the option database, and dbClass gives
65 .\"     the option's class in the option database.
66 .\"
67 .\" .UL arg1 arg2
68 .\"     Print arg1 underlined, then print arg2 normally.
69 .\"
70 .\" .QW arg1 ?arg2?
71 .\"     Print arg1 in quotes, then arg2 normally (for trailing punctuation).
72 .\"
73 .\" .PQ arg1 ?arg2?
74 .\"     Print an open parenthesis, arg1 in quotes, then arg2 normally
75 .\"     (for trailing punctuation) and then a closing parenthesis.
76 .\"
77 .\"     # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
78 .if t .wh -1.3i ^B
79 .nr ^l \n(.l
80 .ad b
81 .\"     # Start an argument description
82 .de AP
83 .ie !"\\$4"" .TP \\$4
84 .el \{\
85 .   ie !"\\$2"" .TP \\n()Cu
86 .   el          .TP 15
87 .\}
88 .ta \\n()Au \\n()Bu
89 .ie !"\\$3"" \{\
90 \&\\$1 \\fI\\$2\\fP (\\$3)
91 .\".b
92 .\}
93 .el \{\
94 .br
95 .ie !"\\$2"" \{\
96 \&\\$1  \\fI\\$2\\fP
97 .\}
98 .el \{\
99 \&\\fI\\$1\\fP
100 .\}
101 .\}
102 ..
103 .\"     # define tabbing values for .AP
104 .de AS
105 .nr )A 10n
106 .if !"\\$1"" .nr )A \\w'\\$1'u+3n
107 .nr )B \\n()Au+15n
108 .\"
109 .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
110 .nr )C \\n()Bu+\\w'(in/out)'u+2n
111 ..
112 .AS Tcl_Interp Tcl_CreateInterp in/out
113 .\"     # BS - start boxed text
114 .\"     # ^y = starting y location
115 .\"     # ^b = 1
116 .de BS
117 .br
118 .mk ^y
119 .nr ^b 1u
120 .if n .nf
121 .if n .ti 0
122 .if n \l'\\n(.lu\(ul'
123 .if n .fi
124 ..
125 .\"     # BE - end boxed text (draw box now)
126 .de BE
127 .nf
128 .ti 0
129 .mk ^t
130 .ie n \l'\\n(^lu\(ul'
131 .el \{\
132 .\"     Draw four-sided box normally, but don't draw top of
133 .\"     box if the box started on an earlier page.
134 .ie !\\n(^b-1 \{\
135 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
136 .\}
137 .el \}\
138 \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
139 .\}
140 .\}
141 .fi
142 .br
143 .nr ^b 0
144 ..
145 .\"     # VS - start vertical sidebar
146 .\"     # ^Y = starting y location
147 .\"     # ^v = 1 (for troff;  for nroff this doesn't matter)
148 .de VS
149 .if !"\\$2"" .br
150 .mk ^Y
151 .ie n 'mc \s12\(br\s0
152 .el .nr ^v 1u
153 ..
154 .\"     # VE - end of vertical sidebar
155 .de VE
156 .ie n 'mc
157 .el \{\
158 .ev 2
159 .nf
160 .ti 0
161 .mk ^t
162 \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
163 .sp -1
164 .fi
165 .ev
166 .\}
167 .nr ^v 0
168 ..
169 .\"     # Special macro to handle page bottom:  finish off current
170 .\"     # box/sidebar if in box/sidebar mode, then invoked standard
171 .\"     # page bottom macro.
172 .de ^B
173 .ev 2
174 'ti 0
175 'nf
176 .mk ^t
177 .if \\n(^b \{\
178 .\"     Draw three-sided box if this is the box's first page,
179 .\"     draw two sides but no top otherwise.
180 .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
181 .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
182 .\}
183 .if \\n(^v \{\
184 .nr ^x \\n(^tu+1v-\\n(^Yu
185 \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
186 .\}
187 .bp
188 'fi
189 .ev
190 .if \\n(^b \{\
191 .mk ^y
192 .nr ^b 2
193 .\}
194 .if \\n(^v \{\
195 .mk ^Y
196 .\}
197 ..
198 .\"     # DS - begin display
199 .de DS
200 .RS
201 .nf
202 .sp
203 ..
204 .\"     # DE - end display
205 .de DE
206 .fi
207 .RE
208 .sp
209 ..
210 .\"     # SO - start of list of standard options
211 .de SO
212 'ie '\\$1'' .ds So \\fBoptions\\fR
213 'el .ds So \\fB\\$1\\fR
214 .SH "STANDARD OPTIONS"
215 .LP
216 .nf
217 .ta 5.5c 11c
218 .ft B
219 ..
220 .\"     # SE - end of list of standard options
221 .de SE
222 .fi
223 .ft R
224 .LP
225 See the \\*(So manual entry for details on the standard options.
226 ..
227 .\"     # OP - start of full description for a single option
228 .de OP
229 .LP
230 .nf
231 .ta 4c
232 Command-Line Name:      \\fB\\$1\\fR
233 Database Name:  \\fB\\$2\\fR
234 Database Class: \\fB\\$3\\fR
235 .fi
236 .IP
237 ..
238 .\"     # CS - begin code excerpt
239 .de CS
240 .RS
241 .nf
242 .ta .25i .5i .75i 1i
243 ..
244 .\"     # CE - end code excerpt
245 .de CE
246 .fi
247 .RE
248 ..
249 .\"     # UL - underline word
250 .de UL
251 \\$1\l'|0\(ul'\\$2
252 ..
253 .\"     # QW - apply quotation marks to word
254 .de QW
255 .ie '\\*(lq'"' ``\\$1''\\$2
256 .\"" fix emacs highlighting
257 .el \\*(lq\\$1\\*(rq\\$2
258 ..
259 .\"     # PQ - apply parens and quotation marks to word
260 .de PQ
261 .ie '\\*(lq'"' (``\\$1''\\$2)\\$3
262 .\"" fix emacs highlighting
263 .el (\\*(lq\\$1\\*(rq\\$2)\\$3
264 ..
265 .\"     # QR - quoted range
266 .de QR
267 .ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3
268 .\"" fix emacs highlighting
269 .el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3
270 ..
271 .\"     # MT - "empty" string
272 .de MT
273 .QW ""
274 ..
275 .BS
276 '\" Note:  do not modify the .SH NAME line immediately below!
277 .SH NAME
278 lset \- Change an element in a list
279 .SH SYNOPSIS
280 \fBlset \fIvarName ?index ...? newValue\fR
281 .BE
282 .SH DESCRIPTION
283 .PP
284 The \fBlset\fR command accepts a parameter, \fIvarName\fR, which
285 it interprets as the name of a variable containing a Tcl list. 
286 It also accepts zero or more \fIindices\fR into
287 the list.  The indices may be presented either consecutively on the
288 command line, or grouped in a
289 Tcl list and presented as a single argument.
290 Finally, it accepts a new value for an element of \fIvarName\fR.
291 .PP
292 If no indices are presented, the command takes the form:
293 .PP
294 .CS
295 \fBlset\fR varName newValue
296 .CE
297 .PP
298 or
299 .PP
300 .CS
301 \fBlset\fR varName {} newValue
302 .CE
303 .PP
304 In this case, \fInewValue\fR replaces the old value of the variable
305 \fIvarName\fR.
306 .PP
307 When presented with a single index, the \fBlset\fR command
308 treats the content of the \fIvarName\fR variable as a Tcl list.
309 It addresses the \fIindex\fR'th element in it 
310 (0 refers to the first element of the list).
311 When interpreting the list, \fBlset\fR observes the same rules
312 concerning braces and quotes and backslashes as the Tcl command
313 interpreter; however, variable
314 substitution and command substitution do not occur.
315 The command constructs a new list in which the designated element is
316 replaced with \fInewValue\fR.  This new list is stored in the
317 variable \fIvarName\fR, and is also the return value from the \fBlset\fR
318 command.
319 .PP
320 If \fIindex\fR is negative or greater than the number
321 of elements in \fI$varName\fR, then an error occurs.
322 .PP
323 If \fIindex\fR is equal to the number of elements in \fI$varName\fR,
324 then the given element is appended to the list.
325 .PP
326 The interpretation of each simple \fIindex\fR value is the same as
327 for the command \fBstring index\fR, supporting simple index
328 arithmetic and indices relative to the end of the list.
329 .PP
330 If additional \fIindex\fR arguments are supplied, then each argument is
331 used in turn to address an element within a sublist designated
332 by the previous indexing operation,
333 allowing the script to alter elements in sublists (or append elements
334 to sublists).  The command,
335 .PP
336 .CS
337 \fBlset\fR a 1 2 newValue
338 .CE
339 .PP
340 or
341 .PP
342 .CS
343 \fBlset\fR a {1 2} newValue
344 .CE
345 .PP
346 replaces element 2 of sublist 1 with \fInewValue\fR.
347 .PP
348 The integer appearing in each \fIindex\fR argument must be greater
349 than or equal to zero.  The integer appearing in each \fIindex\fR
350 argument must be less than or equal to the length of the corresponding
351 list.  In other words, the \fBlset\fR command can change the size
352 of a list only by appending an element (setting the one after the current
353 end).  If an index is outside the permitted range, an error is reported.
354 .SH EXAMPLES
355 .PP
356 In each of these examples, the initial value of \fIx\fR is:
357 .PP
358 .CS
359 set x [list [list a b c] [list d e f] [list g h i]]
360       \fI\(-> {a b c} {d e f} {g h i}\fR
361 .CE
362 .PP
363 The indicated return value also becomes the new value of \fIx\fR
364 (except in the last case, which is an error which leaves the value of
365 \fIx\fR unchanged.)
366 .PP
367 .CS
368 \fBlset\fR x {j k l}
369       \fI\(-> j k l\fR
370 \fBlset\fR x {} {j k l}
371       \fI\(-> j k l\fR
372 \fBlset\fR x 0 j
373       \fI\(-> j {d e f} {g h i}\fR
374 \fBlset\fR x 2 j
375       \fI\(-> {a b c} {d e f} j\fR
376 \fBlset\fR x end j
377       \fI\(-> {a b c} {d e f} j\fR
378 \fBlset\fR x end-1 j
379       \fI\(-> {a b c} j {g h i}\fR
380 \fBlset\fR x 2 1 j
381       \fI\(-> {a b c} {d e f} {g j i}\fR
382 \fBlset\fR x {2 1} j
383       \fI\(-> {a b c} {d e f} {g j i}\fR
384 \fBlset\fR x {2 3} j
385       \fI\(-> list index out of range\fR
386 .CE
387 .PP
388 In the following examples, the initial value of \fIx\fR is:
389 .PP
390 .CS
391 set x [list [list [list a b] [list c d]] \e
392             [list [list e f] [list g h]]]
393       \fI\(-> {{a b} {c d}} {{e f} {g h}}\fR
394 .CE
395 .PP
396 The indicated return value also becomes the new value of \fIx\fR.
397 .PP
398 .CS
399 \fBlset\fR x 1 1 0 j
400       \fI\(-> {{a b} {c d}} {{e f} {j h}}\fR
401 \fBlset\fR x {1 1 0} j
402       \fI\(-> {{a b} {c d}} {{e f} {j h}}\fR
403 .CE
404 .SH "SEE ALSO"
405 list(n), lappend(n), lindex(n), linsert(n), llength(n), lsearch(n), 
406 lsort(n), lrange(n), lreplace(n),
407 string(n)
408 .SH KEYWORDS
409 element, index, list, replace, set
410 '\"Local Variables:
411 '\"mode: nroff
412 '\"End: