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

# addrdsrecwindow(3)

adds a rectangle in the windowing of rds structure.

## NAME

addrdsrecwindow - adds a rectangle in the windowing of rds structure.

## SYNOPSYS

```
#include "rwinnn.h"
 void addrdsrecwindow( Rectangle, RdsWindow )
    rdsrec_list ∗Rectangle;
    rdswindow   ∗RdsWindow;
```

## PARAMETER

- *Rectangle*

  The rectangle to add to the windowing.

- *RdsWindow*

  The head of the windowing which has to contain the rectangle.

## DESCRIPTION

The *addrdsrecwindow* function inserts a rdsrec\_list rectangle structure in the windowing of the rds structure. The rectangle is added in one or many windows of the table (it depends on his dimensions). The field ´USER´ of the rectangle is used to point to the list of windows which contains the rectangle. So, the field ´USER´ has to be saved in an added structure to the rdsrec\_list structure if librfm functions are used because somes use the field ´USER´ to link rectangles (see librds about field ´USER´).

- *Note*

  If the rectangle is contained in only one window, then the field ´USER´ points to a "rdswin\_list" window structure.\
   If the rectangle is contained in many windows, the field ´USER´ points to a "rdsrecwin\_list" structure which is a list which contains windows.

To know if a rectangle belongs to one or many windows, use the macro *IsRdsOneWindow* defined in librwi.

## RETURN VALUE

none

## ERRORS

**"Rds202: rdsalloc error, can't continue !"**

it's impossible to allocate the memory size desired

## EXAMPLE

```
        #include "mutnnn.h"
        #include "rdsnnn.h"
        #include "rwinnn.h"
        #include "rtlnnn.h"
        # define POINTER_LINKREC(R)                               \
                                                                  \
          (((UserStruct ∗)((char ∗)(R)+sizeof(rdsrec_list)))->LINKREC )
        typedef struct UserStruct
          {
            void ∗LINKREC;
          } UserStruct;
        main()
          {
            rdsfig_list ∗Figure;
            rdsrec_list ∗Rectangle;
            rdswindow ∗RdsWindow;
            rdswin_list ∗ScanWin;
            rdsrecwin_list ∗ScanRecWin;
             mbkenv();
             rdsenv();
             loadrdsparam();
             Figure = addrdsfig( "core",sizeof ( UserStruct ) );
             Rectangle =
               addrdsfigrec(Figure,"Alu1",RDS_ALU1,2,4,5,1);
             /∗ Using the field ´USER´ ∗/
             Rectangle->USER = Rectangle;
            . . . .
            RdsWindow = allocrdswindow();
            RdsWindow->XMIN = -200;
            RdsWindow->YMIN = -200;
            RdsWindow->XMAX =  200;
            RdsWindow->YMAX =  200;
            RdsWindow->DX   =  4;
            RdsWindow->DY   =  4;
            RdsWindow->SIDE =  100;
            RdsWindow->SIZE =  RdsWindow->DX ∗ RdsWindow->DY ;
            RdsWindow->WINTAB = allocrdswin( RdsWindow->SIZE );
            /∗ Save the field ´USER´ of the rectangle ∗/
            POINTER_LINKREC(Rectangle) = Rectangle->USER;
            /∗ ∗/ addrdsrecwindow( Rectangle, RdsWindow );
            /∗ windows associated to a rectangle are pointed by the
               field ´USER´ of the rectangle ∗/
            /∗ getting windows (pointer ∗ScanWin) of a rectangle ∗/
            if ( IsRdsOneWindow(Rectangle) )
             {
               ScanWin = (rdswin_list ∗) Rectangle->USER;
             }
            else
             {
               ScanRecWin = Rectangle->USER;
               while ( ScanRecWin != NULL )
                {
                  ScanWin = (rdswin_list ∗) (ScanRecWin)->WINDOW;
                  ScanRecWin = ScanRecWin->NEXT;
                }
             }
            . . .
          }
```

## SEE ALSO

**librwi,** **delrdsrecwindow**
