Provided by: alliance_5.1.1-1.1_amd64 bug

NAME

        addrdsinsrec - adds a rectangle to an instance

SYNOPSYS

       #include"rdsnnn.h"
        rdsrec_list ∗addrdsinsrec( Instance, Name, Layer, X, Y, Dx, Dy )
          rdsins_list ∗Instance;
          char        ∗Name;
          char         Layer;
          long         X;
          long         Y;
          long         Dx;
          long         Dy;

PARAMETER

       Instance            The instance which contains the rectangle to add.

       Name                Name of the rectangle to add.

       Layer               Layer of the rectangle to add.

       X,Y,DX,DY           Dimensions of the the rectangle to add.

DESCRIPTION

       This  function  creates an adds a rectangle to an instance. The size of the user structure
       to add (if if exists) next to the structure rdsrec_list is defined by the  field  SIZE  of
       the  instance  which has to contain the rectangle. The rectangle is chained to the head of
       the rectangles's list associated to the  defined  layer  in  parameters  of  the  function
       addrdsinsrec(). The fields of the rectangle structure are modified as follows :

       The field NAME is set to ´Name´.
       The field X is set to ´X´.
       The field Y is set to ´Y´.
       The field DX is set to ´Dx´.
       The field DY is set to ´Dy´.
       The field FLAGS is modified with the value ´Layer´.

       Note :

       - This function uses MBK namealloc() function.

       -   coordinates   of  the  rectangle  are  related  to  the  instance  before  geometrical
       transformation.

RETURN VALUE

       The pointer to the added rectangle. It is also the head of rectangles's list associated to
       the corresponding layer.

ERRORS

       "Rds202: rdsalloc error, can't continue !"
              it's impossible to allocate the memory size desired

EXAMPLE

               #include "mutnnn.h"
               #include "rdsnnn.h"
               #include "rtlnnn.h"
               typedef struct UserStruct
                {
                  char ∗STRING;
                  void ∗USER1;
                } UserStruct;
               # define POINTER_STRING(R)                                \
                                                                         \
                 (((UserStruct ∗)((char ∗)(R)+sizeof(rdsrec_list)))->STRING )
                main()
                 {
                   rdsfig_list ∗RdsFigure;
                   rdsins_list ∗Instance;
                   rdsrec_list ∗Rectangle;
                   char Layer;
                   rdsrec_list ∗ScanRec;
                   mbkenv();
                   rdsenv();
                   loadrdsparam();
                   RdsFigure = addrdsfig ("core",sizeof ( UserStruct ) );
                   Instance  = addrdsins (RdsFigure,"na2_y","and2",RDS_NOSYM,8,6);
                   Rectangle = addrdsinsrec (Instance,"Alu1",RDS_ALU1,2,4,12,1);
                   POINTER_STRING( Rectangle ) = namealloc ("un_alu1");
                   /∗
                      Displays caracteristics of all the rectangles of the instance
                   ∗/
                  for ( Layer = 0 ; Layer < RDS_MAX_LAYER ; Layer ++ )
                   {
                     for (
                            ScanRec  = Instance->LAYERTAB[Layer] ;
                            ScanRec != (rdsrec_list ∗) NULL      ;
                            ScanRec  = ScanRec->NEXT
                         )
                      {
                        printf("Rectangle->LAYER = %s\n",
                           RDS_LAYER_NAME[GetRdsLayer(ScanRec)]);
                        printf("Rectangle->NAME   = %s\n",ScanRec->NAME);
                        printf("Rectangle->X      = %ld\n",ScanRec->X);
                        printf("Rectangle->Y      = %ld\n",ScanRec->Y);
                        printf("Rectangle->DX     = %ld\n",ScanRec->DX);
                        printf("Rectangle->DY     = %ld\n",ScanRec->DY);
                        printf("Rectangle->STRING = %s\n",POINTER_STRING(ScanRec));
                      }
                   }
                 }

SEE ALSO

       librds, delrdsinsrec, viewrdsins