00001
00024 #ifndef _DDDMPINT
00025 #define _DDDMPINT
00026
00027 #include "dddmp.h"
00028 #include "cuddInt.h"
00029
00030
00031
00032
00033
00034
00035
00036 #define DDDMP_TERMINAL 0
00037 #define DDDMP_ABSOLUTE_ID 1
00038 #define DDDMP_RELATIVE_ID 2
00039 #define DDDMP_RELATIVE_1 3
00040
00041 #define DDDMP_MAXSTRLEN 500
00042
00043
00044
00045
00046
00059 struct binary_dd_code {
00060 unsigned Unused : 1;
00061 unsigned V : 2;
00062 unsigned T : 2;
00063 unsigned Ecompl : 1;
00064 unsigned E : 2;
00065 };
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080 #ifdef ALLOC
00081 #define DDDMP_ALLOC(type, num) ALLOC(type,num)
00082 #else
00083 #define DDDMP_ALLOC(type, num) \
00084 ((type *) malloc(sizeof(type) * (num)))
00085 #endif
00086
00087 #ifdef FREE
00088 #define DDDMP_FREE(p) (FREE(p))
00089 #else
00090 #define DDDMP_FREE(p) \
00091 ((p)!=NULL)?(free(p)):0)
00092 #endif
00093
00096
00097
00098
00099
00100 EXTERN int DddmpWriteCode(FILE *fp, struct binary_dd_code code);
00101 EXTERN int DddmpReadCode(FILE *fp, struct binary_dd_code *pcode);
00102 EXTERN int DddmpWriteInt(FILE *fp, int id);
00103 EXTERN int DddmpReadInt(FILE *fp, int *pid);
00104 EXTERN int DddmpNumberDdNodes(DdManager *dd, DdNode **f, int n);
00105 EXTERN void DddmpUnnumberDdNodes(DdManager *dd, DdNode **f, int n);
00106 EXTERN void DddmpWriteNodeIndex(DdNode *f, int id);
00107 EXTERN int DddmpReadNodeIndex(DdNode *f);
00108 EXTERN int DddmpVisited(DdNode *f);
00109 EXTERN void DddmpSetVisited(DdNode *f);
00110 EXTERN void DddmpClearVisited(DdNode *f);
00111 EXTERN int NumberNodeRecur(DdNode *f, int id);
00112
00115 #endif