/*  justify.c  */

#include "../ETree.h"

/*--------------------------------------------------------------------*/
/*
   ------------------------------------------------------------
   left-justify a tree by subtree size
   children are linked in ascending order of their subtree size

   created -- 96jan11, cca
   ------------------------------------------------------------
*/
void
ETree_leftJustify (
   ETree   *etree
) {
/*
   ---------------
   check the input
   ---------------
*/
if ( etree == NULL || etree->tree == NULL ) {
   fprintf(stderr, "\n fatal error in ETree_leftJustify(%p)"
           "\n bad input\n", etree) ;
   exit(-1) ;
}
Tree_leftJustify(etree->tree) ;
 
return ; }

/*--------------------------------------------------------------------*/
/*
   ------------------------------------------------------
   left-justify a etree by a metric
   children are linked in ascending order of their metric

   created -- 96jan11, cca
   ------------------------------------------------------
*/
void
ETree_leftJustifyI (
   ETree   *etree,
   IV      *metricIV
) {
/*
   ---------------
   check the input
   ---------------
*/
if ( etree == NULL 
   || etree->nfront <= 0
   || etree->nvtx <= 0
   || metricIV == NULL 
   || IV_size(metricIV) != etree->nfront
   || IV_entries(metricIV) == NULL ) {
   fprintf(stderr, "\n fatal error in ETree_leftJustifyI(%p,%p)"
           "\n bad input\n", etree, metricIV) ;
   exit(-1) ;
}
Tree_leftJustifyI(etree->tree, metricIV) ;
 
return ; }

/*--------------------------------------------------------------------*/
/*
   ------------------------------------------------------
   left-justify a etree by a metric
   children are linked in ascending order of their metric

   created -- 96jan11, cca
   ------------------------------------------------------
*/
void
ETree_leftJustifyD (
   ETree     *etree,
   DV        *metricDV
) {
/*
   ---------------
   check the input
   ---------------
*/
if ( etree == NULL 
   || etree->nfront <= 0
   || etree->nvtx <= 0
   || metricDV == NULL 
   || DV_size(metricDV) != etree->nfront
   || DV_entries(metricDV) == NULL ) {
   fprintf(stderr, "\n fatal error in ETree_leftJustifyD(%p,%p)"
           "\n bad input\n", etree, metricDV) ;
   exit(-1) ;
}
Tree_leftJustifyD(etree->tree, metricDV) ;
 
return ; }

/*--------------------------------------------------------------------*/


syntax highlighted by Code2HTML, v. 0.9.1