---
name: "addrdsfigrec"
section: "3"
platform: "linux"
package: "alliance"
version: "5.1.1-3"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/addrdsfigrec"
---

# addrdsfigrec(3)

adds a rectangle to a figure

## NAME

 addrdsfigrec - adds a rectangle to a figure

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