ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
xsatBQueue.h
Go to the documentation of this file.
1
21#ifndef ABC__sat__xSAT__xsatBQueue_h
22#define ABC__sat__xSAT__xsatBQueue_h
23
28
30
36{
37 int nSize;
38 int nCap;
39 int iFirst;
40 int iEmpty;
42 unsigned * pData;
43};
44
48
59static inline xSAT_BQueue_t * xSAT_BQueueNew( int nCap )
60{
62 p->nCap = nCap;
63 p->pData = ABC_CALLOC( unsigned, nCap );
64 return p;
65}
66
78static inline void xSAT_BQueueFree( xSAT_BQueue_t * p )
79{
80 ABC_FREE( p->pData );
81 ABC_FREE( p );
82}
83
95static inline void xSAT_BQueuePush( xSAT_BQueue_t * p, unsigned Value )
96{
97 if ( p->nSize == p->nCap )
98 {
99 assert(p->iFirst == p->iEmpty);
100 p->nSum -= p->pData[p->iFirst];
101 p->iFirst = ( p->iFirst + 1 ) % p->nCap;
102 }
103 else
104 p->nSize++;
105
106 p->nSum += Value;
107 p->pData[p->iEmpty] = Value;
108 if ( ( ++p->iEmpty ) == p->nCap )
109 {
110 p->iEmpty = 0;
111 p->iFirst = 0;
112 }
113}
114
126static inline int xSAT_BQueuePop( xSAT_BQueue_t * p )
127{
128 int RetValue;
129 assert( p->nSize >= 1 );
130 RetValue = p->pData[p->iFirst];
131 p->nSum -= RetValue;
132 p->iFirst = ( p->iFirst + 1 ) % p->nCap;
133 p->nSize--;
134 return RetValue;
135}
136
148static inline unsigned xSAT_BQueueAvg( xSAT_BQueue_t * p )
149{
150 return ( unsigned )( p->nSum / ( ( word ) p->nSize ) );
151}
152
164static inline int xSAT_BQueueIsValid( xSAT_BQueue_t * p )
165{
166 return ( p->nCap == p->nSize );
167}
168
180static inline void xSAT_BQueueClean( xSAT_BQueue_t * p )
181{
182 p->iFirst = 0;
183 p->iEmpty = 0;
184 p->nSize = 0;
185 p->nSum = 0;
186}
187
189
190#endif
#define ABC_CALLOC(type, num)
Definition abc_global.h:265
#define ABC_FREE(obj)
Definition abc_global.h:267
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
Cube * p
Definition exorList.c:222
unsigned __int64 word
DECLARATIONS ///.
Definition kitPerm.c:36
unsigned * pData
Definition xsatBQueue.h:42
#define assert(ex)
Definition util_old.h:213
typedefABC_NAMESPACE_HEADER_START struct xSAT_BQueue_t_ xSAT_BQueue_t
INCLUDES ///.
Definition xsatBQueue.h:34