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