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