SYNOPSIS
#include <tcl.h>
Tcl_Obj * Tcl_SetVar2Ex(interp, name1, name2, newValuePtr, flags)
char * Tcl_SetVar(interp, varName, newValue, flags)
char * Tcl_SetVar2(interp, name1, name2, newValue, flags)
Tcl_Obj * Tcl_ObjSetVar2(interp, part1Ptr, part2Ptr, newValuePtr, flags)
Tcl_Obj * Tcl_GetVar2Ex(interp, name1, name2, flags)
char * Tcl_GetVar(interp, varName, flags)
char * Tcl_GetVar2(interp, name1, name2, flags)
Tcl_Obj * Tcl_ObjGetVar2(interp, part1Ptr, part2Ptr, flags)
int Tcl_UnsetVar(interp, varName, flags)
int Tcl_UnsetVar2(interp, name1, name2, flags)
ARGUMENTS
- Tcl_Interp *interp (in)
-
Interpreter containing variable.
- char *name1 (in)
-
Contains the name of an array variable (if name2 is non-NULL) or (if name2 is NULL) either the name of a scalar variable or a complete name including both variable name and index. May include :: namespace qualifiers to specify a variable in a particular namespace.
- char *name2 (in)
-
If non-NULL, gives name of element within array; in this case name1 must refer to an array variable.
- Tcl_Obj *newValuePtr (in)
-
Points to a Tcl object containing the new value for the variable.
- int flags (in)
-
OR-ed combination of bits providing additional information. See below for valid values.
- char *varName (in)
-
Name of variable. May include :: namespace qualifiers to specify a variable in a particular namespace. May refer to a scalar variable or an element of an array. If the name references an element of an array, then the name must be in writable memory: Tcl will make temporary modifications to it while looking up the name.
- char *newValue (in)
-
New value for variable, specified as a NULL-terminated string. A copy of this value is stored in the variable.
- Tcl_Obj *part1Ptr (in)
-
Points to a Tcl object containing the variable's name. The name may include a series of :: namespace qualifiers to specify a variable in a particular namespace. May refer to a scalar variable or an element of an array variable.
- Tcl_Obj *part2Ptr (in)
-
If non-NULL, points to an object containing the name of an element within an array and part1Ptr must refer to an array variable.
DESCRIPTION
These procedures are used to create, modify, read, and delete Tcl variables from C code.
The name of a variable may be specified to these procedures in four ways:
-
If
Tcl_SetVar() ,Tcl_GetVar() , orTcl_UnsetVar() is invoked, the variable name is given as a single string, varName. If varName contains an open parenthesis and ends with a close parenthesis, then the value between the parentheses is treated as an index (which can have any string value) and the characters before the first open parenthesis are treated as the name of an array variable. If varName doesn't have parentheses as described above, then the entire string is treated as the name of a scalar variable. -
If the name1 and name2 arguments are provided and name2 is non-NULL, then an array element is specified and the array name and index have already been separated by the caller: name1 contains the name and name2 contains the index. An error is generated if name1 contains an open parenthesis and ends with a close parenthesis (array element) and name2 is non-NULL.
-
If name2 is NULL, name1 is treated just like varName in case [1] above (it can be either a scalar or an array element variable name).
The flags argument may be used to specify any of several options to the procedures. It consists of an OR-ed combination of the following bits.
- TCL_GLOBAL_ONLY
-
Under normal circumstances the procedures look up variables as follows. If a procedure call is active in interp, the variable is looked up at the current level of procedure call. Otherwise, the variable is looked up first in the current namespace, then in the global namespace. However, if this bit is set in flags then the variable is looked up only in the global namespace even if there is a procedure call active. If both TCL_GLOBAL_ONLY and TCL_NAMESPACE_ONLY are given, TCL_GLOBAL_ONLY is ignored.
- TCL_NAMESPACE_ONLY
-
If this bit is set in flags then the variable is looked up only in the current namespace; if a procedure is active its variables are ignored, and the global namespace is also ignored unless it is the current namespace.
- TCL_LEAVE_ERR_MSG
-
If an error is returned and this bit is set in flags, then an error message will be left in the interpreter's result, where it can be retrieved with
Tcl_GetObjResult() orTcl_GetStringResult() . If this flag bit isn't set then no error message is left and the interpreter's result will not be modified. - TCL_APPEND_VALUE
-
If this bit is set then newValuePtr or newValue is appended to the current value instead of replacing it. If the variable is currently undefined, then the bit is ignored. This bit is only used by the Tcl_Set* procedures.
- TCL_LIST_ELEMENT
-
If this bit is set, then newValue is converted to a valid Tcl list element before setting (or appending to) the variable. A separator space is appended before the new list element unless the list element is going to be the first element in a list or sublist (that is, the variable's current value is empty, or contains the single character {, or ends in }).
PORTABILITY
Windows 8.1. Windows Server 2012 R2. Windows 10. Windows Server 2016. Windows Server 2019. Windows 11. Windows Server 2022.
AVAILABILITY
PTC MKS Toolkit for Professional Developers
PTC MKS Toolkit for Enterprise Developers
PTC MKS Toolkit for Enterprise Developers 64-Bit Edition
SEE ALSO
- Functions:
Tcl_GetObjResult() ,Tcl_GetStringResult() ,Tcl_TraceVar()
PTC MKS Toolkit 10.4 Documentation Build 39.