ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
fxuList.c
Go to the documentation of this file.
1
18
19#include "fxuInt.h"
20
22
23
27
31
32// matrix -> var
33
46{
47 Fxu_ListVar * pList = &p->lVars;
48 if ( pList->pHead == NULL )
49 {
50 pList->pHead = pLink;
51 pList->pTail = pLink;
52 pLink->pPrev = NULL;
53 pLink->pNext = NULL;
54 }
55 else
56 {
57 pLink->pNext = NULL;
58 pList->pTail->pNext = pLink;
59 pLink->pPrev = pList->pTail;
60 pList->pTail = pLink;
61 }
62 pList->nItems++;
63}
64
77{
78 Fxu_ListVar * pList = &p->lVars;
79 if ( pList->pHead == pLink )
80 pList->pHead = pLink->pNext;
81 if ( pList->pTail == pLink )
82 pList->pTail = pLink->pPrev;
83 if ( pLink->pPrev )
84 pLink->pPrev->pNext = pLink->pNext;
85 if ( pLink->pNext )
86 pLink->pNext->pPrev = pLink->pPrev;
87 pList->nItems--;
88}
89
90
91// matrix -> cube
92
105{
106 Fxu_ListCube * pList = &p->lCubes;
107 if ( pList->pHead == NULL )
108 {
109 pList->pHead = pLink;
110 pList->pTail = pLink;
111 pLink->pPrev = NULL;
112 pLink->pNext = NULL;
113 }
114 else
115 {
116 pLink->pNext = NULL;
117 pList->pTail->pNext = pLink;
118 pLink->pPrev = pList->pTail;
119 pList->pTail = pLink;
120 }
121 pList->nItems++;
122}
123
136{
137 Fxu_ListCube * pList = &p->lCubes;
138 if ( pList->pHead == pLink )
139 pList->pHead = pLink->pNext;
140 if ( pList->pTail == pLink )
141 pList->pTail = pLink->pPrev;
142 if ( pLink->pPrev )
143 pLink->pPrev->pNext = pLink->pNext;
144 if ( pLink->pNext )
145 pLink->pNext->pPrev = pLink->pPrev;
146 pList->nItems--;
147}
148
149
150// matrix -> single
151
164{
165 Fxu_ListSingle * pList = &p->lSingles;
166 if ( pList->pHead == NULL )
167 {
168 pList->pHead = pLink;
169 pList->pTail = pLink;
170 pLink->pPrev = NULL;
171 pLink->pNext = NULL;
172 }
173 else
174 {
175 pLink->pNext = NULL;
176 pList->pTail->pNext = pLink;
177 pLink->pPrev = pList->pTail;
178 pList->pTail = pLink;
179 }
180 pList->nItems++;
181}
182
195{
196 Fxu_ListSingle * pList = &p->lSingles;
197 if ( pList->pHead == pLink )
198 pList->pHead = pLink->pNext;
199 if ( pList->pTail == pLink )
200 pList->pTail = pLink->pPrev;
201 if ( pLink->pPrev )
202 pLink->pPrev->pNext = pLink->pNext;
203 if ( pLink->pNext )
204 pLink->pNext->pPrev = pLink->pPrev;
205 pList->nItems--;
206}
207
208
209// table -> divisor
210
223{
224 Fxu_ListDouble * pList = &(p->pTable[pLink->Key]);
225 if ( pList->pHead == NULL )
226 {
227 pList->pHead = pLink;
228 pList->pTail = pLink;
229 pLink->pPrev = NULL;
230 pLink->pNext = NULL;
231 }
232 else
233 {
234 pLink->pNext = NULL;
235 pList->pTail->pNext = pLink;
236 pLink->pPrev = pList->pTail;
237 pList->pTail = pLink;
238 }
239 pList->nItems++;
240 p->nDivs++;
241}
242
255{
256 Fxu_ListDouble * pList = &(p->pTable[pLink->Key]);
257 if ( pList->pHead == pLink )
258 pList->pHead = pLink->pNext;
259 if ( pList->pTail == pLink )
260 pList->pTail = pLink->pPrev;
261 if ( pLink->pPrev )
262 pLink->pPrev->pNext = pLink->pNext;
263 if ( pLink->pNext )
264 pLink->pNext->pPrev = pLink->pPrev;
265 pList->nItems--;
266 p->nDivs--;
267}
268
269
270// cube -> literal
271
284{
285 Fxu_ListLit * pList = &(pCube->lLits);
286 if ( pList->pHead == NULL )
287 {
288 pList->pHead = pLink;
289 pList->pTail = pLink;
290 pLink->pHPrev = NULL;
291 pLink->pHNext = NULL;
292 }
293 else
294 {
295 pLink->pHNext = NULL;
296 pList->pTail->pHNext = pLink;
297 pLink->pHPrev = pList->pTail;
298 pList->pTail = pLink;
299 }
300 pList->nItems++;
301}
302
315{
316 Fxu_ListLit * pList = &(pCube->lLits);
317 if ( pList->pHead == pLink )
318 pList->pHead = pLink->pHNext;
319 if ( pList->pTail == pLink )
320 pList->pTail = pLink->pHPrev;
321 if ( pLink->pHPrev )
322 pLink->pHPrev->pHNext = pLink->pHNext;
323 if ( pLink->pHNext )
324 pLink->pHNext->pHPrev = pLink->pHPrev;
325 pList->nItems--;
326}
327
328
329// var -> literal
330
342void Fxu_ListVarAddLiteral( Fxu_Var * pVar, Fxu_Lit * pLink )
343{
344 Fxu_ListLit * pList = &(pVar->lLits);
345 if ( pList->pHead == NULL )
346 {
347 pList->pHead = pLink;
348 pList->pTail = pLink;
349 pLink->pVPrev = NULL;
350 pLink->pVNext = NULL;
351 }
352 else
353 {
354 pLink->pVNext = NULL;
355 pList->pTail->pVNext = pLink;
356 pLink->pVPrev = pList->pTail;
357 pList->pTail = pLink;
358 }
359 pList->nItems++;
360}
361
373void Fxu_ListVarDelLiteral( Fxu_Var * pVar, Fxu_Lit * pLink )
374{
375 Fxu_ListLit * pList = &(pVar->lLits);
376 if ( pList->pHead == pLink )
377 pList->pHead = pLink->pVNext;
378 if ( pList->pTail == pLink )
379 pList->pTail = pLink->pVPrev;
380 if ( pLink->pVPrev )
381 pLink->pVPrev->pVNext = pLink->pVNext;
382 if ( pLink->pVNext )
383 pLink->pVNext->pVPrev = pLink->pVPrev;
384 pList->nItems--;
385}
386
387
388
389// divisor -> pair
390
403{
404 Fxu_ListPair * pList = &pDiv->lPairs;
405 if ( pList->pHead == NULL )
406 {
407 pList->pHead = pLink;
408 pList->pTail = pLink;
409 pLink->pDPrev = NULL;
410 pLink->pDNext = NULL;
411 }
412 else
413 {
414 pLink->pDNext = NULL;
415 pList->pTail->pDNext = pLink;
416 pLink->pDPrev = pList->pTail;
417 pList->pTail = pLink;
418 }
419 pList->nItems++;
420}
421
434{
435 Fxu_ListPair * pList = &pDiv->lPairs;
436 if ( pList->pHead == NULL )
437 {
438 pList->pHead = pLink;
439 pList->pTail = pLink;
440 pLink->pDPrev = NULL;
441 pLink->pDNext = NULL;
442 }
443 else
444 {
445 pLink->pDPrev = NULL;
446 pList->pHead->pDPrev = pLink;
447 pLink->pDNext = pList->pHead;
448 pList->pHead = pLink;
449 }
450 pList->nItems++;
451}
452
467{
468 Fxu_ListPair * pList = &pDiv->lPairs;
469 assert( pSpot );
470 assert( pSpot != pList->pTail );
471 pLink->pDPrev = pSpot;
472 pLink->pDNext = pSpot->pDNext;
473 pLink->pDPrev->pDNext = pLink;
474 pLink->pDNext->pDPrev = pLink;
475 pList->nItems++;
476}
477
490{
491 Fxu_ListPair * pList = &pDiv->lPairs;
492 if ( pList->pHead == pLink )
493 pList->pHead = pLink->pDNext;
494 if ( pList->pTail == pLink )
495 pList->pTail = pLink->pDPrev;
496 if ( pLink->pDPrev )
497 pLink->pDPrev->pDNext = pLink->pDNext;
498 if ( pLink->pDNext )
499 pLink->pDNext->pDPrev = pLink->pDPrev;
500 pList->nItems--;
501}
502
514void Fxu_ListDoubleAddPairPlace( Fxu_Double * pDiv, Fxu_Pair * pPair, Fxu_Pair * pPairSpot )
515{
516 printf( "Fxu_ListDoubleAddPairPlace() is called!\n" );
517}
518
519
520
524
525
527
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
Cube * p
Definition exorList.c:222
struct FxuListLit Fxu_ListLit
Definition fxuInt.h:78
struct FxuVar Fxu_Var
Definition fxuInt.h:67
struct FxuSingle Fxu_Single
Definition fxuInt.h:73
typedefABC_NAMESPACE_HEADER_START struct FxuMatrix Fxu_Matrix
INCLUDES ///.
Definition fxuInt.h:63
struct FxuListDouble Fxu_ListDouble
Definition fxuInt.h:80
struct FxuPair Fxu_Pair
Definition fxuInt.h:71
struct FxuListSingle Fxu_ListSingle
Definition fxuInt.h:81
struct FxuCube Fxu_Cube
Definition fxuInt.h:66
struct FxuDouble Fxu_Double
Definition fxuInt.h:72
struct FxuListVar Fxu_ListVar
Definition fxuInt.h:77
struct FxuListPair Fxu_ListPair
Definition fxuInt.h:79
struct FxuListCube Fxu_ListCube
Definition fxuInt.h:76
struct FxuLit Fxu_Lit
Definition fxuInt.h:68
void Fxu_ListMatrixAddCube(Fxu_Matrix *p, Fxu_Cube *pLink)
Definition fxuList.c:104
ABC_NAMESPACE_IMPL_START void Fxu_ListMatrixAddVariable(Fxu_Matrix *p, Fxu_Var *pLink)
DECLARATIONS ///.
Definition fxuList.c:45
void Fxu_ListCubeDelLiteral(Fxu_Cube *pCube, Fxu_Lit *pLink)
Definition fxuList.c:314
void Fxu_ListMatrixAddSingle(Fxu_Matrix *p, Fxu_Single *pLink)
Definition fxuList.c:163
void Fxu_ListDoubleDelPair(Fxu_Double *pDiv, Fxu_Pair *pLink)
Definition fxuList.c:489
void Fxu_ListVarDelLiteral(Fxu_Var *pVar, Fxu_Lit *pLink)
Definition fxuList.c:373
void Fxu_ListDoubleAddPairPlace(Fxu_Double *pDiv, Fxu_Pair *pPair, Fxu_Pair *pPairSpot)
Definition fxuList.c:514
void Fxu_ListDoubleAddPairLast(Fxu_Double *pDiv, Fxu_Pair *pLink)
Definition fxuList.c:402
void Fxu_ListTableDelDivisor(Fxu_Matrix *p, Fxu_Double *pLink)
Definition fxuList.c:254
void Fxu_ListDoubleAddPairFirst(Fxu_Double *pDiv, Fxu_Pair *pLink)
Definition fxuList.c:433
void Fxu_ListMatrixDelSingle(Fxu_Matrix *p, Fxu_Single *pLink)
Definition fxuList.c:194
void Fxu_ListMatrixDelCube(Fxu_Matrix *p, Fxu_Cube *pLink)
Definition fxuList.c:135
void Fxu_ListCubeAddLiteral(Fxu_Cube *pCube, Fxu_Lit *pLink)
Definition fxuList.c:283
void Fxu_ListMatrixDelVariable(Fxu_Matrix *p, Fxu_Var *pLink)
Definition fxuList.c:76
void Fxu_ListVarAddLiteral(Fxu_Var *pVar, Fxu_Lit *pLink)
Definition fxuList.c:342
void Fxu_ListDoubleAddPairMiddle(Fxu_Double *pDiv, Fxu_Pair *pSpot, Fxu_Pair *pLink)
Definition fxuList.c:466
void Fxu_ListTableAddDivisor(Fxu_Matrix *p, Fxu_Double *pLink)
Definition fxuList.c:222
Fxu_ListLit lLits
Definition fxuInt.h:206
Fxu_Cube * pNext
Definition fxuInt.h:208
Fxu_Cube * pPrev
Definition fxuInt.h:207
Fxu_Double * pPrev
Definition fxuInt.h:261
Fxu_ListPair lPairs
Definition fxuInt.h:260
Fxu_Double * pNext
Definition fxuInt.h:262
unsigned Key
Definition fxuInt.h:259
Fxu_Cube * pTail
Definition fxuInt.h:94
Fxu_Cube * pHead
Definition fxuInt.h:93
int nItems
Definition fxuInt.h:95
Fxu_Double * pHead
Definition fxuInt.h:125
Fxu_Double * pTail
Definition fxuInt.h:126
int nItems
Definition fxuInt.h:111
Fxu_Lit * pTail
Definition fxuInt.h:110
Fxu_Lit * pHead
Definition fxuInt.h:109
Fxu_Pair * pHead
Definition fxuInt.h:117
Fxu_Pair * pTail
Definition fxuInt.h:118
int nItems
Definition fxuInt.h:119
Fxu_Single * pHead
Definition fxuInt.h:133
Fxu_Single * pTail
Definition fxuInt.h:134
Fxu_Var * pTail
Definition fxuInt.h:102
int nItems
Definition fxuInt.h:103
Fxu_Var * pHead
Definition fxuInt.h:101
Fxu_Lit * pHNext
Definition fxuInt.h:233
Fxu_Lit * pVNext
Definition fxuInt.h:235
Fxu_Lit * pVPrev
Definition fxuInt.h:234
Fxu_Lit * pHPrev
Definition fxuInt.h:232
Fxu_Pair * pDNext
Definition fxuInt.h:250
Fxu_Pair * pDPrev
Definition fxuInt.h:249
Fxu_Single * pNext
Definition fxuInt.h:275
Fxu_Single * pPrev
Definition fxuInt.h:274
Fxu_ListLit lLits
Definition fxuInt.h:219
Fxu_Var * pPrev
Definition fxuInt.h:220
Fxu_Var * pNext
Definition fxuInt.h:221
#define assert(ex)
Definition util_old.h:213