00001 #ifndef DSD_UTILITIES 00002 #define DSD_UTILITIES 00003 00004 #include "DSD.h" 00005 #include "DSDManager.h" 00006 #include "DSDInterface.h" 00007 00012 DdNode *symbolic_merger(DdManager *manager, DdNode *base, DdNode *branch, DdNode *top_func); 00013 00018 int_32 __Get_Input_Count(DSDNode* dsd_node); 00019 00025 DSDNode* __Get_First_Input(DSDNode* dsd_node); 00026 00030 ActualNode *list_intersection(DdManager *manager, ActualNode *list1, ActualNode *list2, int *size); 00031 00036 ActualNode *list_residue(DdManager *manager, ActualNode *list1, ActualNode *list2, int *size); 00037 00041 int node_exists(ActualNode *list1, DSDNode *node); 00042 00047 int canonical_var(DSDNode *node); 00048 00054 void set_canonical_var(DSDNode *node); 00055 00060 DdNode *symbolic_or(DdManager *manager, DSDNode *node); 00061 00066 DdNode *symbolic_xor(DdManager *manager, DSDNode *node); 00067 00072 DdNode *symbolic_mux(DdManager *manager, int top, int e, int t, DSDNode *top_node, DSDNode *Enode, DSDNode *Tnode); 00073 00077 void protect(DSDManager *manager, ActualNode *list); 00078 00082 void unprotect(DSDManager *manager, ActualNode *list); 00083 00087 ActualNode* copy_actual_list(ActualNode *container); 00088 00093 void list_intersection_special(DdManager *manager, ActualNode *list1, ActualNode *list2, int *size); 00094 00095 00096 int support_compare(DSDManager *manager, DSDNode* node1, DSDNode* node2); 00097 void support_create(DSDManager *manager, DSDNode* node); 00098 00099 #endif