📄 setvar.3
字号:
'\"'\" Copyright (c) 1989-1993 The Regents of the University of California.'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.'\"'\" See the file "license.terms" for information on usage and redistribution'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.'\" '\" RCS: @(#) $Id: SetVar.3,v 1.7 2002/08/05 03:24:39 dgp Exp $'\" .so man.macros.TH Tcl_SetVar 3 8.1 Tcl "Tcl Library Procedures".BS.SH NAMETcl_SetVar2Ex, Tcl_SetVar, Tcl_SetVar2, Tcl_ObjSetVar2, Tcl_GetVar2Ex, Tcl_GetVar, Tcl_GetVar2, Tcl_ObjGetVar2, Tcl_UnsetVar, Tcl_UnsetVar2 \- manipulate Tcl variables.SH SYNOPSIS.nf\fB#include <tcl.h>\fR.sp.VS 8.1Tcl_Obj *\fBTcl_SetVar2Ex\fR(\fIinterp, name1, name2, newValuePtr, flags\fR).VE.spCONST char *\fBTcl_SetVar\fR(\fIinterp, varName, newValue, flags\fR).spCONST char *\fBTcl_SetVar2\fR(\fIinterp, name1, name2, newValue, flags\fR).spTcl_Obj *\fBTcl_ObjSetVar2\fR(\fIinterp, part1Ptr, part2Ptr, newValuePtr, flags\fR).sp.VS 8.1Tcl_Obj *\fBTcl_GetVar2Ex\fR(\fIinterp, name1, name2, flags\fR).VE.spCONST char *\fBTcl_GetVar\fR(\fIinterp, varName, flags\fR).spCONST char *\fBTcl_GetVar2\fR(\fIinterp, name1, name2, flags\fR).spTcl_Obj *\fBTcl_ObjGetVar2\fR(\fIinterp, part1Ptr, part2Ptr, flags\fR).spint\fBTcl_UnsetVar\fR(\fIinterp, varName, flags\fR).spint\fBTcl_UnsetVar2\fR(\fIinterp, name1, name2, flags\fR).SH ARGUMENTS.AS Tcl_Interp *newValuePtr.AP Tcl_Interp *interp inInterpreter containing variable..AP "CONST char" *name1 inContains the name of an array variable (if \fIname2\fR is non-NULL)or (if \fIname2\fR is NULL) either the name of a scalar variableor a complete name including both variable name and index.May include \fB::\fR namespace qualifiersto specify a variable in a particular namespace..AP "CONST char" *name2 inIf non-NULL, gives name of element within array; in thiscase \fIname1\fR must refer to an array variable..AP Tcl_Obj *newValuePtr in.VS 8.1Points to a Tcl object containing the new value for the variable..VE.AP int flags inOR-ed combination of bits providing additional information. See belowfor valid values..AP "CONST char" *varName inName of variable.May include \fB::\fR namespace qualifiersto specify a variable in a particular namespace.May refer to a scalar variable or an element ofan array..AP "CONST char" *newValue inNew value for variable, specified as a NULL-terminated string.A copy of this value is stored in the variable..AP Tcl_Obj *part1Ptr inPoints to a Tcl object containing the variable's name.The name may include a series of \fB::\fR namespace qualifiersto specify a variable in a particular namespace.May refer to a scalar variable or an element of an array variable..AP Tcl_Obj *part2Ptr inIf non-NULL, points to an object containing the name of an elementwithin an array and \fIpart1Ptr\fR must refer to an array variable..BE.SH DESCRIPTION.PPThese procedures are used to create, modify, read, and deleteTcl variables from C code..PP.VS 8.1\fBTcl_SetVar2Ex\fR, \fBTcl_SetVar\fR, \fBTcl_SetVar2\fR, and\fBTcl_ObjSetVar2\fR will create a new variable or modify an existing one.These procedures set the given variable to the valuegiven by \fInewValuePtr\fR or \fInewValue\fR and return apointer to the variable's new value, which is stored in Tcl'svariable structure.\fBTcl_SetVar2Ex\fR and \fBTcl_ObjSetVar2\fR take the new value as aTcl_Obj and returna pointer to a Tcl_Obj. \fBTcl_SetVar\fR and \fBTcl_SetVar2\fRtake the new value as a string and return a string; they areusually less efficient than \fBTcl_ObjSetVar2\fR. Note that thereturn value may be different than the \fInewValuePtr\fR or.VE\fInewValue\fR argument, due to modifications made by write traces.If an error occurs in setting the variable (e.g. an arrayvariable is referenced without giving an index into the array)NULL is returned and an error message is left in \fIinterp\fR'sresult if the \fBTCL_LEAVE_ERR_MSG\fR \fIflag\fR bit is set..PP.VS 8.1\fBTcl_GetVar2Ex\fR, \fBTcl_GetVar\fR, \fBTcl_GetVar2\fR, and\fBTcl_ObjGetVar2\fRreturn the current value of a variable.The arguments to these procedures are treated in the same wayas the arguments to the procedures described above.Under normal circumstances, the return value is a pointerto the variable's value. For \fBTcl_GetVar2Ex\fR and\fBTcl_ObjGetVar2\fR the value isreturned as a pointer to a Tcl_Obj. For \fBTcl_GetVar\fR and\fBTcl_GetVar2\fR the value is returned as a string; this isusually less efficient, so \fBTcl_GetVar2Ex\fR or \fBTcl_ObjGetVar2\fRare preferred..VEIf an error occurs while reading the variable (e.g. the variabledoesn't exist or an array element is specified for a scalarvariable), then NULL is returned and an error message is leftin \fIinterp\fR's result if the \fBTCL_LEAVE_ERR_MSG\fR \fIflag\fRbit is set..PP\fBTcl_UnsetVar\fR and \fBTcl_UnsetVar2\fR may be used to removea variable, so that future attempts to read the variable will returnan error.The arguments to these procedures are treated in the same wayas the arguments to the procedures above.If the variable is successfully removed then TCL_OK is returned.If the variable cannot be removed because it doesn't exist thenTCL_ERROR is returned and an error message is leftin \fIinterp\fR's result if the \fBTCL_LEAVE_ERR_MSG\fR \fIflag\fRbit is set.If an array element is specified, the given element is removedbut the array remains.If an array name is specified without an index, then the entirearray is removed..PPThe name of a variable may be specified to these procedures infour ways:.IP [1]If \fBTcl_SetVar\fR, \fBTcl_GetVar\fR, or \fBTcl_UnsetVar\fRis invoked, the variable name is given asa single string, \fIvarName\fR.If \fIvarName\fR contains an open parenthesis and ends with aclose parenthesis, then the value between the parentheses istreated as an index (which can have any string value) andthe characters before the first openparenthesis are treated as the name of an array variable.If \fIvarName\fR doesn't have parentheses as described above, thenthe entire string is treated as the name of a scalar variable..IP [2]If the \fIname1\fR and \fIname2\fR arguments are provided and\fIname2\fR is non-NULL, then an array element is specified andthe array name and index havealready been separated by the caller: \fIname1\fR contains thename and \fIname2\fR contains the index..VS 8.1An error is generatedif \fIname1\fR contains an open parenthesis and ends with aclose parenthesis (array element) and \fIname2\fR is non-NULL..IP [3]If \fIname2\fR is NULL, \fIname1\fR is treated just like\fIvarName\fR in case [1] above (it can be either a scalar or an arrayelement variable name)..VE.PPThe \fIflags\fR argument may be used to specify any of severaloptions to the procedures.It consists of an OR-ed combination of the following bits..TP\fBTCL_GLOBAL_ONLY\fRUnder normal circumstances the procedures look up variables as follows.If a procedure call is active in \fIinterp\fR,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 \fIflags\fR then the variableis looked up only in the global namespaceeven if there is a procedure call active.If both \fBTCL_GLOBAL_ONLY\fR and \fBTCL_NAMESPACE_ONLY\fR are given,\fBTCL_GLOBAL_ONLY\fR is ignored..TP\fBTCL_NAMESPACE_ONLY\fRIf this bit is set in \fIflags\fR then the variableis looked up only in the current namespace; if a procedure is activeits variables are ignored, and the global namespace is also ignored unlessit is the current namespace..TP\fBTCL_LEAVE_ERR_MSG\fRIf an error is returned and this bit is set in \fIflags\fR, thenan error message will be left in the interpreter's result,where it can be retrieved with \fBTcl_GetObjResult\fRor \fBTcl_GetStringResult\fR.If this flag bit isn't set then no error message is leftand the interpreter's result will not be modified..TP\fBTCL_APPEND_VALUE\fRIf this bit is set then \fInewValuePtr\fR or \fInewValue\fR isappended 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 \fBTcl_Set*\fR procedures..TP\fBTCL_LIST_ELEMENT\fRIf this bit is set, then \fInewValue\fR is converted to a validTcl list element before setting (or appending to) the variable.A separator space is appended before the new list element unlessthe list element is going to be the first element in a list orsublist (i.e. the variable's current value is empty, or containsthe single character ``{'', or ends in `` }'')..PP\fBTcl_GetVar\fR and \fBTcl_GetVar2\fRreturn the current value of a variable.The arguments to these procedures are treated in the same wayas the arguments to \fBTcl_SetVar\fR and \fBTcl_SetVar2\fR.Under normal circumstances, the return value is a pointerto the variable's value (which is stored in Tcl's variablestructure and will not change before the next call to \fBTcl_SetVar\fRor \fBTcl_SetVar2\fR).\fBTcl_GetVar\fR and \fBTcl_GetVar2\fR use the flag bits TCL_GLOBAL_ONLYand TCL_LEAVE_ERR_MSG, both ofwhich havethe same meaning as for \fBTcl_SetVar\fR.If an error occurs in reading the variable (e.g. the variabledoesn't exist or an array element is specified for a scalarvariable), then NULL is returned..PP\fBTcl_UnsetVar\fR and \fBTcl_UnsetVar2\fR may be used to removea variable, so that future calls to \fBTcl_GetVar\fR or \fBTcl_GetVar2\fRfor the variable will return an error.The arguments to these procedures are treated in the same wayas the arguments to \fBTcl_GetVar\fR and \fBTcl_GetVar2\fR.If the variable is successfully removed then TCL_OK is returned.If the variable cannot be removed because it doesn't exist thenTCL_ERROR is returned.If an array element is specified, the given element is removedbut the array remains.If an array name is specified without an index, then the entirearray is removed..SH "SEE ALSO"Tcl_GetObjResult, Tcl_GetStringResult, Tcl_TraceVar.SH KEYWORDSarray, get variable, interpreter, object, scalar, set, unset, variable
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -