00001 #ifndef DSD_INTERFACE 00002 #define DSD_INTERFACE 00003 00004 #include "DSD.h" 00005 #include "DSDManager.h" 00006 #include "DSDDecompose.h" 00007 #include "DSDManipulations.h" 00008 #include "DSDUtilities.h" 00009 00015 #define RECOMMENDATION_DEFAULT 1000000 00016 00017 00022 DSDManager* DSD_Init(DdManager* manager, int_32 recommendation_size); 00023 void DSD_Quit(DSDManager *manager); /*free resources*/ 00024 00029 DSDNode *DSD_Create(DSDManager* manager, DdNode* f); 00030 00034 void DSD_RecursiveDeref(DSDManager *manger, DSDNode * dsd_node); 00035 00040 void DSD_Ref(DSDManager *manager, DSDNode *dsd_node); 00041 00046 void DSD_Deref(DSDManager *manager, DSDNode *dsd_node); 00047 00048 00049 00054 DdNode * get_symbolic_kernel(DSDNode* dsd_node); 00055 00059 DdNode * get_bdd(DSDNode* dsd_node); 00060 00066 int_32 Get_Type(DSDNode* dsd_node); 00067 00071 int_32 get_num_actuals(DSDNode* dsd_node); /*return -1 on error*/ 00072 00078 DSDNode* Get_X_Input(DSDNode* dsd_node, int index); /*1st actual function*/ 00079 00084 void mark_decomposition(DSDNode *dsd_node); 00085 00089 void unmark_decomposition(DSDNode *dsd_node); 00090 00095 int is_marked(DSDNode *dsd_node); 00096 00099 void Decomposition_Print(DSDNode * dsd_node); 00100 00104 void Recursive_Decomposition_Print(DSDNode * dsd_node); 00105 00106 00107 void load_arrays(DSDManager *manager, DSDNode *result); 00108 void print_stats(DSDManager* manager); 00109 void count_unique(DSDManager* manager, DSDNode *node); 00110 void update_blocks(DSDManager *manager, DSDNode *result); 00111 void validate_deref(DSDManager *manager); 00112 void check_one(DSDNode *node); 00113 00114 00115 00116 00117 00118 #endif