summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/python/pyabc.i40
1 files changed, 40 insertions, 0 deletions
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 );