abc-master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
mvcApi.c
Go to the documentation of this file.
1 /**CFile****************************************************************
2 
3  FileName [mvcApi.c]
4 
5  PackageName [MVSIS 2.0: Multi-valued logic synthesis system.]
6 
7  Synopsis []
8 
9  Author [MVSIS Group]
10 
11  Affiliation [UC Berkeley]
12 
13  Date [Ver. 1.0. Started - February 1, 2003.]
14 
15  Revision [$Id: mvcApi.c,v 1.4 2003/04/03 06:31:48 alanmi Exp $]
16 
17 ***********************************************************************/
18 
19 #include "mvc.h"
20 
22 
23 
24 ////////////////////////////////////////////////////////////////////////
25 /// DECLARATIONS ///
26 ////////////////////////////////////////////////////////////////////////
27 
28 ////////////////////////////////////////////////////////////////////////
29 /// FUNCTION DEFINITIONS ///
30 ////////////////////////////////////////////////////////////////////////
31 
32 /**Function*************************************************************
33 
34  Synopsis []
35 
36  Description []
37 
38  SideEffects []
39 
40  SeeAlso []
41 
42 ***********************************************************************/
43 int Mvc_CoverReadWordNum( Mvc_Cover_t * pCover ) { return pCover->nWords; }
44 int Mvc_CoverReadBitNum( Mvc_Cover_t * pCover ) { return pCover->nBits; }
45 int Mvc_CoverReadCubeNum( Mvc_Cover_t * pCover ) { return pCover->lCubes.nItems; }
46 Mvc_Cube_t * Mvc_CoverReadCubeHead( Mvc_Cover_t * pCover ) { return pCover->lCubes.pHead; }
47 Mvc_Cube_t * Mvc_CoverReadCubeTail( Mvc_Cover_t * pCover ) { return pCover->lCubes.pTail; }
48 Mvc_List_t * Mvc_CoverReadCubeList( Mvc_Cover_t * pCover ) { return &pCover->lCubes; }
49 
50 
51 /**Function*************************************************************
52 
53  Synopsis []
54 
55  Description []
56 
57  SideEffects []
58 
59  SeeAlso []
60 
61 ***********************************************************************/
62 int Mvc_ListReadCubeNum( Mvc_List_t * pList ) { return pList->nItems; }
63 Mvc_Cube_t * Mvc_ListReadCubeHead( Mvc_List_t * pList ) { return pList->pHead; }
64 Mvc_Cube_t * Mvc_ListReadCubeTail( Mvc_List_t * pList ) { return pList->pTail; }
65 
66 /**Function*************************************************************
67 
68  Synopsis []
69 
70  Description []
71 
72  SideEffects []
73 
74  SeeAlso []
75 
76 ***********************************************************************/
77 void Mvc_CoverSetCubeNum( Mvc_Cover_t * pCover,int nItems ) { pCover->lCubes.nItems = nItems; }
78 void Mvc_CoverSetCubeHead( Mvc_Cover_t * pCover, Mvc_Cube_t * pCube ) { pCover->lCubes.pHead = pCube; }
79 void Mvc_CoverSetCubeTail( Mvc_Cover_t * pCover, Mvc_Cube_t * pCube ) { pCover->lCubes.pTail = pCube; }
80 void Mvc_CoverSetCubeList( Mvc_Cover_t * pCover, Mvc_List_t * pList ) { pCover->lCubes = *pList; }
81 
82 /**Function*************************************************************
83 
84  Synopsis []
85 
86  Description []
87 
88  SideEffects []
89 
90  SeeAlso []
91 
92 ***********************************************************************/
94 {
95  return Mvc_CoverReadCubeNum(pCover) == 0;
96 }
97 
98 /**Function*************************************************************
99 
100  Synopsis []
101 
102  Description []
103 
104  SideEffects []
105 
106  SeeAlso []
107 
108 ***********************************************************************/
110 {
111  Mvc_Cube_t * pCube;
112  int iBit, Value;
113 
114  if ( Mvc_CoverReadCubeNum(pCover) != 1 )
115  return 0;
116 
117  pCube = Mvc_CoverReadCubeHead( pCover );
118  Mvc_CubeForEachBit( pCover, pCube, iBit, Value )
119  if ( Value == 0 )
120  return 0;
121  return 1;
122 }
123 
124 /**Function*************************************************************
125 
126  Synopsis [Returns 1 if the cover is a binary buffer.]
127 
128  Description []
129 
130  SideEffects []
131 
132  SeeAlso []
133 
134 ***********************************************************************/
136 {
137  Mvc_Cube_t * pCube;
138  if ( pCover->nBits != 2 )
139  return 0;
140  if ( Mvc_CoverReadCubeNum(pCover) != 1 )
141  return 0;
142  pCube = pCover->lCubes.pHead;
143  if ( Mvc_CubeBitValue(pCube, 0) == 0 && Mvc_CubeBitValue(pCube, 1) == 1 )
144  return 1;
145  return 0;
146 }
147 
148 
149 /**Function*************************************************************
150 
151  Synopsis []
152 
153  Description []
154 
155  SideEffects []
156 
157  SeeAlso []
158 
159 ***********************************************************************/
161 {
162  Mvc_Cube_t * pCube, * pCube2;
163  Mvc_CoverForEachCubeSafe( pCover, pCube, pCube2 )
164  Mvc_CubeFree( pCover, pCube );
165  pCover->lCubes.nItems = 0;
166  pCover->lCubes.pHead = NULL;
167  pCover->lCubes.pTail = NULL;
168 }
169 
170 /**Function*************************************************************
171 
172  Synopsis []
173 
174  Description []
175 
176  SideEffects []
177 
178  SeeAlso []
179 
180 ***********************************************************************/
182 {
183  Mvc_Cube_t * pCubeNew;
184  Mvc_CoverMakeEmpty( pCover );
185  pCubeNew = Mvc_CubeAlloc( pCover );
186  Mvc_CubeBitFill( pCubeNew );
187  Mvc_CoverAddCubeTail( pCover, pCubeNew );
188 }
189 
190 
191 /**Function*************************************************************
192 
193  Synopsis []
194 
195  Description []
196 
197  SideEffects []
198 
199  SeeAlso []
200 
201 ***********************************************************************/
203 {
204  Mvc_Cover_t * pCoverNew;
205  pCoverNew = Mvc_CoverAlloc( pCover->pMem, pCover->nBits );
206  return pCoverNew;
207 }
208 
209 /**Function*************************************************************
210 
211  Synopsis []
212 
213  Description []
214 
215  SideEffects []
216 
217  SeeAlso []
218 
219 ***********************************************************************/
221 {
222  Mvc_Cube_t * pCubeNew;
223  Mvc_Cover_t * pCoverNew;
224  pCoverNew = Mvc_CoverAlloc( pCover->pMem, pCover->nBits );
225  pCubeNew = Mvc_CubeAlloc( pCoverNew );
226  Mvc_CubeBitFill( pCubeNew );
227  Mvc_CoverAddCubeTail( pCoverNew, pCubeNew );
228  return pCoverNew;
229 }
230 
231 
232 ////////////////////////////////////////////////////////////////////////
233 /// END OF FILE ///
234 ////////////////////////////////////////////////////////////////////////
235 
236 
238 
#define Mvc_CoverAddCubeTail(pCover, pCube)
Definition: mvc.h:501
int Mvc_CoverReadCubeNum(Mvc_Cover_t *pCover)
Definition: mvcApi.c:45
int Mvc_CoverReadBitNum(Mvc_Cover_t *pCover)
Definition: mvcApi.c:44
int Mvc_CoverIsTautology(Mvc_Cover_t *pCover)
Definition: mvcApi.c:109
int nWords
Definition: mvc.h:85
Mvc_Cube_t * Mvc_CoverReadCubeTail(Mvc_Cover_t *pCover)
Definition: mvcApi.c:47
int Mvc_CoverIsEmpty(Mvc_Cover_t *pCover)
Definition: mvcApi.c:93
int nItems
Definition: mvc.h:79
Mvc_Cube_t * Mvc_CubeAlloc(Mvc_Cover_t *pCover)
DECLARATIONS ///.
Definition: mvcCube.c:43
ABC_NAMESPACE_IMPL_START int Mvc_CoverReadWordNum(Mvc_Cover_t *pCover)
DECLARATIONS ///.
Definition: mvcApi.c:43
#define Mvc_CubeBitFill(Cube)
Definition: mvc.h:385
Mvc_List_t lCubes
Definition: mvc.h:88
void Mvc_CoverMakeEmpty(Mvc_Cover_t *pCover)
Definition: mvcApi.c:160
#define Mvc_CoverForEachCubeSafe(Cover, Cube, Cube2)
Definition: mvc.h:536
#define ABC_NAMESPACE_IMPL_END
Definition: abc_global.h:108
Mvc_Cube_t * Mvc_ListReadCubeTail(Mvc_List_t *pList)
Definition: mvcApi.c:64
Mvc_Cover_t * Mvc_CoverCreateTautology(Mvc_Cover_t *pCover)
Definition: mvcApi.c:220
Mvc_Cube_t * pTail
Definition: mvc.h:78
#define Mvc_CubeForEachBit(Cover, Cube, iBit, Value)
Definition: mvc.h:553
#define ABC_NAMESPACE_IMPL_START
Definition: abc_global.h:107
Mvc_Cover_t * Mvc_CoverCreateEmpty(Mvc_Cover_t *pCover)
Definition: mvcApi.c:202
void Mvc_CoverSetCubeList(Mvc_Cover_t *pCover, Mvc_List_t *pList)
Definition: mvcApi.c:80
Mvc_Cube_t * pHead
Definition: mvc.h:77
#define Mvc_CubeBitValue(Cube, Bit)
Definition: mvc.h:138
int Mvc_CoverIsBinaryBuffer(Mvc_Cover_t *pCover)
Definition: mvcApi.c:135
Mvc_Cube_t * Mvc_ListReadCubeHead(Mvc_List_t *pList)
Definition: mvcApi.c:63
Mvc_List_t * Mvc_CoverReadCubeList(Mvc_Cover_t *pCover)
Definition: mvcApi.c:48
int nBits
Definition: mvc.h:87
int Mvc_ListReadCubeNum(Mvc_List_t *pList)
Definition: mvcApi.c:62
void Mvc_CubeFree(Mvc_Cover_t *pCover, Mvc_Cube_t *pCube)
Definition: mvcCube.c:114
void Mvc_CoverSetCubeHead(Mvc_Cover_t *pCover, Mvc_Cube_t *pCube)
Definition: mvcApi.c:78
Mvc_Cover_t * Mvc_CoverAlloc(Mvc_Manager_t *pMem, int nBits)
DECLARATIONS ///.
Definition: mvcCover.c:43
void Mvc_CoverSetCubeTail(Mvc_Cover_t *pCover, Mvc_Cube_t *pCube)
Definition: mvcApi.c:79
Mvc_Cube_t * Mvc_CoverReadCubeHead(Mvc_Cover_t *pCover)
Definition: mvcApi.c:46
Mvc_Manager_t * pMem
Definition: mvc.h:93
void Mvc_CoverMakeTautology(Mvc_Cover_t *pCover)
Definition: mvcApi.c:181
void Mvc_CoverSetCubeNum(Mvc_Cover_t *pCover, int nItems)
Definition: mvcApi.c:77