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

# addptype(3)

create a ptype and add it to a ptype\_list

## NAME

addptype - create a **ptype** and add it to a **ptype\_list**

## SYNOPSYS

```
#include "mut.h"
ptype_list ∗addptype(pthead,type,ptdata)
ptype_list ∗pthead;
void ∗ptdata;
long type;
```

## PARAMETERS

- *pthead*

  Pointer to a **ptype** list

- *type*

  Flag indicating the pointer owner

- *ptdata*

  Generic pointer to any kind of information

## DESCRIPTION

**addptype** creates a new **ptype** element and adds it to the front of the list pointed to by *pthead*, and becomes itself the list head.\
 The **ptype\_list**s are mosty used to create lists of homogeneous elements in mbk, but also for trees, graphs, and so on.\
 The *type* argument indicates the pointer type, at the C type meaning, for its owner.\
 The *type*s allow to access the pointers with adequat cast, and for example to share informations in the *USER* fields of mbk structures. \
 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 **ptype** structure. For details on the structure, see [**ptype**(3)](/ptype/3.md).

## RETURN VALUE

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

## EXAMPLE

```
#include "mut.h"
#include "mph.h"
void corner(ptfig, name)
phfig_list ∗ptfig;
char ∗name;
{
phins_list ∗i = getphins(ptfig, name);
num_list ∗ptnum;
phfig_list ∗model;
	model = getphfig(i->FIGNAME);
	ptnum = addnum((num_list ∗)NULL, model->X2 - model->X1);
	ptnum = addnum(ptnum, model->Y2 - model->Y1);
	i->USER = addptype(i->USER, (long)PLACEABOX, (void ∗)ptnum);
}
```

## SEE ALSO

**mbk**(1), [**ptype**(3)](/ptype/3.md), [**freeptype**(3)](/freeptype/3.md), [**getptype**(3)](/getptype/3.md), [**delptype**(3)](/delptype/3.md).
