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 namechain argument is a list of names, given in a chain_list. See chain(3) 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;
}