---
name: "addchain"
section: "3"
platform: "linux"
package: "alliance"
version: "5.1.1-3"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/addchain"
---

# addchain(3)

create a chain and add it to a list

## NAME

addchain - create a **chain** and add it to a list

## SYNOPSYS

```
#include "mut.h"
chain_list ∗addchain(pthead, ptdata)
chain_list ∗pthead;
void ∗ptdata;
```

## PARAMETERS

- *pthead*

  Pointer to a **chain\_list**

- *ptdata*

  Generic pointer to any kind of information

## DESCRIPTION

**addchain** creates a new **chain** element and adds it to the front of the list pointed to by *pthead*, and becomes itself the list head.\
 The **chain\_list**s are mosty used to create temporary lists of homogeneous elements, for binary trees, and so on.\
 The *ptdata* points to any kind of list or may itself be a value, if proper cast is performed at compilation time, and fills the *DATA* field of the **chain** structure. For details on the structure, see [**chain**(3)](/chain/3.md).

## RETURN VALUE

**addchain** returns a pointer to the new head of list.

## EXAMPLE

```
#include "mut.h"
#include "mlo.h"
chain_list ∗get_external_connectors(ptfig)
lofig_list ∗ptfig;
{
locon_list ∗pt = ptfig->LOCON;
chain_list ∗c = NULL; /∗ initialized for regularity ∗/
	while (pt) {
		if (pt->TYPE == EXTERNAL)
			c = addchain(c, (void ∗)pt)
		pt = pt->NEXT;
	}
	return c;
}
```

## SEE ALSO

**mbk**(1), [**chain**(3)](/chain/3.md), [**freechain**(3)](/freechain/3.md), [**delchain**(3)](/delchain/3.md).
