Tcl\_UpVar(3) Tcl Library Procedures Tcl\_UpVar(3)

```

```

# [NAME](#NAME)

Tcl\_UpVar, Tcl\_UpVar2 - link one variable to another

# [SYNOPSIS](#SYNOPSIS)

```
#include <tcl.h>

int
Tcl_UpVar(interp, frameName, sourceName, destName, flags)

int
Tcl_UpVar2(interp, frameName, name1, name2, destName, flags)
```

# [ARGUMENTS](#ARGUMENTS)

Tcl\_Interp *\*interp* (in)

Interpreter containing variables; also used for error reporting.

const char *\*frameName* (in)

Identifies the stack frame containing source variable. May have any of the forms accepted by the **upvar** command, such as **#0** or **1**.

const char *\*sourceName* (in)

Name of source variable, in the frame given by *frameName*. May refer to a scalar variable or to an array variable with a parenthesized index.

const char *\*destName* (in)

Name of destination variable, which is to be linked to source variable so that references to *destName* refer to the other variable. Must not currently exist except as an upvar-ed variable.

int *flags* (in)

One of **TCL\_GLOBAL\_ONLY**, **TCL\_NAMESPACE\_ONLY** or 0; if non-zero, then *destName* is a global or namespace variable; otherwise it is local to the current procedure (or current namespace if no procedure is active).

const char *\*name1* (in)

First part of source variable's name (scalar name, or name of array without array index).

const char *\*name2* (in)

If source variable is an element of an array, gives the index of the element. For scalar source variables, is NULL.

```
    
```

# [DESCRIPTION](#DESCRIPTION)

**Tcl\_UpVar** and **Tcl\_UpVar2** provide the same functionality as the **upvar** command: they make a link from a source variable to a destination variable, so that references to the destination are passed transparently through to the source. The name of the source variable may be specified either as a single string such as **xyx** or **a(24)** (by calling **Tcl\_UpVar**) or in two parts where the array name has been separated from the element name (by calling **Tcl\_UpVar2**). The destination variable name is specified in a single string; it may not be an array element.

Both procedures return either **TCL\_OK** or **TCL\_ERROR**, and they leave an error message in the interpreter's result if an error occurs.

As with the **upvar** command, the source variable need not exist; if it does exist, unsetting it later does not destroy the link. The destination variable may exist at the time of the call, but if so it must exist as a linked variable.

# [KEYWORDS](#KEYWORDS)

linked variable, upvar, variable

7.4 Tcl

---

Document: Tcl_UpVar(3) from tcl 9.1.0-r1 (Chainguard OS)
Source: https://downloads.sourceforge.net/project/tcl/Tcl/9.1.0/tcl9.1.0-src.tar.gz
