Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
ADDRDSINSREC(3) 	     RDS PHYSICAL FUNCTIONS		 ADDRDSINSREC(3)

NAME
      addrdsinsrec - adds a rectangle to an instance

SYNOPSIS
     #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;

PARAMETER
     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.

DESCRIPTION
     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 rectan-
     gle. The rectangle is chained to the head of the rectangles's list  associ-
     ated 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 geometri-
     cal transformation.

RETURN VALUE
     The  pointer  to  the  added rectangle. It is also the head of rectangles's
     list associated to the corresponding layer.

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;
		 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));
		    }
		 }
	       }

SEE ALSO
     librds, delrdsinsrec, viewrdsins

ASIM/LIP6			 October 1, 1997		 ADDRDSINSREC(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=addrdsinsrec&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help