77 #ifndef CCuddInterface_h_
78 #define CCuddInterface_h_
84 #define PB_CUDDMGR_READ(count, data, funcname) data funcname() const { \
85 return BOOST_PP_CAT(Cudd_, funcname)(getManager()); }
87 #define PB_CUDDMGR_SWITCH(count, data, funcname) void funcname() { \
88 BOOST_PP_CAT(Cudd_, funcname)(getManager()); }
90 #define PB_CUDDMGR_SET(count, data, funcname) void funcname(data arg) { \
91 BOOST_PP_CAT(Cudd_, funcname)(getManager(), arg); }
133 unsigned long maxMemory = 0):
134 pMgr (new core_type(numVars, numVarsZ, numSlots, cacheSize, maxMemory)) {
149 pMgr->errorHandler = newHandler;
170 void info()
const { checkedResult(Cudd_PrintInfo(getManager(),stdout)); }
173 checkReturnValue(result != NULL);
178 tmp(Cudd_ReadErrorCode(getManager()));
199 return checkedResult(DD_ONE(getManager()));
206 return Cudd_ReorderingStatusZdd(getManager(), method);
210 return Cudd_ReadPermZdd(getManager(), i);
214 return Cudd_ReadInvPermZdd(getManager(), i);
218 checkedResult(Cudd_AddHook(getManager(), f, where));
221 checkedResult(Cudd_RemoveHook(getManager(), f, where));
223 int IsInHook(DD_HFP f, Cudd_HookType where)
const {
224 return Cudd_IsInHook(getManager(), f, where);
227 checkedResult(Cudd_EnableReorderingReporting(getManager()));
230 checkedResult(Cudd_DisableReorderingReporting(getManager()));
233 void DebugCheck(){ checkedResult(Cudd_DebugCheck(getManager())); }
234 void CheckKeys(){ checkedResult(Cudd_CheckKeys(getManager())); }
235 void PrintLinear() { checkedResult(Cudd_PrintLinear(getManager())); }
237 int ReadLinear(
int x,
int y) {
return Cudd_ReadLinear(getManager(), x, y); }
241 void PrintVersion(FILE * fp)
const { cout.flush(); Cudd_PrintVersion(fp); }
244 return Cudd_MakeZddTreeNode(getManager(), low, size, type);
248 Cudd_zddPrintSubtable(getManager());
252 checkedResult(Cudd_zddReduceHeap(getManager(), heuristic, minsize));
255 checkedResult(Cudd_zddShuffleHeap(getManager(), permutation));
258 Cudd_zddSymmProfile(getManager(), lower, upper);
262 typedef boost::scoped_array<node_type> node_array;
263 node_array nodeArray(
new node_type[nlen]);
266 return checkedResult(Cudd_SharingSize(nodeArray.get(), nlen));
272 (SetMinHit)(SetLooseUpTo)(SetMaxCacheHard)(SetMaxLive) )
275 (SetSiftMaxVar)(SetSiftMaxSwap)(SetRecomb)(SetSymmviolation)
276 (SetArcviolation)(SetPopulationSize)(SetNumberXovers)
279 BOOST_PP_SEQ_FOR_EACH(PB_CUDDMGR_SET, FILE*, (SetStdout)(SetStderr))
282 (zddRealignEnable)(zddRealignDisable)
283 (AutodynDisableZdd)(FreeZddTree)
284 (EnableGarbageCollection)(DisableGarbageCollection)
285 (TurnOnCountDead)(TurnOffCountDead)(ClearErrorCode)
289 (ReadCacheUsedSlots)(ReadCacheLookUps)(ReadCacheHits)
290 (ReadSwapSteps)(ReadMaxGrowth)(AverageDistance)
293 BOOST_PP_SEQ_FOR_EACH(PB_CUDDMGR_READ, size_type,
294 (ReadCacheSlots)(ReadMinHit)(ReadLooseUpTo)(ReadMaxCache)
295 (ReadMaxCacheHard)(ReadSlots)(ReadKeys)(ReadDead)(ReadMinDead)
296 (ReadNextReordering)(ReadMaxLive)
299 BOOST_PP_SEQ_FOR_EACH(PB_CUDDMGR_READ,
int,
300 (zddRealignmentEnabled)(ReadZddSize)(ReadReorderings)(ReadSiftMaxVar)
301 (ReadSiftMaxSwap)(ReadGarbageCollections)(GarbageCollectionEnabled)
302 (DeadAreCounted)(ReadRecomb)
303 (ReadPopulationSize)(ReadSymmviolation)(ReadArcviolation)
304 (ReadNumberXovers)(ReorderingReporting)(ReadErrorCode)
307 BOOST_PP_SEQ_FOR_EACH(PB_CUDDMGR_READ,
long,
308 (ReadReorderingTime)(ReadGarbageCollectionTime)
309 (ReadPeakNodeCount)(zddReadNodeCount)
312 BOOST_PP_SEQ_FOR_EACH(PB_CUDDMGR_READ, large_size_type,
313 (ReadMemoryInUse)(ReadMaxMemory) )
315 BOOST_PP_SEQ_FOR_EACH(PB_CUDDMGR_READ, FILE*, (ReadStdout)(ReadStderr))
317 BOOST_PP_SEQ_FOR_EACH(PB_CUDDMGR_READ, MtrNode*, (ReadZddTree))
319 PB_CUDDMGR_SET(BOOST_PP_NIL, Cudd_ReorderingType, AutodynEnableZdd)
320 PB_CUDDMGR_SET(BOOST_PP_NIL,
unsigned long, SetMaxMemory)
321 PB_CUDDMGR_SET(BOOST_PP_NIL,
double, SetMaxGrowth)
322 PB_CUDDMGR_SET(BOOST_PP_NIL, MtrNode*, SetZddTree)
329 (pMgr->m_names).
set(idx, varname);
334 return (pMgr->m_names)[idx];
338 assert(idx < pMgr->m_vars.size());
339 return getDiagram(pMgr->m_vars[idx]);
344 return Cudd_ReadZddSize(getManager());
350 return dd_type(managerCore(), result);
355 checkReturnValue(result);
356 return getDiagram(result);
361 checkReturnValue(result);
367 return checkedResult(func(getManager(), idx) );
372 return checkedResult(func(getManager()) );
380 #undef PB_CUDDMGR_READ
381 #undef PB_CUDDMGR_SWITCH
382 #undef PB_CUDDMGR_SET