Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Tcl_SetVar(3)		     Tcl Library Procedures		   Tcl_SetVar(3)

________________________________________________________________________________

NAME
     Tcl_SetVar2Ex,   Tcl_SetVar,  Tcl_SetVar2,  Tcl_ObjSetVar2,  Tcl_GetVar2Ex,
     Tcl_GetVar, Tcl_GetVar2, Tcl_ObjGetVar2, Tcl_UnsetVar, Tcl_UnsetVar2 -  ma-
     nipulate Tcl variables

SYNOPSIS
     #include <tcl.h>

     Tcl_Obj *
     Tcl_SetVar2Ex(interp, name1, name2, newValuePtr, flags)

     const char *
     Tcl_SetVar(interp, varName, newValue, flags)

     const 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)

     const char *
     Tcl_GetVar(interp, varName, flags)

     const 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.

     const char *name1 (in)		   Contains  the  name of an array vari-
					   able (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 in-
					   dex.  May include :: namespace quali-
					   fiers to specify a variable in a par-
					   ticular namespace.

     const 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 value containing the
					   new value for the variable.

     int flags (in)			   OR-ed combination of  bits  providing
					   additional information. See below for
					   valid values.

     const 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.

     const 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 value containing the
					   variable's name.  The  name	may  in-
					   clude a series of :: namespace quali-
					   fiers to specify a variable in a par-
					   ticular  namespace.	 May  refer to a
					   scalar variable or an element  of  an
					   array variable.

     Tcl_Obj *part2Ptr (in)		   If  non-NULL,  points to a value con-
					   taining 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.

     Tcl_SetVar2Ex,  Tcl_SetVar,  Tcl_SetVar2,	and Tcl_ObjSetVar2 will create a
     new variable or modify an existing one.  These  procedures  set  the  given
     variable to the value given by newValuePtr or newValue and return a pointer
     to  the  variable's new value, which is stored in Tcl's variable structure.
     Tcl_SetVar2Ex and Tcl_ObjSetVar2 take the new value as a Tcl_Obj and return
     a pointer to a Tcl_Obj.  Tcl_SetVar and Tcl_SetVar2 take the new value as a
     string and return a string; they are usually less	efficient  than  Tcl_Ob-
     jSetVar2.	Note that the return value may be different than the newValuePtr
     or newValue argument, due to modifications made by write traces.  If an er-
     ror  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  mes-
     sage is left in interp's result if the TCL_LEAVE_ERR_MSG flag bit is set.

     Tcl_GetVar2Ex,  Tcl_GetVar, Tcl_GetVar2, and Tcl_ObjGetVar2 return the cur-
     rent 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 Tcl_GetVar2Ex and Tcl_ObjGetVar2 the value  is  returned  as  a
     pointer to a Tcl_Obj.  For Tcl_GetVar and Tcl_GetVar2 the value is returned
     as  a  string;  this is usually less efficient, so Tcl_GetVar2Ex or Tcl_Ob-
     jGetVar2 are preferred.  If an error  occurs  while  reading  the	variable
     (e.g.  the  variable  does not exist or an array element is specified for a
     scalar variable), then NULL is returned and an error message is left in in-
     terp's result if the TCL_LEAVE_ERR_MSG flag bit is set.

     Tcl_UnsetVar and Tcl_UnsetVar2 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 does not exist then
     TCL_ERROR is returned and an error message is left in  interp's  result  if
     the  TCL_LEAVE_ERR_MSG  flag 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.

     The name of a variable may be specified to these procedures in four ways:

     [1]    If	Tcl_SetVar, Tcl_GetVar, or Tcl_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  does  not
	    have  parentheses  as  described  above,  then  the entire string is
	    treated as the name of a scalar variable.

     [2]    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  ele-
	    ment) and name2 is non-NULL.

     [3]    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 fol-
	    lows.  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_NAME-
	    SPACE_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  or  Tcl_GetStringResult.  If this
	    flag bit is not set then no error message is  left	and  the  inter-
	    preter'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 ele-
	    ment 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 ap-
	    pending of a new list element onto a list.

     Tcl_GetVar and Tcl_GetVar2 return the current value of a variable.  The ar-
     guments to these procedures are treated in the same way as the arguments to
     Tcl_SetVar and Tcl_SetVar2.  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  Tcl_SetVar  or
     Tcl_SetVar2).  Tcl_GetVar and Tcl_GetVar2 use the flag bits TCL_GLOBAL_ONLY
     and  TCL_LEAVE_ERR_MSG, both of which have the same meaning as for Tcl_Set-
     Var.  If an error occurs in reading the variable (e.g.  the  variable  does
     not  exist  or  an  array element is specified for a scalar variable), then
     NULL is returned.

     Tcl_UnsetVar and Tcl_UnsetVar2 may be used to remove a  variable,	so  that
     future  calls  to Tcl_GetVar or Tcl_GetVar2 for the variable will return an
     error.  The arguments to these procedures are treated in the  same  way  as
     the  arguments  to Tcl_GetVar and Tcl_GetVar2.  If the variable is success-
     fully removed then TCL_OK is returned.  If the variable cannot  be  removed
     because  it does not 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.

SEE ALSO
     Tcl_GetObjResult, Tcl_GetStringResult, Tcl_TraceVar

KEYWORDS
     array, get variable, interpreter, scalar, set, unset, value, variable

Tcl				       8.1			   Tcl_SetVar(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=Tcl_SetVar.tcl86&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help