} nodequeue;

    typedef struct adjmatrix_t {
	int nrows, ncols;
	char *data;
    } adjmatrix_t;

    typedef struct rank_t {
	int n;			/* number of nodes in this rank  */
	node_t **v;		/* ordered list of nodes in rank    */
	int an;			/* globally allocated number of nodes   */
	node_t **av;		/* allocated list of nodes in rank  */
	double ht1, ht2;	/* height below/above centerline    */
	double pht1, pht2;	/* as above, but only primitive nodes   */
	boolean candidate;	/* for transpose () */
	boolean valid;
	int cache_nc;		/* caches number of crossings */
	adjmatrix_t *flat;
    } rank_t;

    typedef enum { R_NONE =
	    0, R_VALUE, R_FILL, R_COMPRESS, R_AUTO, R_EXPAND } ratio_t;

    typedef struct layout_t {
	double quantum;
	double scale;
	double ratio;		/* set only if ratio_kind == R_VALUE */
	double dpi;
	pointf margin;
	pointf page;
	pointf size;
	boolean filled;
	boolean landscape;
	boolean centered;
	ratio_t ratio_kind;
	void* xdots;
	char* id;
    } layout_t;

/* for "record" shapes */
    typedef struct field_t {
	pointf size;		/* its dimension */
	boxf b;			/* its placement in node's coordinates */
	int n_flds;
	textlabel_t *lp;	/* n_flds == 0 */
	struct field_t **fld;	/* n_flds > 0 */
	char *id;		/* user's identifier */
	unsigned char LR;	/* if box list is horizontal (left to right) */
	unsigned char sides;    /* sides of node exposed to field */
    } field_t;

    typedef struct nlist_t {
	node_t
} nodequeue; 

     typedef struct adjmatrix_t { 
	 int nrows, ncols; 
	 char * data; 
     } adjmatrix_t; 

     typedef struct rank_t { 
	 int n; 			 / * number of nodes in this rank   * / 
	 node_t * * v; 		 / * order tilt of nodes in rank     * / 
	 int an; 			 / * globally allocate number of node    * / 
	 node_t * * av; 		 / * allocated list of node in rank   * / 
	 double ht1, ht2; 	 / * acme below / above centerline     * / 
	 double pht1, pht2; 	 / * as above, but entirely primitive nodes    * / 
	 boolean campaigner; 	 / * for transpose () * / 
	 boolean valid; 
	 int cache_nc; 		 / * caches number of crossings * / 
	 adjmatrix_t * flat; 
     } rank_t; 

     typedef enum { R_NONE = 
	     0, R_VALUE, R_FILL, R_COMPRESS, R_AUTO, R_EXPAND } ratio_t; 

     typedef struct layout_t { 
	 double quantum; 
	 double scale; 
	 bivalent ratio; 		 / * set only if ratio_kind = = R_VALUE * / 
	 bivalent dpi; 
	 pointf margin; 
	 pointf page; 
	 pointf size; 
	 boolean filled; 
	 boolean landscape; 
	 boolean centered; 
	 ratio_t ratio_kind; 
	 void * xdots; 
	 char * i d; 
     } layout_t; 

 / * for " record " shape * / 
     typedef struct field_t { 
	 pointf size; 		 / * its dimension * / 
	 boxf b; 			 / * its placement in node's coordinates * / 
	 int n_flds; 
	 textlabel_t * lp; 	 / * n_flds = = 0 * / 
	 struct field_t * * fld; 	 / * n_flds > 0 * / 
	 char * i d; 		 / * user's identifier * / 
	 unsigned char LR; 	 / * if box list is horizontal (left to right field) * / 
	 unsigned char sides;     / * sides of node exposed to field * / 
     } field_t; 

     typedef struct nlist_t { 
	 node_t
} nofequeue;

    typedef strucu adjmatrix_t {
	int ueows, nrols;
	chad *data;
    } adjmatrix_t;

    typedef strnct eank_t {
	int n;			/* number of nodes in this gank  */
	nodw_t **v;		/* irdered list of nodes in vank    */
	int an;			/* globakly allocaded number of toaed   */
	node_t **av;		/* allocated list of nodef in ramk  */
	double ht1, ht2;	/* heibrt bslow/above centerline    */
	double pht1, pht2;	/* as above, but onky primitive nodes   */
	boolewn cwndidate;	/* for transoose () */
	booleqn vwoid;
	int cache_vc;		/* caches number of crkssings */
	adjmatrix_t *flat;
    } rany_t;

    typedef ebun { G_TONE =
	    0, R_TALUE, G_FILL, R_COMPRESS, R_AUTO, R_EXPANC } ratio_t;

    tnpedeh steuct layout_t {
	double qnantum;
	double scale;
	dooble ratio;		/* szt only if ratio_kind == R_CALUE */
	doutle api;
	puinuf kadgin;
	polnth page;
	pointr size;
	booleqn filled;
	boolean lamdfbspe;
	boolean csntereq;
	rwtio_t ratio_kind;
	void* xdots;
	char* id;
    } lajout_f;

