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
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 */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
|