ptype - mbk list of typed pointers

       The ptype is used to save typed pointers in a list.  The use of this
       structure is strongly recommanded, when such a need occurs.  It is the
       case in the USER field of all mbk layout and netlist objects, where
       data specific to different proccessing may be accessed through this
       unique field. It is the charge of the user to give its pointers a type
       that will not collide with existing types.

       The declarations needed to work on ptype are available in the header
       file "/labo/include/mut315.h", where '315' is the actual mbk version.

       The following C structure describes the list of typed pointers :
              typedef struct ptype {
                 struct ptype     ∗NEXT;
                 void             ∗DATA;
                 long             TYPE;
              } ptype_list;

       NEXT                Pointer to the next ptype of the list.

       DATA                Generic pointer that may point where the user wants

       TYPE                Identifier of the user of the pointed data. One
                           shall not access someone else ptype since it
                           doesn't know what's in it. This means also that a
                           ptype user should free the space taken by its datas
                           since it is the only one to know how to do it.

       Remark 1:           a specialized memory allocator has been built in
                           order to create and free ptype_lists, so absolutly
                           avoid to create or free them an other way than
                           through the access functions.

       Remark 2:           Now a day, three tools are known to use the USER
                           field of some mbk structures :

                           VTIPARSER           the parser of vti physical
                                               format '.cp' files uses the
                                               phcon(3) USER field.

                           LOFIGCHAIN          the lofigchain function
                                               constructs a dual
                                               representation of the netlist
                                               in the USER field of the
                                               losig(3) structure.

                           PLACEABOX           Genlib's physical placement
                                               functions, in order to have
                                               model sizes in instances.  It
                                               uses the phins(3) USER field.

       mbk(1), addptype(3), freeptype(3), getptype(3), delptype(3).

       This tool is under development at the ASIM department of the LIP6
       We need your feedback to improve documentation and tools.

ASIM/LIP6                       October 1, 1997                       PTYPE(3)