Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v9 / man / man3 / Tcl_ObjGetVar2.3
CommitLineData
920dae64
AT
1'\"
2'\" Copyright (c) 1989-1993 The Regents of the University of California.
3'\" Copyright (c) 1994-1997 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: SetVar.3,v 1.7.2.2 2004/08/16 14:18:25 msofer 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 Tcl_SetVar 3 8.1 Tcl "Tcl Library Procedures"
247.BS
248.SH NAME
249Tcl_SetVar2Ex, Tcl_SetVar, Tcl_SetVar2, Tcl_ObjSetVar2, Tcl_GetVar2Ex, Tcl_GetVar, Tcl_GetVar2, Tcl_ObjGetVar2, Tcl_UnsetVar, Tcl_UnsetVar2 \- manipulate Tcl variables
250.SH SYNOPSIS
251.nf
252\fB#include <tcl.h>\fR
253.sp
254.VS 8.1
255Tcl_Obj *
256\fBTcl_SetVar2Ex\fR(\fIinterp, name1, name2, newValuePtr, flags\fR)
257.VE
258.sp
259CONST char *
260\fBTcl_SetVar\fR(\fIinterp, varName, newValue, flags\fR)
261.sp
262CONST char *
263\fBTcl_SetVar2\fR(\fIinterp, name1, name2, newValue, flags\fR)
264.sp
265Tcl_Obj *
266\fBTcl_ObjSetVar2\fR(\fIinterp, part1Ptr, part2Ptr, newValuePtr, flags\fR)
267.sp
268.VS 8.1
269Tcl_Obj *
270\fBTcl_GetVar2Ex\fR(\fIinterp, name1, name2, flags\fR)
271.VE
272.sp
273CONST char *
274\fBTcl_GetVar\fR(\fIinterp, varName, flags\fR)
275.sp
276CONST char *
277\fBTcl_GetVar2\fR(\fIinterp, name1, name2, flags\fR)
278.sp
279Tcl_Obj *
280\fBTcl_ObjGetVar2\fR(\fIinterp, part1Ptr, part2Ptr, flags\fR)
281.sp
282int
283\fBTcl_UnsetVar\fR(\fIinterp, varName, flags\fR)
284.sp
285int
286\fBTcl_UnsetVar2\fR(\fIinterp, name1, name2, flags\fR)
287.SH ARGUMENTS
288.AS Tcl_Interp *newValuePtr
289.AP Tcl_Interp *interp in
290Interpreter containing variable.
291.AP "CONST char" *name1 in
292Contains the name of an array variable (if \fIname2\fR is non-NULL)
293or (if \fIname2\fR is NULL) either the name of a scalar variable
294or a complete name including both variable name and index.
295May include \fB::\fR namespace qualifiers
296to specify a variable in a particular namespace.
297.AP "CONST char" *name2 in
298If non-NULL, gives name of element within array; in this
299case \fIname1\fR must refer to an array variable.
300.AP Tcl_Obj *newValuePtr in
301.VS 8.1
302Points to a Tcl object containing the new value for the variable.
303.VE
304.AP int flags in
305OR-ed combination of bits providing additional information. See below
306for valid values.
307.AP "CONST char" *varName in
308Name of variable.
309May include \fB::\fR namespace qualifiers
310to specify a variable in a particular namespace.
311May refer to a scalar variable or an element of
312an array.
313.AP "CONST char" *newValue in
314New value for variable, specified as a null-terminated string.
315A copy of this value is stored in the variable.
316.AP Tcl_Obj *part1Ptr in
317Points to a Tcl object containing the variable's name.
318The name may include a series of \fB::\fR namespace qualifiers
319to specify a variable in a particular namespace.
320May refer to a scalar variable or an element of an array variable.
321.AP Tcl_Obj *part2Ptr in
322If non-NULL, points to an object containing the name of an element
323within an array and \fIpart1Ptr\fR must refer to an array variable.
324.BE
325
326.SH DESCRIPTION
327.PP
328These procedures are used to create, modify, read, and delete
329Tcl variables from C code.
330.PP
331.VS 8.1
332\fBTcl_SetVar2Ex\fR, \fBTcl_SetVar\fR, \fBTcl_SetVar2\fR, and
333\fBTcl_ObjSetVar2\fR
334will create a new variable or modify an existing one.
335These procedures set the given variable to the value
336given by \fInewValuePtr\fR or \fInewValue\fR and return a
337pointer to the variable's new value, which is stored in Tcl's
338variable structure.
339\fBTcl_SetVar2Ex\fR and \fBTcl_ObjSetVar2\fR take the new value as a
340Tcl_Obj and return
341a pointer to a Tcl_Obj. \fBTcl_SetVar\fR and \fBTcl_SetVar2\fR
342take the new value as a string and return a string; they are
343usually less efficient than \fBTcl_ObjSetVar2\fR. Note that the
344return value may be different than the \fInewValuePtr\fR or
345.VE
346\fInewValue\fR argument, due to modifications made by write traces.
347If an error occurs in setting the variable (e.g. an array
348variable is referenced without giving an index into the array)
349NULL is returned and an error message is left in \fIinterp\fR's
350result if the \fBTCL_LEAVE_ERR_MSG\fR \fIflag\fR bit is set.
351.PP
352.VS 8.1
353\fBTcl_GetVar2Ex\fR, \fBTcl_GetVar\fR, \fBTcl_GetVar2\fR, and
354\fBTcl_ObjGetVar2\fR
355return the current value of a variable.
356The arguments to these procedures are treated in the same way
357as the arguments to the procedures described above.
358Under normal circumstances, the return value is a pointer
359to the variable's value. For \fBTcl_GetVar2Ex\fR and
360\fBTcl_ObjGetVar2\fR the value is
361returned as a pointer to a Tcl_Obj. For \fBTcl_GetVar\fR and
362\fBTcl_GetVar2\fR the value is returned as a string; this is
363usually less efficient, so \fBTcl_GetVar2Ex\fR or \fBTcl_ObjGetVar2\fR
364are preferred.
365.VE
366If an error occurs while reading the variable (e.g. the variable
367doesn't exist or an array element is specified for a scalar
368variable), then NULL is returned and an error message is left
369in \fIinterp\fR's result if the \fBTCL_LEAVE_ERR_MSG\fR \fIflag\fR
370bit is set.
371.PP
372\fBTcl_UnsetVar\fR and \fBTcl_UnsetVar2\fR may be used to remove
373a variable, so that future attempts to read the variable will return
374an error.
375The arguments to these procedures are treated in the same way
376as the arguments to the procedures above.
377If the variable is successfully removed then TCL_OK is returned.
378If the variable cannot be removed because it doesn't exist then
379TCL_ERROR is returned and an error message is left
380in \fIinterp\fR's result if the \fBTCL_LEAVE_ERR_MSG\fR \fIflag\fR
381bit is set.
382If an array element is specified, the given element is removed
383but the array remains.
384If an array name is specified without an index, then the entire
385array is removed.
386.PP
387The name of a variable may be specified to these procedures in
388four ways:
389.IP [1]
390If \fBTcl_SetVar\fR, \fBTcl_GetVar\fR, or \fBTcl_UnsetVar\fR
391is invoked, the variable name is given as
392a single string, \fIvarName\fR.
393If \fIvarName\fR contains an open parenthesis and ends with a
394close parenthesis, then the value between the parentheses is
395treated as an index (which can have any string value) and
396the characters before the first open
397parenthesis are treated as the name of an array variable.
398If \fIvarName\fR doesn't have parentheses as described above, then
399the entire string is treated as the name of a scalar variable.
400.IP [2]
401If the \fIname1\fR and \fIname2\fR arguments are provided and
402\fIname2\fR is non-NULL, then an array element is specified and
403the array name and index have
404already been separated by the caller: \fIname1\fR contains the
405name and \fIname2\fR contains the index.
406.VS 8.1
407An error is generated
408if \fIname1\fR contains an open parenthesis and ends with a
409close parenthesis (array element) and \fIname2\fR is non-NULL.
410.IP [3]
411If \fIname2\fR is NULL, \fIname1\fR is treated just like
412\fIvarName\fR in case [1] above (it can be either a scalar or an array
413element variable name).
414.VE
415.PP
416The \fIflags\fR argument may be used to specify any of several
417options to the procedures.
418It consists of an OR-ed combination of the following bits.
419.TP
420\fBTCL_GLOBAL_ONLY\fR
421Under normal circumstances the procedures look up variables as follows.
422If a procedure call is active in \fIinterp\fR,
423the variable is looked up at the current level of procedure call.
424Otherwise, the variable is looked up first in the current namespace,
425then in the global namespace.
426However, if this bit is set in \fIflags\fR then the variable
427is looked up only in the global namespace
428even if there is a procedure call active.
429If both \fBTCL_GLOBAL_ONLY\fR and \fBTCL_NAMESPACE_ONLY\fR are given,
430\fBTCL_GLOBAL_ONLY\fR is ignored.
431.TP
432\fBTCL_NAMESPACE_ONLY\fR
433If this bit is set in \fIflags\fR then the variable
434is looked up only in the current namespace; if a procedure is active
435its variables are ignored, and the global namespace is also ignored unless
436it is the current namespace.
437.TP
438\fBTCL_LEAVE_ERR_MSG\fR
439If an error is returned and this bit is set in \fIflags\fR, then
440an error message will be left in the interpreter's result,
441where it can be retrieved with \fBTcl_GetObjResult\fR
442or \fBTcl_GetStringResult\fR.
443If this flag bit isn't set then no error message is left
444and the interpreter's result will not be modified.
445.TP
446\fBTCL_APPEND_VALUE\fR
447If this bit is set then \fInewValuePtr\fR or \fInewValue\fR is
448appended to the current value instead of replacing it.
449If the variable is currently undefined, then the bit is ignored.
450This bit is only used by the \fBTcl_Set*\fR procedures.
451.TP
452\fBTCL_LIST_ELEMENT\fR
453If this bit is set, then \fInewValue\fR is converted to a valid
454Tcl list element before setting (or appending to) the variable.
455A separator space is appended before the new list element unless
456the list element is going to be the first element in a list or
457sublist (i.e. the variable's current value is empty, or contains
458the single character ``{'', or ends in `` }'').
459When appending, the original value of the variable must also be
460a valid list, so that the operation is the appending of a new
461list element onto a list.
462.PP
463\fBTcl_GetVar\fR and \fBTcl_GetVar2\fR
464return the current value of a variable.
465The arguments to these procedures are treated in the same way
466as the arguments to \fBTcl_SetVar\fR and \fBTcl_SetVar2\fR.
467Under normal circumstances, the return value is a pointer
468to the variable's value (which is stored in Tcl's variable
469structure and will not change before the next call to \fBTcl_SetVar\fR
470or \fBTcl_SetVar2\fR).
471\fBTcl_GetVar\fR and \fBTcl_GetVar2\fR use the flag bits TCL_GLOBAL_ONLY
472and TCL_LEAVE_ERR_MSG, both of
473which have
474the same meaning as for \fBTcl_SetVar\fR.
475If an error occurs in reading the variable (e.g. the variable
476doesn't exist or an array element is specified for a scalar
477variable), then NULL is returned.
478.PP
479\fBTcl_UnsetVar\fR and \fBTcl_UnsetVar2\fR may be used to remove
480a variable, so that future calls to \fBTcl_GetVar\fR or \fBTcl_GetVar2\fR
481for the variable will return an error.
482The arguments to these procedures are treated in the same way
483as the arguments to \fBTcl_GetVar\fR and \fBTcl_GetVar2\fR.
484If the variable is successfully removed then TCL_OK is returned.
485If the variable cannot be removed because it doesn't exist then
486TCL_ERROR is returned.
487If an array element is specified, the given element is removed
488but the array remains.
489If an array name is specified without an index, then the entire
490array is removed.
491
492.SH "SEE ALSO"
493Tcl_GetObjResult, Tcl_GetStringResult, Tcl_TraceVar
494
495.SH KEYWORDS
496array, get variable, interpreter, object, scalar, set, unset, variable