addrdsinsrec - adds a rectangle to an instance
See the file man1/alc_origin.1.
#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;
- 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.
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.
The pointer to the added rectangle. It is also the head of
rectangles's list associated to the corresponding layer.
"Rds202: rdsalloc error, can't continue !"
it's impossible to allocate the memory size desired
#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));
}
}
}
librds, delrdsinsrec, viewrdsins
See the file man1/alc_bug_report.1.