SetVar.3
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:10k
- '"
- '" 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.2.2 2004/08/16 14:18:25 msofer Exp $
- '"
- .so man.macros
- .TH Tcl_SetVar 3 8.1 Tcl "Tcl Library Procedures"
- .BS
- .SH NAME
- Tcl_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.1
- Tcl_Obj *
- fBTcl_SetVar2ExfR(fIinterp, name1, name2, newValuePtr, flagsfR)
- .VE
- .sp
- CONST char *
- fBTcl_SetVarfR(fIinterp, varName, newValue, flagsfR)
- .sp
- CONST char *
- fBTcl_SetVar2fR(fIinterp, name1, name2, newValue, flagsfR)
- .sp
- Tcl_Obj *
- fBTcl_ObjSetVar2fR(fIinterp, part1Ptr, part2Ptr, newValuePtr, flagsfR)
- .sp
- .VS 8.1
- Tcl_Obj *
- fBTcl_GetVar2ExfR(fIinterp, name1, name2, flagsfR)
- .VE
- .sp
- CONST char *
- fBTcl_GetVarfR(fIinterp, varName, flagsfR)
- .sp
- CONST char *
- fBTcl_GetVar2fR(fIinterp, name1, name2, flagsfR)
- .sp
- Tcl_Obj *
- fBTcl_ObjGetVar2fR(fIinterp, part1Ptr, part2Ptr, flagsfR)
- .sp
- int
- fBTcl_UnsetVarfR(fIinterp, varName, flagsfR)
- .sp
- int
- fBTcl_UnsetVar2fR(fIinterp, name1, name2, flagsfR)
- .SH ARGUMENTS
- .AS Tcl_Interp *newValuePtr
- .AP Tcl_Interp *interp in
- Interpreter containing variable.
- .AP "CONST char" *name1 in
- Contains the name of an array variable (if fIname2fR is non-NULL)
- or (if fIname2fR is NULL) either the name of a scalar variable
- or a complete name including both variable name and index.
- May include fB::fR namespace qualifiers
- to specify a variable in a particular namespace.
- .AP "CONST char" *name2 in
- If non-NULL, gives name of element within array; in this
- case fIname1fR must refer to an array variable.
- .AP Tcl_Obj *newValuePtr in
- .VS 8.1
- Points to a Tcl object containing the new value for the variable.
- .VE
- .AP int flags in
- OR-ed combination of bits providing additional information. See below
- for valid values.
- .AP "CONST char" *varName in
- Name of variable.
- May include fB::fR namespace qualifiers
- to specify a variable in a particular namespace.
- May refer to a scalar variable or an element of
- an array.
- .AP "CONST char" *newValue in
- New value for variable, specified as a null-terminated string.
- A copy of this value is stored in the variable.
- .AP Tcl_Obj *part1Ptr in
- Points to a Tcl object containing the variable's name.
- The name may include a series of fB::fR namespace qualifiers
- to specify a variable in a particular namespace.
- May refer to a scalar variable or an element of an array variable.
- .AP Tcl_Obj *part2Ptr in
- If non-NULL, points to an object containing the name of an element
- within an array and fIpart1PtrfR must refer to an array variable.
- .BE
- .SH DESCRIPTION
- .PP
- These procedures are used to create, modify, read, and delete
- Tcl variables from C code.
- .PP
- .VS 8.1
- fBTcl_SetVar2ExfR, fBTcl_SetVarfR, fBTcl_SetVar2fR, and
- fBTcl_ObjSetVar2fR
- will create a new variable or modify an existing one.
- These procedures set the given variable to the value
- given by fInewValuePtrfR or fInewValuefR and return a
- pointer to the variable's new value, which is stored in Tcl's
- variable structure.
- fBTcl_SetVar2ExfR and fBTcl_ObjSetVar2fR take the new value as a
- Tcl_Obj and return
- a pointer to a Tcl_Obj. fBTcl_SetVarfR and fBTcl_SetVar2fR
- take the new value as a string and return a string; they are
- usually less efficient than fBTcl_ObjSetVar2fR. Note that the
- return value may be different than the fInewValuePtrfR or
- .VE
- fInewValuefR argument, due to modifications made by write traces.
- If an error occurs in setting the variable (e.g. an array
- variable is referenced without giving an index into the array)
- NULL is returned and an error message is left in fIinterpfR's
- result if the fBTCL_LEAVE_ERR_MSGfR fIflagfR bit is set.
- .PP
- .VS 8.1
- fBTcl_GetVar2ExfR, fBTcl_GetVarfR, fBTcl_GetVar2fR, and
- fBTcl_ObjGetVar2fR
- return the current value of a variable.
- The arguments to these procedures are treated in the same way
- as the arguments to the procedures described above.
- Under normal circumstances, the return value is a pointer
- to the variable's value. For fBTcl_GetVar2ExfR and
- fBTcl_ObjGetVar2fR the value is
- returned as a pointer to a Tcl_Obj. For fBTcl_GetVarfR and
- fBTcl_GetVar2fR the value is returned as a string; this is
- usually less efficient, so fBTcl_GetVar2ExfR or fBTcl_ObjGetVar2fR
- are preferred.
- .VE
- If an error occurs while reading the variable (e.g. the variable
- doesn't exist or an array element is specified for a scalar
- variable), then NULL is returned and an error message is left
- in fIinterpfR's result if the fBTCL_LEAVE_ERR_MSGfR fIflagfR
- bit is set.
- .PP
- fBTcl_UnsetVarfR and fBTcl_UnsetVar2fR may be used to remove
- a variable, so that future attempts to read the variable will return
- an error.
- The arguments to these procedures are treated in the same way
- as 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 then
- TCL_ERROR is returned and an error message is left
- in fIinterpfR's result if the fBTCL_LEAVE_ERR_MSGfR fIflagfR
- bit is set.
- If an array element is specified, the given element is removed
- but the array remains.
- If an array name is specified without an index, then the entire
- array is removed.
- .PP
- The name of a variable may be specified to these procedures in
- four ways:
- .IP [1]
- If fBTcl_SetVarfR, fBTcl_GetVarfR, or fBTcl_UnsetVarfR
- is invoked, the variable name is given as
- a single string, fIvarNamefR.
- If fIvarNamefR 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 fIvarNamefR doesn't have parentheses as described above, then
- the entire string is treated as the name of a scalar variable.
- .IP [2]
- If the fIname1fR and fIname2fR arguments are provided and
- fIname2fR is non-NULL, then an array element is specified and
- the array name and index have
- already been separated by the caller: fIname1fR contains the
- name and fIname2fR contains the index.
- .VS 8.1
- An error is generated
- if fIname1fR contains an open parenthesis and ends with a
- close parenthesis (array element) and fIname2fR is non-NULL.
- .IP [3]
- If fIname2fR is NULL, fIname1fR is treated just like
- fIvarNamefR in case [1] above (it can be either a scalar or an array
- element variable name).
- .VE
- .PP
- The fIflagsfR argument may be used to specify any of several
- options to the procedures.
- It consists of an OR-ed combination of the following bits.
- .TP
- fBTCL_GLOBAL_ONLYfR
- Under normal circumstances the procedures look up variables as follows.
- If a procedure call is active in fIinterpfR,
- 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 fIflagsfR then the variable
- is looked up only in the global namespace
- even if there is a procedure call active.
- If both fBTCL_GLOBAL_ONLYfR and fBTCL_NAMESPACE_ONLYfR are given,
- fBTCL_GLOBAL_ONLYfR is ignored.
- .TP
- fBTCL_NAMESPACE_ONLYfR
- If this bit is set in fIflagsfR 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.
- .TP
- fBTCL_LEAVE_ERR_MSGfR
- If an error is returned and this bit is set in fIflagsfR, then
- an error message will be left in the interpreter's result,
- where it can be retrieved with fBTcl_GetObjResultfR
- or fBTcl_GetStringResultfR.
- If this flag bit isn't set then no error message is left
- and the interpreter's result will not be modified.
- .TP
- fBTCL_APPEND_VALUEfR
- If this bit is set then fInewValuePtrfR or fInewValuefR 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 fBTcl_Set*fR procedures.
- .TP
- fBTCL_LIST_ELEMENTfR
- If this bit is set, then fInewValuefR 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 (i.e. the variable's current value is empty, or contains
- the single character ``{'', or ends in `` }'').
- When appending, the original value of the variable must also be
- a valid list, so that the operation is the appending of a new
- list element onto a list.
- .PP
- fBTcl_GetVarfR and fBTcl_GetVar2fR
- return the current value of a variable.
- The arguments to these procedures are treated in the same way
- as the arguments to fBTcl_SetVarfR and fBTcl_SetVar2fR.
- Under normal circumstances, the return value is a pointer
- to the variable's value (which is stored in Tcl's variable
- structure and will not change before the next call to fBTcl_SetVarfR
- or fBTcl_SetVar2fR).
- fBTcl_GetVarfR and fBTcl_GetVar2fR use the flag bits TCL_GLOBAL_ONLY
- and TCL_LEAVE_ERR_MSG, both of
- which have
- the same meaning as for fBTcl_SetVarfR.
- If an error occurs in reading the variable (e.g. the variable
- doesn't exist or an array element is specified for a scalar
- variable), then NULL is returned.
- .PP
- fBTcl_UnsetVarfR and fBTcl_UnsetVar2fR may be used to remove
- a variable, so that future calls to fBTcl_GetVarfR or fBTcl_GetVar2fR
- for the variable will return an error.
- The arguments to these procedures are treated in the same way
- as the arguments to fBTcl_GetVarfR and fBTcl_GetVar2fR.
- If the variable is successfully removed then TCL_OK is returned.
- If the variable cannot be removed because it doesn't exist then
- TCL_ERROR is returned.
- If an array element is specified, the given element is removed
- but the array remains.
- If an array name is specified without an index, then the entire
- array is removed.
- .SH "SEE ALSO"
- Tcl_GetObjResult, Tcl_GetStringResult, Tcl_TraceVar
- .SH KEYWORDS
- array, get variable, interpreter, object, scalar, set, unset, variable