00001 00019 #ifndef __FXU_H__ 00020 #define __FXU_H__ 00021 00022 #ifdef __cplusplus 00023 extern "C" { 00024 #endif 00025 00029 00030 #include "vec.h" 00031 00035 00039 00040 #ifndef __cplusplus 00041 #ifndef bool 00042 #define bool int 00043 #endif 00044 #endif 00045 00046 typedef struct FxuDataStruct Fxu_Data_t; 00047 00048 // structure for the FX input/output data 00049 struct FxuDataStruct 00050 { 00051 // user specified parameters 00052 bool fOnlyS; // set to 1 to have only single-cube divs 00053 bool fOnlyD; // set to 1 to have only double-cube divs 00054 bool fUse0; // set to 1 to have 0-weight also extracted 00055 bool fUseCompl; // set to 1 to have complement taken into account 00056 bool fVerbose; // set to 1 to have verbose output 00057 int nNodesExt; // the number of divisors to extract 00058 int nSingleMax; // the max number of single-cube divisors to consider 00059 int nPairsMax; // the max number of double-cube divisors to consider 00060 // the input information 00061 Vec_Ptr_t * vSops; // the SOPs for each node in the network 00062 Vec_Ptr_t * vFanins; // the fanins of each node in the network 00063 // output information 00064 Vec_Ptr_t * vSopsNew; // the SOPs for each node in the network after extraction 00065 Vec_Ptr_t * vFaninsNew; // the fanins of each node in the network after extraction 00066 // the SOP manager 00067 Extra_MmFlex_t * pManSop; 00068 // statistics 00069 int nNodesOld; // the old number of nodes 00070 int nNodesNew; // the number of divisors actually extracted 00071 }; 00072 00076 00080 00081 /*===== fxu.c ==========================================================*/ 00082 extern int Fxu_FastExtract( Fxu_Data_t * pData ); 00083 00084 #ifdef __cplusplus 00085 } 00086 #endif 00087 00088 #endif 00089 00093