Provided by: alliance_5.0-20110203-4_amd64 bug


       addlosig - create a logical signal


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


       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


       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
       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
       The index and type arguments fill the INDEX and TYPE fields of the losig(3) 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) for


       addlosig returns a pointer to the newly created signal.


       "∗∗∗ 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.


       #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;


       mbk(1), lofig(3), losig(3), getlosig(3), dellosig(3).