ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
xsatWatchList.h
Go to the documentation of this file.
1
21#ifndef ABC__sat__xSAT__xsatWatchList_h
22#define ABC__sat__xSAT__xsatWatchList_h
23
28
30
36{
37 unsigned CRef;
39};
40
48
56
68static inline void xSAT_WatchListFree( xSAT_WatchList_t * v )
69{
70 if ( v->pArray )
71 ABC_FREE( v->pArray );
72}
73
85static inline int xSAT_WatchListSize( xSAT_WatchList_t * v )
86{
87 return v->nSize;
88}
89
101static inline void xSAT_WatchListShrink( xSAT_WatchList_t * v, int k )
102{
103 assert(k <= v->nSize);
104 v->nSize = k;
105}
106
118static inline void xSAT_WatchListPush( xSAT_WatchList_t * v, xSAT_Watcher_t e )
119{
120 assert( v );
121 if ( v->nSize == v->nCap )
122 {
123 int newsize = ( v->nCap < 4 ) ? 4 : ( v->nCap / 2 ) * 3;
124
125 v->pArray = ABC_REALLOC( xSAT_Watcher_t, v->pArray, newsize );
126 if ( v->pArray == NULL )
127 {
128 printf( "Failed to realloc memory from %.1f MB to %.1f MB.\n",
129 1.0 * v->nCap / (1<<20), 1.0 * newsize / (1<<20) );
130 fflush( stdout );
131 }
132 v->nCap = newsize;
133 }
134
135 v->pArray[v->nSize++] = e;
136}
137
149static inline xSAT_Watcher_t* xSAT_WatchListArray( xSAT_WatchList_t * v )
150{
151 return v->pArray;
152}
153
165static inline void xSAT_WatchListRemove( xSAT_WatchList_t * v, unsigned CRef )
166{
167 xSAT_Watcher_t* ws = xSAT_WatchListArray(v);
168 int j = 0;
169
170 for ( ; ws[j].CRef != CRef; j++ );
171 assert( j < xSAT_WatchListSize( v ) );
172 memmove( v->pArray + j, v->pArray + j + 1, ( v->nSize - j - 1 ) * sizeof( xSAT_Watcher_t ) );
173 v->nSize -= 1;
174}
175
187static inline xSAT_VecWatchList_t * xSAT_VecWatchListAlloc( int nCap )
188{
190
191 v->nCap = 4;
192 v->nSize = 0;
194 return v;
195}
196
208static inline void xSAT_VecWatchListFree( xSAT_VecWatchList_t* v )
209{
210 int i;
211 for( i = 0; i < v->nSize; i++ )
212 xSAT_WatchListFree( v->pArray + i );
213
214 ABC_FREE( v->pArray );
215 ABC_FREE( v );
216}
217
229static inline void xSAT_VecWatchListPush( xSAT_VecWatchList_t* v )
230{
231 if ( v->nSize == v->nCap )
232 {
233 int newsize = (v->nCap < 4) ? v->nCap * 2 : (v->nCap / 2) * 3;
234
235 v->pArray = ABC_REALLOC( xSAT_WatchList_t, v->pArray, newsize );
236 memset( v->pArray + v->nCap, 0, sizeof( xSAT_WatchList_t ) * ( newsize - v->nCap ) );
237 if ( v->pArray == NULL )
238 {
239 printf( "Failed to realloc memory from %.1f MB to %.1f MB.\n",
240 1.0 * v->nCap / (1<<20), 1.0 * newsize / (1<<20) );
241 fflush( stdout );
242 }
243 v->nCap = newsize;
244 }
245
246 v->nSize++;
247}
248
260static inline xSAT_WatchList_t * xSAT_VecWatchListEntry( xSAT_VecWatchList_t* v, int iEntry )
261{
262 assert( iEntry < v->nCap );
263 assert( iEntry < v->nSize );
264 return v->pArray + iEntry;
265}
266
268
269#endif
#define ABC_ALLOC(type, num)
Definition abc_global.h:264
#define ABC_REALLOC(type, obj, num)
Definition abc_global.h:268
#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 ///.
RegionAllocator< uint32_t >::Ref CRef
xSAT_WatchList_t * pArray
xSAT_Watcher_t * pArray
#define assert(ex)
Definition util_old.h:213
char * memset()
char * memmove()
struct xSAT_WatchList_t_ xSAT_WatchList_t
typedefABC_NAMESPACE_HEADER_START struct xSAT_Watcher_t_ xSAT_Watcher_t
INCLUDES ///.
struct xSAT_VecWatchList_t_ xSAT_VecWatchList_t