net collections in progress
This commit is contained in:
parent
a102abdb8e
commit
0f46cfdb7f
|
@ -22,6 +22,7 @@
|
|||
PyName.cpp
|
||||
PyNet.cpp
|
||||
PyNetLocator.cpp
|
||||
PyNetCollection.cpp
|
||||
PyOccurrence.cpp
|
||||
PyOccurrenceLocator.cpp
|
||||
PyPath.cpp
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
#include "hurricane/isobar/ProxyProperty.h"
|
||||
#include "hurricane/isobar/PyNet.h"
|
||||
#include "hurricane/isobar/PyNetLocator.h"
|
||||
#include "hurricane/isobar/PyNetCollection.h"
|
||||
#include "hurricane/isobar/PyReferenceLocator.h"
|
||||
#include "hurricane/isobar/PyInstanceLocator.h"
|
||||
#include "hurricane/isobar/PyOccurrenceLocator.h"
|
||||
|
@ -377,25 +378,25 @@ extern "C" {
|
|||
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
// Attribute Method : "PyCell_getNetsLocator ()"
|
||||
// Attribute Method : "PyCell_getNets ()"
|
||||
|
||||
static PyObject* PyCell_getNetsLocator ( PyCell *self ) {
|
||||
trace << "PyCell_getNetsLocator ()" << endl;
|
||||
static PyObject* PyCell_getNets ( PyCell *self ) {
|
||||
trace << "PyCell_getNets()" << endl;
|
||||
|
||||
METHOD_HEAD ( "Cell.getNetsLocator()" )
|
||||
METHOD_HEAD ( "Cell.getNets()" )
|
||||
|
||||
PyNetLocator* pyNetLocator = NULL;
|
||||
PyNetCollection* pyNetCollection = NULL;
|
||||
|
||||
HTRY
|
||||
Nets nets = cell->getNets ();
|
||||
|
||||
pyNetLocator = PyObject_NEW ( PyNetLocator, &PyTypeNetLocator );
|
||||
if (pyNetLocator == NULL) { return NULL; }
|
||||
pyNetCollection = PyObject_NEW ( PyNetCollection, &PyTypeNetCollection);
|
||||
if (pyNetCollection == NULL) { return NULL; }
|
||||
|
||||
pyNetLocator->_object = nets.getLocator ();
|
||||
pyNetCollection->_object = nets;
|
||||
HCATCH
|
||||
|
||||
return ( (PyObject*)pyNetLocator );
|
||||
return ( (PyObject*)pyNetCollection);
|
||||
}
|
||||
|
||||
|
||||
|
@ -612,7 +613,7 @@ extern "C" {
|
|||
, { "getReferencesLocator" , (PyCFunction)PyCell_getReferencesLocator , METH_VARARGS, "Returns the collection of all references belonging to the cell." }
|
||||
, { "getHyperNetsLocator" , (PyCFunction)PyCell_getHyperNetsLocator , METH_VARARGS, "Returns the collection of all hyperNets belonging to the cell." }
|
||||
, { "getNet" , (PyCFunction)PyCell_getNet , METH_VARARGS, "Returns the net of name <name> if it exists, else NULL." }
|
||||
, { "getNetsLocator" , (PyCFunction)PyCell_getNetsLocator , METH_NOARGS , "Returns the collection of all nets of the cell." }
|
||||
, { "getNets" , (PyCFunction)PyCell_getNets , METH_NOARGS , "Returns the collection of all nets of the cell." }
|
||||
, { "getExternalNetsLocator", (PyCFunction)PyCell_getExternalNetsLocator, METH_NOARGS , "Returns the collection of all external nets of the cell." }
|
||||
, { "getClockNetsLocator" , (PyCFunction)PyCell_getClockNetsLocator , METH_NOARGS , "Returns the collection of all clock nets of the cell." }
|
||||
, { "getSupplyNetsLocator", (PyCFunction)PyCell_getSupplyNetsLocator, METH_NOARGS , "Returns the collection of all supply nets of the cell." }
|
||||
|
|
|
@ -84,6 +84,7 @@
|
|||
#include "hurricane/isobar/PyComponentLocator.h"
|
||||
#include "hurricane/isobar/PyOccurrenceLocator.h"
|
||||
#include "hurricane/isobar/PyNetLocator.h"
|
||||
#include "hurricane/isobar/PyNetCollection.h"
|
||||
#include "hurricane/isobar/PyCellLocator.h"
|
||||
#include "hurricane/isobar/PyReferenceLocator.h"
|
||||
#include "hurricane/isobar/PyTechnology.h"
|
||||
|
@ -555,6 +556,7 @@ extern "C" {
|
|||
PyInstanceLocator_LinkPyType ();
|
||||
PyPlugLocator_LinkPyType ();
|
||||
PyNetLocator_LinkPyType ();
|
||||
PyNetCollection_LinkPyType ();
|
||||
PyCellLocator_LinkPyType ();
|
||||
PyPinLocator_LinkPyType ();
|
||||
PySegmentLocator_LinkPyType ();
|
||||
|
@ -607,6 +609,8 @@ extern "C" {
|
|||
PYTYPE_READY ( InstanceLocator )
|
||||
PYTYPE_READY ( PlugLocator )
|
||||
PYTYPE_READY ( NetLocator )
|
||||
PYTYPE_READY ( NetCollection )
|
||||
PYTYPE_READY ( NetCollectionLocator )
|
||||
PYTYPE_READY ( CellLocator )
|
||||
PYTYPE_READY ( PinLocator )
|
||||
PYTYPE_READY ( SegmentLocator )
|
||||
|
@ -656,6 +660,7 @@ extern "C" {
|
|||
__cs.AddType ( "refLoc" , &PyTypeReferenceLocator , "<ReferenceLocator>" , false );
|
||||
__cs.AddType ( "net" , &PyTypeNet , "<Net>" , false, "ent" );
|
||||
__cs.AddType ( "netLoc" , &PyTypeNetLocator , "<NetLocator>" , false );
|
||||
__cs.AddType ( "netCol" , &PyTypeNetCollection , "<NetCollection>" , false );
|
||||
__cs.AddType ( "hyperNet" , &PyTypeHyperNet , "<HyperNet>" , false );
|
||||
__cs.AddType ( "pin" , &PyTypePin , "<Pin>" , false, "contact" );
|
||||
__cs.AddType ( "pinLoc" , &PyTypePinLocator , "<PinLocator>" , false );
|
||||
|
|
|
@ -0,0 +1,192 @@
|
|||
#include "hurricane/isobar/PyNetCollection.h"
|
||||
#include "hurricane/isobar/PyNet.h"
|
||||
|
||||
|
||||
namespace Isobar {
|
||||
|
||||
using namespace Hurricane;
|
||||
|
||||
|
||||
extern "C" {
|
||||
|
||||
|
||||
#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(Collection<Net*>,collection,function)
|
||||
|
||||
|
||||
// x=================================================================x
|
||||
// | "PyNetCollection" Python Module Code Part |
|
||||
// x=================================================================x
|
||||
|
||||
#if defined(__PYTHON_MODULE__)
|
||||
|
||||
|
||||
// x-------------------------------------------------------------x
|
||||
// | "PyNetCollection" Attribute Methods |
|
||||
// x-------------------------------------------------------------x
|
||||
|
||||
|
||||
#if 0
|
||||
// Standart Predicates (Attributes).
|
||||
DirectGetBoolAttribute(PyNetLocator_isValid,isValid,PyNetLocator,Locator<Net*>)
|
||||
|
||||
|
||||
// Standart Locator Accessors (Attributes).
|
||||
LocatorProgressAttribute(Net)
|
||||
LocatorGetElementAttribute(Net)
|
||||
LocatorGetCloneAttribute(Net)
|
||||
|
||||
|
||||
// Standart destroy (Attribute).
|
||||
DirectDestroyAttribute(PyNetLocator_destroy, PyNetLocator)
|
||||
|
||||
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
// PyNetLocator Attribute Method table.
|
||||
|
||||
PyMethodDef PyNetLocator_Methods[] =
|
||||
{ { "isValid" , (PyCFunction)PyNetLocator_isValid , METH_NOARGS , "Returns true while the walk has not exhausted the set of elements, else false." }
|
||||
, { "progress" , (PyCFunction)PyNetLocator_progress , METH_NOARGS , "Moves forward the locator to the following element." }
|
||||
, { "getElement" , (PyCFunction)PyNetLocator_getElement , METH_NOARGS , "Returns the current element (or the value Type() when the locator is not or no longer valid)." }
|
||||
, { "getClone" , (PyCFunction)PyNetLocator_getClone , METH_NOARGS , "This function allocates and returns a new locator that will have the same visiting course than the remaining one of the locator being cloned." }
|
||||
, { "destroy" , (PyCFunction)PyNetLocator_destroy , METH_NOARGS
|
||||
, "Destroy associated hurricane object, the python object remains." }
|
||||
, {NULL, NULL, 0, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
|
||||
// x-------------------------------------------------------------x
|
||||
// | "PyNetLocator" Object Methods |
|
||||
// x-------------------------------------------------------------x
|
||||
|
||||
|
||||
DirectDeleteMethod(PyNetLocator_DeAlloc,PyNetLocator)
|
||||
LocatorPyTypeObjectLinkPyType(Net, Net*)
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
static PyObject* GetNetLocator(PyNetCollection *collection) {
|
||||
PyNetCollectionLocator* nl = PyObject_New(PyNetCollectionLocator, &PyTypeNetCollectionLocator);
|
||||
if (nl == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
Py_INCREF(nl);
|
||||
|
||||
nl->_object = collection->_object.getLocator();
|
||||
return (PyObject *)nl;
|
||||
}
|
||||
|
||||
static PyObject* NetLocatorNext(PyNetCollectionLocator* pyLocator) {
|
||||
Locator<Net*>* locator = pyLocator->_object;
|
||||
|
||||
if (locator->isValid()) {
|
||||
cerr << "akecoucou" << endl;
|
||||
Net* net = locator->getElement();
|
||||
locator->progress();
|
||||
return PyNet_Link(net);
|
||||
}
|
||||
cerr << "end" << endl;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
extern void PyNetCollection_LinkPyType () {
|
||||
trace << "PyNetCollection_LinkType()" << endl;
|
||||
PyTypeNetCollection.tp_iter = (getiterfunc)GetNetLocator; /* tp_iter */
|
||||
PyTypeNetCollectionLocator.tp_iter = PyObject_SelfIter;
|
||||
PyTypeNetCollectionLocator.tp_iternext = (iternextfunc)NetLocatorNext;
|
||||
}
|
||||
|
||||
|
||||
#else // End of Python Module Code Part.
|
||||
|
||||
|
||||
// x=================================================================x
|
||||
// | "PyNetCollection" Shared Library Code Part |
|
||||
// x=================================================================x
|
||||
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
// PyNetCollection Object Definitions.
|
||||
|
||||
PyTypeObject PyTypeNetCollection =
|
||||
{ PyObject_HEAD_INIT(NULL)
|
||||
0 /* ob_size. */
|
||||
, "Hurricane.NetCollection" /* tp_name. */
|
||||
, sizeof(PyNetCollection) /* tp_basicsize. */
|
||||
, 0 /* tp_itemsize. */
|
||||
/* methods. */
|
||||
, 0 /* tp_dealloc. */
|
||||
, 0 /* tp_print. */
|
||||
, 0 /* tp_getattr. */
|
||||
, 0 /* tp_setattr. */
|
||||
, 0 /* tp_compare. */
|
||||
, 0 /* tp_repr. */
|
||||
, 0 /* tp_as_number. */
|
||||
, 0 /* tp_as_sequence. */
|
||||
, 0 /* tp_as_mapping. */
|
||||
, 0 /* tp_hash. */
|
||||
, 0 /* tp_call. */
|
||||
, 0 /* tp_str */
|
||||
, 0 /* tp_getattro. */
|
||||
, 0 /* tp_setattro. */
|
||||
, 0 /* tp_as_buffer. */
|
||||
, Py_TPFLAGS_DEFAULT /* tp_flags. */
|
||||
, "NetCollection objects" /* tp_doc. */
|
||||
, 0 /* tp_traverse */
|
||||
, 0 /* tp_clear */
|
||||
, 0 /* tp_richcompare */
|
||||
, 0 /* tp_weaklistoffset */
|
||||
, 0 /* tp_iter */
|
||||
, 0 /* tp_iternext */
|
||||
, 0 /* tp_methods */
|
||||
, 0
|
||||
};
|
||||
|
||||
PyTypeObject PyTypeNetCollectionLocator =
|
||||
{ PyObject_HEAD_INIT(NULL)
|
||||
0 /* ob_size. */
|
||||
, "Hurricane.NetLocator" /* tp_name. */
|
||||
, sizeof(PyNetCollectionLocator) /* tp_basicsize. */
|
||||
, 0 /* tp_itemsize. */
|
||||
/* methods. */
|
||||
, 0 /* tp_dealloc. */
|
||||
, 0 /* tp_print. */
|
||||
, 0 /* tp_getattr. */
|
||||
, 0 /* tp_setattr. */
|
||||
, 0 /* tp_compare. */
|
||||
, 0 /* tp_repr. */
|
||||
, 0 /* tp_as_number. */
|
||||
, 0 /* tp_as_sequence. */
|
||||
, 0 /* tp_as_mapping. */
|
||||
, 0 /* tp_hash. */
|
||||
, 0 /* tp_call. */
|
||||
, 0 /* tp_str */
|
||||
, 0 /* tp_getattro. */
|
||||
, 0 /* tp_setattro. */
|
||||
, 0 /* tp_as_buffer. */
|
||||
, Py_TPFLAGS_DEFAULT /* tp_flags. */
|
||||
, "NetLocator objects" /* tp_doc. */
|
||||
, 0 /* tp_traverse */
|
||||
, 0 /* tp_clear */
|
||||
, 0 /* tp_richcompare */
|
||||
, 0 /* tp_weaklistoffset */
|
||||
, 0 /* tp_iter */
|
||||
, 0 /* tp_iternext */
|
||||
, 0 /* tp_methods */
|
||||
, 0
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif // End of Shared Library Code Part.
|
||||
|
||||
|
||||
} // End of extern "C".
|
||||
|
||||
|
||||
|
||||
|
||||
} // End of Isobar namespace.
|
|
@ -0,0 +1,46 @@
|
|||
#ifndef __PYNETCOLLECTION__
|
||||
#define __PYNETCOLLECTION__
|
||||
|
||||
|
||||
#include "hurricane/isobar/PyHurricane.h"
|
||||
|
||||
#include "hurricane/Net.h"
|
||||
#include "hurricane/Nets.h"
|
||||
|
||||
|
||||
namespace Isobar {
|
||||
|
||||
|
||||
extern "C" {
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Python Object : "PyNetCollection".
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
Hurricane::Nets _object;
|
||||
} PyNetCollection;
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
Hurricane::Locator<Hurricane::Net*>* _object;
|
||||
} PyNetCollectionLocator;
|
||||
|
||||
|
||||
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
// Functions & Types exported to "PyHurricane.ccp".
|
||||
|
||||
extern PyTypeObject PyTypeNetCollection;
|
||||
extern PyTypeObject PyTypeNetCollectionLocator;
|
||||
|
||||
extern void PyNetCollection_LinkPyType();
|
||||
extern void PyNetCollectionLocator_LinkPyType();
|
||||
|
||||
} // End of extern "C".
|
||||
|
||||
} // End of Isobar namespace.
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue