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

# addlosig(3)

create a logical signal

## NAME

addlosig - create a logical signal

## SYNOPSYS

```
#include "mlo.h"
losig_list ∗addlosig(ptfig, index, namechain, type)
lofig_list ∗ptfig;
long index;
chain_list ∗namechain;
char type;
```

## PARAMETERS

- *ptfig*

  Pointer to the figure in which the signal should be added

- *index*

  Signal index

- *namechain*

  List of names of the signal

- *type*

  Signal type

## DESCRIPTION

**addlosig** creates a new signal, and adds it to the list of signals pointed to by *ptfig-\>LOSIG*. The new signal is  added in front of the list, and becomes itself the list head.\
 The *type* parameter can take two values :

- **EXTERNAL**

  The signal is attached to at least one connector of the figure.

- **INTERNAL**

  The signal is only attached to instance or transistor connector.

The *index* and *type* arguments fill the *INDEX* and *TYPE* fields of the [**losig**(3)](/losig/3.md) structure. The index is the signal identifier, so it should be unique at a given hierarchical level.\
 The *namechain* argument is a list of names, given in a **chain\_list**. See [**chain**(3)](/chain/3.md) for details.

## RETURN VALUE

**addlosig** returns a pointer to the newly created signal.

## ERRORS

**"∗∗∗ mbk error ∗∗∗ addlosig impossible signal** *index* **already exist** **in figure** *ptfig-\>NAME***"**

The *index* is already used in an other signal, and since it's the signal identifier, it can't be.

## EXAMPLE

```
#include "mlo.h"
losig_list ∗merge_and_create(pt, s0, s1) /∗ merge two signal in a third ∗/
lofig_list ∗pt;
losig_list ∗s0, ∗s1;
{
chain_list ∗c;
losig_list ∗s;
long max_index;
	/∗ merge names ∗/
	for (c = s0->NAMECHAIN; c; c = c->NEXT)
		s1->NAMECHAIN = addchain(s1->NAMECHAIN, c);
	/∗ find maximum index ∗/
	for (s = pt->LOSIG; s; s = s->NEXT)
		if (max_index < s->INDEX)
			max_index = s->INDEX;
	s = addlosig(pt, ++max_index, s1->NAMECHAIN,
			s0->TYPE == EXTERNAL || s1->TYPE == EXTERNAL ?
			EXTERNAL : INTERNAL);
	dellosig(pt, s0);
	dellosig(pt, s1);
	return s;
}
```

## SEE ALSO

**mbk**(1), [**lofig**(3)](/lofig/3.md), [**losig**(3)](/losig/3.md), [**getlosig**(3)](/getlosig/3.md), [**dellosig**(3)](/dellosig/3.md).
