You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

180 lines
6.2 KiB

/**CFile**********************************************************************
FileName [dddmpConvert.c]
PackageName [dddmp]
Synopsis [Conversion between ASCII and binary formats]
Description [Conversion between ASCII and binary formats is presently
supported by loading a BDD in the source format and storing it
in the target one. We plan to introduce ad hoc procedures
avoiding explicit BDD node generation.
]
Author [Gianpiero Cabodi and Stefano Quer]
Copyright [
Copyright (c) 2004 by Politecnico di Torino.
All Rights Reserved. This software is for educational purposes only.
Permission is given to academic institutions to use, copy, and modify
this software and its documentation provided that this introductory
message is not removed, that this software and its documentation is
used for the institutions' internal research and educational purposes,
and that no monies are exchanged. No guarantee is expressed or implied
by the distribution of this code.
Send bug-reports and/or questions to:
{gianpiero.cabodi,stefano.quer}@polito.it.
]
******************************************************************************/
#include "dddmpInt.h"
/*---------------------------------------------------------------------------*/
/* Stucture declarations */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Type declarations */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Variable declarations */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Macro declarations */
/*---------------------------------------------------------------------------*/
/**AutomaticStart*************************************************************/
/*---------------------------------------------------------------------------*/
/* Static function prototypes */
/*---------------------------------------------------------------------------*/
/**AutomaticEnd***************************************************************/
/*---------------------------------------------------------------------------*/
/* Definition of exported functions */
/*---------------------------------------------------------------------------*/
/**Function********************************************************************
Synopsis [Converts from ASCII to binary format]
Description [Converts from ASCII to binary format. A BDD array is loaded and
and stored to the target file.]
SideEffects [None]
SeeAlso [Dddmp_Bin2Text()]
******************************************************************************/
int
Dddmp_Text2Bin (
char *filein /* IN: name of ASCII file */,
char *fileout /* IN: name of binary file */
)
{
DdManager *ddMgr; /* pointer to DD manager */
DdNode **roots; /* array of BDD roots to be loaded */
int nRoots; /* number of BDD roots */
int retValue;
ddMgr = Cudd_Init(0,0,CUDD_UNIQUE_SLOTS,CUDD_CACHE_SLOTS,0);
if (ddMgr == NULL) {
return (0);
}
nRoots = Dddmp_cuddBddArrayLoad(ddMgr,DDDMP_ROOT_MATCHLIST,NULL,
DDDMP_VAR_MATCHIDS,NULL,NULL,NULL,
DDDMP_MODE_TEXT,filein,NULL,&roots);
Dddmp_CheckAndGotoLabel (nRoots<=0,
"Negative Number of Roots.", failure);
retValue = Dddmp_cuddBddArrayStore (ddMgr,NULL,nRoots,roots,NULL,
NULL,NULL,DDDMP_MODE_BINARY,DDDMP_VARIDS,fileout,NULL);
Dddmp_CheckAndGotoLabel (retValue<=0,
"Error code returned.", failure);
Cudd_Quit(ddMgr);
return (1);
failure:
printf("error converting BDD format\n");
Cudd_Quit(ddMgr);
return (0);
}
/**Function********************************************************************
Synopsis [Converts from binary to ASCII format]
Description [Converts from binary to ASCII format. A BDD array is loaded and
and stored to the target file.]
SideEffects [None]
SeeAlso [Dddmp_Text2Bin()]
******************************************************************************/
int
Dddmp_Bin2Text (
char *filein /* IN: name of binary file */,
char *fileout /* IN: name of ASCII file */
)
{
DdManager *ddMgr; /* pointer to DD manager */
DdNode **roots; /* array of BDD roots to be loaded */
int nRoots; /* number of BDD roots */
int retValue;
ddMgr = Cudd_Init(0,0,CUDD_UNIQUE_SLOTS,CUDD_CACHE_SLOTS,0);
if (ddMgr == NULL) {
return (0);
}
nRoots = Dddmp_cuddBddArrayLoad(ddMgr,DDDMP_ROOT_MATCHLIST,NULL,
DDDMP_VAR_MATCHIDS,NULL,NULL,NULL,
DDDMP_MODE_BINARY,filein,NULL,&roots);
Dddmp_CheckAndGotoLabel (nRoots<=0,
"Negative Number of Roots.", failure);
retValue = Dddmp_cuddBddArrayStore (ddMgr,NULL,nRoots,roots,NULL,
NULL,NULL,DDDMP_MODE_TEXT,DDDMP_VARIDS,fileout,NULL);
Dddmp_CheckAndGotoLabel (retValue<=0,
"Error code returned.", failure);
Cudd_Quit(ddMgr);
return (1);
failure:
printf("error converting BDD format\n");
Cudd_Quit(ddMgr);
return (0);
}
/*---------------------------------------------------------------------------*/
/* Definition of internal functions */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Definition of static functions */
/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/* Static function prototypes */
/*---------------------------------------------------------------------------*/