NAME¶
addrdsrecwindow - adds a rectangle in the windowing of rds structure.
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 "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
BUG REPORT¶
This tool is under development at the
ASIM department of the
LIP6
laboratory.
We need your feedback to improve documentation and tools.