addrdsfigrec

ADDRDSFIGREC(3)             RDS PHYSICAL FUNCTIONS             ADDRDSFIGREC(3)



NAME
        addrdsfigrec - adds a rectangle to a figure


ORIGIN
       This software belongs to the  ALLIANCE CAD SYSTEM developed by the ASIM
       team at LIP6 laboratory of Université Pierre et Marie CURIE, in Paris,
       France.

       Web : http://asim.lip6.fr/recherche/alliance/
       E-mail : alliance-users@asim.lip6.fr


SYNOPSYS
       #include "rdsnnn.h"
       rdsrec_list ∗addrdsfigrec( Figure, Name, Layer, X, Y, Dx, Dy )
                      rdsfig_list ∗Figure;
                      char        ∗Name;
                      char         Layer;
                      long         X;
                      long         Y;
                      long         Dx;
                      long         Dy;

PARAMETER
       Figure              figure 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 rectangle to add.

DESCRIPTION
       addrdsfigrec creates an adds a rectangle in the figure called Figure.
       The size of the user structure to add next to the structure rdsrec_list
       (if it exists) is defined by the field SIZE of the figure who has to
       contain the rectangle. The rectangle is added in front of the list, and
       becomes itself the list head associated to the defined layer in
       parameters of the function.  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.

RETURN VALUE
       addrdsfigrec returns a pointer to the newly added rectangle.

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;
                   rdsrec_list ∗Rectangle;
                   char Layer;
                   rdsrec_list ∗ScanRec;
                   mbkenv();
                   rdsenv();
                   loadrdsparam();
                   RdsFigure = addrdsfig ("core",sizeof ( UserStruct ) );
                   Rectangle = addrdsfigrec (RdsFigure,
                                                   "Alu1",RDS_ALU1,
                                                   2,4,12,1);
                   POINTER_STRING(Rectangle) = namealloc ("rectangle_alu1");
                   ...
                   /∗
                      print caracteristics of all rectangles of the Rds figure
                   ∗/
                   for ( Layer = 0 ; Layer < RDS_MAX_LAYER ; Layer ++ )
                    {
                      for (
                             ScanRec  = RdsFigure->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, delrdsfigrec, viewrdsfig




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






ASIM/LIP6                       October 1, 1997                ADDRDSFIGREC(3)