OSDN Git Service

FIRST REPOSITORY
[eos/hostdependOTHERS.git] / CELLLINUX64 / util / CELLLINUX64 / man / man3 / Tcl_SetListObj.3
1 '\"
2 '\" Copyright (c) 1996-1997 Sun Microsystems, Inc.
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 '\" RCS: @(#) $Id: ListObj.3,v 1.4 2000/01/26 03:37:30 hobbs Exp $
8 '\" 
9 '\" The definitions below are for supplemental macros used in Tcl/Tk
10 '\" 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
54 '\"     Start of list of standard options for a Tk widget.  The
55 '\"     options follow on successive lines, in four columns separated
56 '\"     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 '\" RCS: @(#) $Id: man.macros,v 1.4 2000/08/25 06:18:32 ericm Exp $
71 '\"
72 '\"     # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
73 .if t .wh -1.3i ^B
74 .nr ^l \n(.l
75 .ad b
76 '\"     # Start an argument description
77 .de AP
78 .ie !"\\$4"" .TP \\$4
79 .el \{\
80 .   ie !"\\$2"" .TP \\n()Cu
81 .   el          .TP 15
82 .\}
83 .ta \\n()Au \\n()Bu
84 .ie !"\\$3"" \{\
85 \&\\$1  \\fI\\$2\\fP    (\\$3)
86 .\".b
87 .\}
88 .el \{\
89 .br
90 .ie !"\\$2"" \{\
91 \&\\$1  \\fI\\$2\\fP
92 .\}
93 .el \{\
94 \&\\fI\\$1\\fP
95 .\}
96 .\}
97 ..
98 '\"     # define tabbing values for .AP
99 .de AS
100 .nr )A 10n
101 .if !"\\$1"" .nr )A \\w'\\$1'u+3n
102 .nr )B \\n()Au+15n
103 .\"
104 .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
105 .nr )C \\n()Bu+\\w'(in/out)'u+2n
106 ..
107 .AS Tcl_Interp Tcl_CreateInterp in/out
108 '\"     # BS - start boxed text
109 '\"     # ^y = starting y location
110 '\"     # ^b = 1
111 .de BS
112 .br
113 .mk ^y
114 .nr ^b 1u
115 .if n .nf
116 .if n .ti 0
117 .if n \l'\\n(.lu\(ul'
118 .if n .fi
119 ..
120 '\"     # BE - end boxed text (draw box now)
121 .de BE
122 .nf
123 .ti 0
124 .mk ^t
125 .ie n \l'\\n(^lu\(ul'
126 .el \{\
127 .\"     Draw four-sided box normally, but don't draw top of
128 .\"     box if the box started on an earlier page.
129 .ie !\\n(^b-1 \{\
130 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
131 .\}
132 .el \}\
133 \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
134 .\}
135 .\}
136 .fi
137 .br
138 .nr ^b 0
139 ..
140 '\"     # VS - start vertical sidebar
141 '\"     # ^Y = starting y location
142 '\"     # ^v = 1 (for troff;  for nroff this doesn't matter)
143 .de VS
144 .if !"\\$2"" .br
145 .mk ^Y
146 .ie n 'mc \s12\(br\s0
147 .el .nr ^v 1u
148 ..
149 '\"     # VE - end of vertical sidebar
150 .de VE
151 .ie n 'mc
152 .el \{\
153 .ev 2
154 .nf
155 .ti 0
156 .mk ^t
157 \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
158 .sp -1
159 .fi
160 .ev
161 .\}
162 .nr ^v 0
163 ..
164 '\"     # Special macro to handle page bottom:  finish off current
165 '\"     # box/sidebar if in box/sidebar mode, then invoked standard
166 '\"     # page bottom macro.
167 .de ^B
168 .ev 2
169 'ti 0
170 'nf
171 .mk ^t
172 .if \\n(^b \{\
173 .\"     Draw three-sided box if this is the box's first page,
174 .\"     draw two sides but no top otherwise.
175 .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
176 .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
177 .\}
178 .if \\n(^v \{\
179 .nr ^x \\n(^tu+1v-\\n(^Yu
180 \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
181 .\}
182 .bp
183 'fi
184 .ev
185 .if \\n(^b \{\
186 .mk ^y
187 .nr ^b 2
188 .\}
189 .if \\n(^v \{\
190 .mk ^Y
191 .\}
192 ..
193 '\"     # DS - begin display
194 .de DS
195 .RS
196 .nf
197 .sp
198 ..
199 '\"     # DE - end display
200 .de DE
201 .fi
202 .RE
203 .sp
204 ..
205 '\"     # SO - start of list of standard options
206 .de SO
207 .SH "STANDARD OPTIONS"
208 .LP
209 .nf
210 .ta 5.5c 11c
211 .ft B
212 ..
213 '\"     # SE - end of list of standard options
214 .de SE
215 .fi
216 .ft R
217 .LP
218 See the \\fBoptions\\fR manual entry for details on the standard options.
219 ..
220 '\"     # OP - start of full description for a single option
221 .de OP
222 .LP
223 .nf
224 .ta 4c
225 Command-Line Name:      \\fB\\$1\\fR
226 Database Name:  \\fB\\$2\\fR
227 Database Class: \\fB\\$3\\fR
228 .fi
229 .IP
230 ..
231 '\"     # CS - begin code excerpt
232 .de CS
233 .RS
234 .nf
235 .ta .25i .5i .75i 1i
236 ..
237 '\"     # CE - end code excerpt
238 .de CE
239 .fi
240 .RE
241 ..
242 .de UL
243 \\$1\l'|0\(ul'\\$2
244 ..
245 .TH Tcl_ListObj 3 8.0 Tcl "Tcl Library Procedures"
246 .BS
247 .SH NAME
248 Tcl_ListObjAppendList, Tcl_ListObjAppendElement, Tcl_NewListObj, Tcl_SetListObj, Tcl_ListObjGetElements, Tcl_ListObjLength, Tcl_ListObjIndex, Tcl_ListObjReplace \- manipulate Tcl objects as lists
249 .SH SYNOPSIS
250 .nf
251 \fB#include <tcl.h>\fR
252 .sp
253 int
254 \fBTcl_ListObjAppendList\fR(\fIinterp, listPtr, elemListPtr\fR)
255 .sp
256 int
257 \fBTcl_ListObjAppendElement\fR(\fIinterp, listPtr, objPtr\fR)
258 .sp
259 Tcl_Obj *
260 \fBTcl_NewListObj\fR(\fIobjc, objv\fR)
261 .sp
262 \fBTcl_SetListObj\fR(\fIobjPtr, objc, objv\fR)
263 .sp
264 int
265 \fBTcl_ListObjGetElements\fR(\fIinterp, listPtr, objcPtr, objvPtr\fR)
266 .sp
267 int
268 \fBTcl_ListObjLength\fR(\fIinterp, listPtr, intPtr\fR)
269 .sp
270 int
271 \fBTcl_ListObjIndex\fR(\fIinterp, listPtr, index, objPtrPtr\fR)
272 .sp
273 int
274 \fBTcl_ListObjReplace\fR(\fIinterp, listPtr, first, count, objc, objv\fR)
275 .SH ARGUMENTS
276 .AS Tcl_Interp "*CONST objv[]" out
277 .AP Tcl_Interp *interp in
278 If an error occurs while converting an object to be a list object,
279 an error message is left in the interpreter's result object
280 unless \fIinterp\fR is NULL.
281 .AP Tcl_Obj *listPtr in/out
282 Points to the list object to be manipulated.
283 If \fIlistPtr\fR does not already point to a list object,
284 an attempt will be made to convert it to one.
285 .AP Tcl_Obj *elemListPtr in/out
286 For \fBTcl_ListObjAppendList\fR, this points to a list object
287 containing elements to be appended onto \fIlistPtr\fR.
288 Each element of *\fIelemListPtr\fR will
289 become a new element of \fIlistPtr\fR.
290 If *\fIelemListPtr\fR is not NULL and
291 does not already point to a list object,
292 an attempt will be made to convert it to one.
293 .AP Tcl_Obj *objPtr in
294 For \fBTcl_ListObjAppendElement\fR,
295 points to the Tcl object that will be appended to \fIlistPtr\fR.
296 For \fBTcl_SetListObj\fR,
297 this points to the Tcl object that will be converted to a list object
298 containing the \fIobjc\fR elements of the array referenced by \fIobjv\fR.
299 .AP int *objcPtr in
300 Points to location where \fBTcl_ListObjGetElements\fR
301 stores the number of element objects in \fIlistPtr\fR.
302 .AP Tcl_Obj ***objvPtr out
303 A location where \fBTcl_ListObjGetElements\fR stores a pointer to an array
304 of pointers to the element objects of \fIlistPtr\fR.  
305 .AP int objc in
306 The number of Tcl objects that \fBTcl_NewListObj\fR
307 will insert into a new list object,
308 and \fBTcl_ListObjReplace\fR will insert into \fIlistPtr\fR.
309 For \fBTcl_SetListObj\fR,
310 the number of Tcl objects to insert into \fIobjPtr\fR.
311 .VS
312 .AP Tcl_Obj     "*CONST\ objv[]" in
313 An array of pointers to objects.
314 \fBTcl_NewListObj\fR will insert these objects into a new list object
315 and \fBTcl_ListObjReplace\fR will insert them into an existing \fIlistPtr\fR.
316 Each object will become a separate list element.  
317 .VE
318 .AP int *intPtr out
319 Points to location where \fBTcl_ListObjLength\fR
320 stores the length of the list.
321 .AP int index in
322 Index of the list element that \fBTcl_ListObjIndex\fR
323 is to return.
324 The first element has index 0.
325 .AP Tcl_Obj **objPtrPtr out
326 Points to place where \fBTcl_ListObjIndex\fR is to store
327 a pointer to the resulting list element object.
328 .AP int first in
329 Index of the starting list element that \fBTcl_ListObjReplace\fR
330 is to replace.
331 The list's first element has index 0.
332 .AP int count in
333 The number of elements that \fBTcl_ListObjReplace\fR
334 is to replace.
335 .BE
336
337 .SH DESCRIPTION
338 .PP
339 Tcl list objects have an internal representation that supports
340 the efficient indexing and appending.
341 The procedures described in this man page are used to
342 create, modify, index, and append to Tcl list objects from C code.
343 .PP
344 \fBTcl_ListObjAppendList\fR and \fBTcl_ListObjAppendElement\fR
345 both add one or more objects
346 to the end of the list object referenced by \fIlistPtr\fR.
347 \fBTcl_ListObjAppendList\fR appends each element of the list object
348 referenced by \fIelemListPtr\fR while
349 \fBTcl_ListObjAppendElement\fR appends the single object
350 referenced by \fIobjPtr\fR.
351 Both procedures will convert the object referenced by \fIlistPtr\fR
352 to a list object if necessary.
353 If an error occurs during conversion,
354 both procedures return \fBTCL_ERROR\fR and leave an error message
355 in the interpreter's result object if \fIinterp\fR is not NULL.
356 Similarly, if \fIelemListPtr\fR does not already refer to a list object,
357 \fBTcl_ListObjAppendList\fR will attempt to convert it to one
358 and if an error occurs during conversion,
359 will return \fBTCL_ERROR\fR
360 and leave an error message in the interpreter's result object
361 if interp is not NULL.
362 Both procedures invalidate any old string representation of \fIlistPtr\fR
363 and, if it was converted to a list object,
364 free any old internal representation.
365 Similarly, \fBTcl_ListObjAppendList\fR frees any old internal representation
366 of \fIelemListPtr\fR if it converts it to a list object.
367 After appending each element in \fIelemListPtr\fR,
368 \fBTcl_ListObjAppendList\fR increments the element's reference count
369 since \fIlistPtr\fR now also refers to it.
370 For the same reason, \fBTcl_ListObjAppendElement\fR
371 increments \fIobjPtr\fR's reference count.
372 If no error occurs,
373 the two procedures return \fBTCL_OK\fR after appending the objects.
374 .PP
375 \fBTcl_NewListObj\fR and \fBTcl_SetListObj\fR
376 create a new object or modify an existing object to hold 
377 the \fIobjc\fR elements of the array referenced by \fIobjv\fR
378 where each element is a pointer to a Tcl object.
379 If \fIobjc\fR is less than or equal to zero,
380 they return an empty object.
381 The new object's string representation is left invalid.
382 The two procedures increment the reference counts
383 of the elements in \fIobjc\fR since the list object now refers to them.
384 The new list object returned by \fBTcl_NewListObj\fR
385 has reference count zero.
386 .PP
387 \fBTcl_ListObjGetElements\fR returns a count and a pointer to an array of
388 the elements in a list object.  It returns the count by storing it in the
389 address \fIobjcPtr\fR.  Similarly, it returns the array pointer by storing
390 it in the address \fIobjvPtr\fR.
391 The memory pointed to is managed by Tcl and should not be freed by the
392 caller.
393 If \fIlistPtr\fR is not already a list object, \fBTcl_ListObjGetElements\fR
394 will attempt to convert it to one; if the conversion fails, it returns
395 \fBTCL_ERROR\fR and leaves an error message in the interpreter's result
396 object if \fIinterp\fR is not NULL.
397 Otherwise it returns \fBTCL_OK\fR after storing the count and array pointer.
398 .PP
399 \fBTcl_ListObjLength\fR returns the number of elements in the list object
400 referenced by \fIlistPtr\fR.
401 It returns this count by storing an integer in the address \fIintPtr\fR.
402 If the object is not already a list object,
403 \fBTcl_ListObjLength\fR will attempt to convert it to one;
404 if the conversion fails, it returns \fBTCL_ERROR\fR
405 and leaves an error message in the interpreter's result object
406 if \fIinterp\fR is not NULL.
407 Otherwise it returns \fBTCL_OK\fR after storing the list's length.
408 .PP
409 The procedure \fBTcl_ListObjIndex\fR returns a pointer to the object
410 at element \fIindex\fR in the list referenced by \fIlistPtr\fR.
411 It returns this object by storing a pointer to it
412 in the address \fIobjPtrPtr\fR.
413 If \fIlistPtr\fR does not already refer to a list object,
414 \fBTcl_ListObjIndex\fR will attempt to convert it to one;
415 if the conversion fails, it returns \fBTCL_ERROR\fR
416 and leaves an error message in the interpreter's result object
417 if \fIinterp\fR is not NULL.
418 If the index is out of range,
419 that is, \fIindex\fR is negative or
420 greater than or equal to the number of elements in the list,
421 \fBTcl_ListObjIndex\fR stores a NULL in \fIobjPtrPtr\fR
422 and returns \fBTCL_OK\fR.
423 Otherwise it returns \fBTCL_OK\fR after storing the element's
424 object pointer.
425 The reference count for the list element is not incremented;
426 the caller must do that if it needs to retain a pointer to the element.
427 .PP
428 \fBTcl_ListObjReplace\fR replaces zero or more elements
429 of the list referenced by \fIlistPtr\fR
430 with the \fIobjc\fR objects in the array referenced by \fIobjv\fR.
431 If \fIlistPtr\fR does not point to a list object,
432 \fBTcl_ListObjReplace\fR will attempt to convert it to one;
433 if the conversion fails, it returns \fBTCL_ERROR\fR
434 and leaves an error message in the interpreter's result object
435 if \fIinterp\fR is not NULL.
436 Otherwise, it returns \fBTCL_OK\fR after replacing the objects.
437 If \fIobjv\fR is NULL, no new elements are added.
438 If the argument \fIfirst\fR is zero or negative,
439 it refers to the first element.
440 If \fIfirst\fR is greater than or equal to the
441 number of elements in the list, then no elements are deleted;
442 the new elements are appended to the list.
443 \fIcount\fR gives the number of elements to replace.
444 If \fIcount\fR is zero or negative then no elements are deleted;
445 the new elements are simply inserted before the one
446 designated by \fIfirst\fR.
447 \fBTcl_ListObjReplace\fR invalidates \fIlistPtr\fR's
448 old string representation.
449 The reference counts of any elements inserted from \fIobjv\fR
450 are incremented since the resulting list now refers to them.
451 Similarly, the reference counts for any replaced objects are decremented.
452 .PP
453 Because \fBTcl_ListObjReplace\fR combines
454 both element insertion and deletion,
455 it can be used to implement a number of list operations.
456 For example, the following code inserts the \fIobjc\fR objects
457 referenced by the array of object pointers \fIobjv\fR
458 just before the element \fIindex\fR of the list referenced by \fIlistPtr\fR:
459 .CS
460 result = Tcl_ListObjReplace(interp, listPtr, index, 0, objc, objv);
461 .CE
462 Similarly, the following code appends the \fIobjc\fR objects
463 referenced by the array \fIobjv\fR
464 to the end of the list \fIlistPtr\fR:
465 .CS
466 result = Tcl_ListObjLength(interp, listPtr, &length);
467 if (result == TCL_OK) {
468         result = Tcl_ListObjReplace(interp, listPtr, length, 0, objc, objv);
469 }
470 .CE
471 The \fIcount\fR list elements starting at \fIfirst\fR can be deleted
472 by simply calling \fBTcl_ListObjReplace\fR
473 with a NULL \fIobjvPtr\fR:
474 .CS
475 result = Tcl_ListObjReplace(interp, listPtr, first, count, 0, NULL);
476 .CE
477
478 .SH "SEE ALSO"
479 Tcl_NewObj, Tcl_DecrRefCount, Tcl_IncrRefCount, Tcl_GetObjResult
480
481 .SH KEYWORDS
482 append, index, insert, internal representation, length, list, list object, list type, object, object type, replace, string representation