---
name: "CallDel"
section: "3tcl"
platform: "linux"
package: "tcl8.3-doc"
version: "8.3.5-13"
release: "Debian 5.0 (Lenny)"
platforms: ["linux"]
url: "https://new.carta.tech/CallDel/3tcl"
---

# CallDel(3tcl)

Arrange for callback when interpreter is deleted

```

```

## NAME

Tcl\_CallWhenDeleted, Tcl\_DontCallWhenDeleted - Arrange for callback when interpreter is deleted

## SYNOPSIS

```
#include <tcl.h>

Tcl_CallWhenDeleted(interp, proc, clientData)

Tcl_DontCallWhenDeleted(interp, proc, clientData)
```

## ARGUMENTS

- Tcl\_Interp *\*interp* (in)

  Interpreter with which to associated callback.

- Tcl\_InterpDeleteProc *\*proc* (in)

  Procedure to call when *interp* is deleted.

- ClientData *clientData* (in)

  Arbitrary one-word value to pass to *proc*.

  ```

  ```

## DESCRIPTION

**Tcl\_CallWhenDeleted** arranges for *proc* to be called by **Tcl\_DeleteInterp** if/when *interp* is deleted at some future time.  *Proc* will be invoked just before the interpreter is deleted, but the interpreter will still be valid at the time of the call. *Proc* should have arguments and result that match the type **Tcl\_InterpDeleteProc**:

```
typedef void Tcl_InterpDeleteProc(
	ClientData clientData,
	Tcl_Interp *interp);
```

The *clientData* and *interp* parameters are copies of the *clientData* and *interp* arguments given to **Tcl\_CallWhenDeleted**. Typically, *clientData* points to an application-specific data structure that *proc* uses to perform cleanup when an interpreter is about to go away. *Proc* does not return a value.

**Tcl\_DontCallWhenDeleted** cancels a previous call to **Tcl\_CallWhenDeleted** with the same arguments, so that *proc* won't be called after all when *interp* is deleted. If there is no deletion callback that matches *interp*, *proc*, and *clientData* then the call to **Tcl\_DontCallWhenDeleted** has no effect.

## KEYWORDS

callback, delete, interpreter
