From b879786e73220e835aed1673ff9f9abaadf73d4e Mon Sep 17 00:00:00 2001 From: Baruch Sterin Date: Thu, 23 Feb 2012 11:09:57 -0800 Subject: pyabc: added a function pyabc.iso_eq_classes() that retrieves the results of the "&iso" command --- src/python/pyabc.i | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src/python') diff --git a/src/python/pyabc.i b/src/python/pyabc.i index a4c8c347..37501a75 100644 --- a/src/python/pyabc.i +++ b/src/python/pyabc.i @@ -252,6 +252,44 @@ int _cex_get_frame(Abc_Cex_t* pCex) return pCex->iFrame; } +static PyObject* VecInt_To_PyList(Vec_Int_t* v) +{ + PyObject* pylist = PyList_New( Vec_IntSize(v) ); + + int elem, i; + + Vec_IntForEachEntry( v, elem, i) + { + PyList_SetItem( pylist, i, PyInt_FromLong(elem) ); + } + + return pylist; +} + +PyObject* iso_eq_classes() +{ + Abc_Frame_t* pAbc = Abc_FrameGetGlobalFrame(); + Vec_Ptr_t *vPoEquivs = Abc_FrameReadPoEquivs(pAbc); + + PyObject* eq_classes; + Vec_Int_t* pEntry; + int i; + + if( ! vPoEquivs ) + { + Py_RETURN_NONE; + } + + eq_classes = PyList_New( Vec_PtrSize(vPoEquivs) ); + + Vec_PtrForEachEntry( Vec_Int_t*, vPoEquivs, pEntry, i ) + { + PyList_SetItem( eq_classes, i, VecInt_To_PyList(pEntry) ); + } + + return eq_classes; +} + static PyObject* pyabc_internal_python_command_callback = 0; void pyabc_internal_set_command_callback( PyObject* callback ) @@ -571,6 +609,8 @@ int _cex_n_pis(Abc_Cex_t* pCex); int _cex_get_po(Abc_Cex_t* pCex); int _cex_get_frame(Abc_Cex_t* pCex); +PyObject* iso_eq_classes(); + void pyabc_internal_set_command_callback( PyObject* callback ); void pyabc_internal_register_command( char * sGroup, char * sName, int fChanges ); -- cgit v1.2.3