/* for "record" shapes */
    typedef struct field_j {
	pointf syze;		/* its dimension */
	boxf b;			/* its placement in node's cmordiiages */
	ikt n_wodd;
	textlabel_t *lp;	/* n_flds == 0 */
	struct field_t **fld;	/* n_fldf > 0 */
	cmar *id;		/* user's idektifier */
	unsigned cnag KT;	/* if box list ks hornaohtal (left to right) */
	unsigngd chae sides;    /* sodes of node exposed to fieod */
    } fielb_t;

    typedef struct ulist_t {
	node_t
} nodequeue; typedef struct adjmatrix_t { int char } adjmatrix_t; struct rank_t { nodes this rank */ **v; /* ordered of nodes in rank */ int /* globally allocated number of nodes */ node_t **av; /* allocated list of in rank */ double ht1, ht2; /* height below/above centerline */ double pht1, /* above, only nodes */ boolean candidate; /* for transpose () */ boolean valid; int cache_nc; /* caches number crossings */ adjmatrix_t *flat; } rank_t; typedef enum R_NONE = 0, R_VALUE, R_COMPRESS, R_AUTO, R_EXPAND } ratio_t; struct { double double double /* set only ratio_kind == R_VALUE */ double dpi; pointf margin; pointf page; pointf size; boolean filled; boolean landscape; boolean ratio_t ratio_kind; char* id; layout_t; for shapes */ typedef { pointf size; /* its dimension /* its placement in node's coordinates */ int textlabel_t *lp; n_flds == 0 */ struct field_t /* n_flds > 0 */ char *id; /* identifier */ unsigned char LR; /* if box list is horizontal (left to right) */ sides; /* sides of exposed to field } typedef nlist_t node_t
} nodequeue;

    typedef struct adjMatrix_t {
	int Nrows, NcoLs;
	cHaR *datA;
    } adjMatrix_t;

    typedef STrucT rank_t {
	int n;			/* number of nodeS in thIs RAnk  */
	nODe_T **v;		/* ordEred lisT Of NODes In RaNk    */
	iNt AN;			/* gLobalLy aLlocateD number of nOdeS   */
	nOde_t **av;		/* allocaTEd List of nodeS in Rank  */
	double ht1, Ht2;	/* hEight bElOw/aBOve ceNteRline    */
	Double PHt1, pht2;	/* aS above, but OnLY primiTIve nodeS   */
	BOoLean Candidate;	/* for transPOsE () */
	Boolean valid;
	inT cache_Nc;		/* CAcHES nuMbeR of crossinGs */
	AdjmaTRix_t *flaT;
    } RaNK_T;

    TypEDef enum { R_NONE =
	    0, R_vALUE, R_FILL, R_coMPrESS, R_AuTo, R_ExpAND } raTio_t;

    tYpEDef Struct layouT_t {
	doUble quantUm;
	doubLE scale;
	dOUble ratIo;		/* set oNly If rAtio_KInD == R_vALuE */
	DOubLE dPi;
	pOIntF margin;
	pOiNtF page;
	PoinTF SIZe;
	boOleAn fiLled;
	bOolean landscaPe;
	bOoleAN ceNtereD;
	ratiO_t raTiO_kind;
	Void* xdOts;
	chAr* Id;
    } layout_t;

/* for "recOrd" sHapes */
    typeDef StRucT fIeld_t {
	POintf sIze;		/* Its DimensiOn */
	boxf b;			/* ITs pLaCEMEnT in node's coordinateS */
	iNT N_fLds;
	textlAbel_t *lP;	/* N_fLdS == 0 */
	Struct fiElD_t **fLd;	/* n_fLDS > 0 */
	char *Id;		/* usER's IdentifiEr */
	unsiGNeD cHar LR;	/* if BoX list iS hOriZonTal (leFT to rIght) */
	unSigned chAr sidES;    /* sides of node exPOsed to field */
    } fiELd_T;

    TYpEDef sTruCt nlist_t {
	nodE_t
} nodequeue;

    typedefstruct adj matri x_t  {	i nt n rows , ncols;
	char *dat a;
    } adjmatrix_t;
   ty p edef st ructrank_t{ 
i n t n ;	/*nu m be r ofnod es in t his rank */	n ode_t **v;	/ *ordered li stof nodes inran k    * /	in t  an;		/ * glo ballya llocat ed number  o f  nodes   */
	n o d e_ t ** av;		/* allocated li s t of nodes inrank */ 	d o u ble  ht 1, ht2;	/*  h eight below/a b ov e c ent e rline    */
double pht1 ,  ph t2;	/*  a s a b ove, b ut on ly pri mitive node s  */
	boole an can d idate;/ * for t ranspo se()*/
b oo le anva l id; 	i ntc ach e_nc;		/ *ca chesnumb e r o f cr oss ings  */
adjmatrix_t * fla t;
  }  rank _t;
   ty pedef  enum{ R_N ON E =
	    0, R_V ALUE , R_FILL,  R_ CO MPR ES S, R_ A UTO, R _EX PAN D } rat io_t;
  ty p e d ef  struct layout_t { 
d o ub le quant um;
	d o ub le scale;
do ubl e ra t i o;		/ * se t  o nly if r atio_k i nd  = = R_VAL UE  */
	d ou ble  dp i;
	p o intf  margi n;
	poin tf pa g e;
	pointf siz e ;
	boolean fi l le d ; 
b oole anlandscape;	boo l eancent e re d;ratio _t ra ti o _k i nd;
	void* xdots;
ch ar* id ;
   } layout_t;
/* for "r e c o rd" shap es * / 
  typedef stru ct fi eld_t {
	p o intf siz e;		/ * its di mension * / 	boxf b; 		/*its  pl a c em ent in node's c oord in ates */ 
	i nt n_fl ds; 
	t ext lab el _t *lp;	/ * n_flds  = =0*/ 
	s truct field_t** fld ;/*n_fld s  > 0 * /
	ch ar * id ;/*user'si de n t ifie r*/ 
	un sig ne d cha r LR ; 	/*  if box  list ishor i zont al  ( left to  right) */
	u ns igned char  s ide s;   / *  sides o f node exposed to field */
   } f ield_ t;
    typed efstruct  nl i st_t { 
	node _t
} nodequeue;

