/****************************************************************************
*	Fonction de calcul de poid par bdd pour FSM .
*
*	version de : 30/03/92 .
****************************************************************************/
#include <stdio.h>
#include <math.h>
#include MUT_H
#include LOG_H
#include "../syf/syf_muse.h"
#include "../util/util.h"

int numberNodeMultiBdd(tabBdd)
pNode *tabBdd ;
{
int i;
pNode bdd;
int numberNode;
numberNode = 0 ;

for(i = 0; tabBdd[i] != NULL; i++)
	{
	bdd = tabBdd[i] ;
	numberNode = numberNode + numNode(bdd) ;
	}
for(i = 0; tabBdd[i] != NULL; i++)
	markBdd(tabBdd[i],0) ;
return(numberNode);
} 

/***************************************/

int numNode(bdd)
pNode bdd ;
{
int numberNode = 0 ;

if((bdd == one) || (bdd == zero))
	return(0) ;

if(bdd->mark == 1)
	{
	numberNode += 1+ numNode(bdd->high) ;
	numberNode += numNode(bdd->low) ;
	}
else 
	{
	numberNode +=  numNode(bdd->high) ;
	numberNode += numNode(bdd->low) ;
	bdd->mark = 1 ;
	}
return(numberNode) ;
}
