ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
mtr.h
Go to the documentation of this file.
1
58
59#ifndef ABC__bdd__mtr__mtr_h
60#define ABC__bdd__mtr__mtr_h
61
62/*---------------------------------------------------------------------------*/
63/* Nested includes */
64/*---------------------------------------------------------------------------*/
65
67
68/*---------------------------------------------------------------------------*/
69/* Constant declarations */
70/*---------------------------------------------------------------------------*/
71
72#ifndef SIZEOF_VOID_P
73#define SIZEOF_VOID_P 4
74#endif
75#ifndef SIZEOF_INT
76#define SIZEOF_INT 4
77#endif
78
79//#undef CONST
80//#if defined(__STDC__) || defined(__cplusplus)
81//#define CONST const
82//#else /* !(__STDC__ || __cplusplus) */
83//#define CONST
84//#endif /* !(__STDC__ || __cplusplus) */
85
86#if defined(__GNUC__)
87#define MTR_INLINE __inline__
88# if (__GNUC__ >2 || __GNUC_MINOR__ >=7)
89# define MTR_UNUSED __attribute__ ((unused))
90# else
91# define MTR_UNUSED
92# endif
93#else
94#define MTR_INLINE
95#define MTR_UNUSED
96#endif
97
98/* Flag definitions */
99#define MTR_DEFAULT 0x00000000
100#define MTR_TERMINAL 0x00000001
101#define MTR_SOFT 0x00000002
102#define MTR_FIXED 0x00000004
103#define MTR_NEWNODE 0x00000008
104
105/* MTR_MAXHIGH is defined in such a way that on 32-bit and 64-bit
106** machines one can cast a value to (int) without generating a negative
107** number.
108*/
109#if SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
110#define MTR_MAXHIGH (((MtrHalfWord) ~0) >> 1)
111#else
112#define MTR_MAXHIGH ((MtrHalfWord) ~0)
113#endif
114
115
116/*---------------------------------------------------------------------------*/
117/* Stucture declarations */
118/*---------------------------------------------------------------------------*/
119
120
121/*---------------------------------------------------------------------------*/
122/* Type declarations */
123/*---------------------------------------------------------------------------*/
124
125#if SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
126typedef unsigned int MtrHalfWord;
127#else
128typedef unsigned short MtrHalfWord;
129#endif
130
141
142
143/*---------------------------------------------------------------------------*/
144/* Variable declarations */
145/*---------------------------------------------------------------------------*/
146
147
148/*---------------------------------------------------------------------------*/
149/* Macro declarations */
150/*---------------------------------------------------------------------------*/
151
152/* Flag manipulation macros */
153#define MTR_SET(node, flag) (node->flags |= (flag))
154#define MTR_RESET(node, flag) (node->flags &= ~ (flag))
155#define MTR_TEST(node, flag) (node->flags & (flag))
156
157
159
160/*---------------------------------------------------------------------------*/
161/* Function prototypes */
162/*---------------------------------------------------------------------------*/
163
164extern MtrNode * Mtr_AllocNode (void);
165extern void Mtr_DeallocNode (MtrNode *node);
166extern MtrNode * Mtr_InitTree (void);
167extern void Mtr_FreeTree (MtrNode *node);
168extern MtrNode * Mtr_CopyTree (MtrNode *node, int expansion);
169extern void Mtr_MakeFirstChild (MtrNode *parent, MtrNode *child);
170extern void Mtr_MakeLastChild (MtrNode *parent, MtrNode *child);
171extern MtrNode * Mtr_CreateFirstChild (MtrNode *parent);
172extern MtrNode * Mtr_CreateLastChild (MtrNode *parent);
173extern void Mtr_MakeNextSibling (MtrNode *first, MtrNode *second);
174extern void Mtr_PrintTree (MtrNode *node);
175extern MtrNode * Mtr_InitGroupTree (int lower, int size);
176extern MtrNode * Mtr_MakeGroup (MtrNode *root, unsigned int low, unsigned int high, unsigned int flags);
177extern MtrNode * Mtr_DissolveGroup (MtrNode *group);
178extern MtrNode * Mtr_FindGroup (MtrNode *root, unsigned int low, unsigned int high);
179extern int Mtr_SwapGroups (MtrNode *first, MtrNode *second);
180extern void Mtr_PrintGroups (MtrNode *root, int silent);
181extern MtrNode * Mtr_ReadGroups (FILE *fp, int nleaves);
182
184
186
187#endif /* __MTR */
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
int Mtr_SwapGroups(MtrNode *first, MtrNode *second)
Definition mtrGroup.c:470
MtrNode * Mtr_ReadGroups(FILE *fp, int nleaves)
Definition mtrGroup.c:611
void Mtr_PrintTree(MtrNode *node)
Definition mtrBasic.c:423
void Mtr_PrintGroups(MtrNode *root, int silent)
Definition mtrGroup.c:537
MtrNode * Mtr_InitTree(void)
Definition mtrBasic.c:161
MtrNode * Mtr_CreateFirstChild(MtrNode *parent)
Definition mtrBasic.c:337
void Mtr_FreeTree(MtrNode *node)
Definition mtrBasic.c:188
void Mtr_MakeNextSibling(MtrNode *first, MtrNode *second)
Definition mtrBasic.c:395
void Mtr_MakeFirstChild(MtrNode *parent, MtrNode *child)
Definition mtrBasic.c:269
MtrNode * Mtr_AllocNode(void)
Definition mtrBasic.c:118
MtrNode * Mtr_DissolveGroup(MtrNode *group)
Definition mtrGroup.c:357
unsigned short MtrHalfWord
Definition mtr.h:128
MtrNode * Mtr_CopyTree(MtrNode *node, int expansion)
Definition mtrBasic.c:215
MtrNode * Mtr_CreateLastChild(MtrNode *parent)
Definition mtrBasic.c:366
void Mtr_MakeLastChild(MtrNode *parent, MtrNode *child)
Definition mtrBasic.c:300
MtrNode * Mtr_MakeGroup(MtrNode *root, unsigned int low, unsigned int high, unsigned int flags)
Definition mtrGroup.c:158
MtrNode * Mtr_FindGroup(MtrNode *root, unsigned int low, unsigned int high)
Definition mtrGroup.c:409
MtrNode * Mtr_InitGroupTree(int lower, int size)
Definition mtrGroup.c:121
void Mtr_DeallocNode(MtrNode *node)
Definition mtrBasic.c:140
Definition mtr.h:131
MtrHalfWord low
Definition mtr.h:133
MtrHalfWord flags
Definition mtr.h:132
struct MtrNode * elder
Definition mtr.h:138
struct MtrNode * parent
Definition mtr.h:136
struct MtrNode * younger
Definition mtr.h:139
struct MtrNode * child
Definition mtr.h:137
MtrHalfWord index
Definition mtr.h:135
MtrHalfWord size
Definition mtr.h:134
Definition flags.h:11