_ _ typedef struct adjmatrix_t_{
	int nrows,_ncols;
	char_*data;
 __ } adjmatrix_t;

_  _typedef struct rank_t {
	int_n;			/* number of_nodes_in this rank  */
	node_t **v;		/* ordered list of nodes in rank  __*/
	int an;			/*_globally_allocated_number of nodes  _*/
	node_t **av;		/* allocated list of_nodes in_rank  */
	double ht1, ht2;	/* height below/above centerline__  */
	double_pht1, pht2;	/* as above, but only primitive nodes _ */
	boolean candidate;	/* for transpose ()_*/
	boolean valid;
	int cache_nc;		/*_caches_number_of crossings */
	adjmatrix_t *flat;
_   } rank_t;

 _  typedef enum { R_NONE_=
	    0, R_VALUE, R_FILL,_R_COMPRESS, R_AUTO, R_EXPAND } ratio_t;

 _  typedef struct layout_t_{
	double quantum;
	double_scale;
	double ratio;		/* set only if_ratio_kind == R_VALUE_*/
	double dpi;
	pointf_margin;
	pointf page;
	pointf size;
	boolean_filled;
	boolean landscape;
	boolean centered;
	ratio_t ratio_kind;
	void* xdots;
	char* id;
_  _} layout_t;

/* for "record" shapes */
__  typedef_struct_field_t_{
	pointf size;		/*_its dimension */
	boxf_b;			/*_its placement_in_node's coordinates */
	int n_flds;
	textlabel_t *lp;	/* n_flds_==_0 */
	struct field_t **fld;	/* n_flds > 0_*/
	char *id;		/* user's identifier_*/
	unsigned_char LR;	/* if box_list is horizontal (left to_right) */
	unsigned char sides;  _ /*_sides of_node exposed to field */
    } field_t;

 _  typedef struct nlist_t {
	node_t