Allow to demote Net external component to "internal", export to Python.

This commit is contained in:
Jean-Paul Chaput 2021-02-17 23:20:24 +01:00
parent 21c269a855
commit 07b51b10c7
3 changed files with 28 additions and 5 deletions

View File

@ -67,6 +67,10 @@ namespace Hurricane {
} }
void NetExternalComponents::setInternal ( Component* component )
{ component->removeProperty( _name ); }
void NetExternalComponents::setExternal ( Component* component ) void NetExternalComponents::setExternal ( Component* component )
{ {
Net* net = component->getNet(); Net* net = component->getNet();

View File

@ -29,9 +29,7 @@
// +-----------------------------------------------------------------+ // +-----------------------------------------------------------------+
#ifndef HURRICANE_NET_EXTERNAL_COMPONENTS_H #pragma once
#define HURRICANE_NET_EXTERNAL_COMPONENTS_H
#include "hurricane/Component.h" #include "hurricane/Component.h"
#include "hurricane/Relation.h" #include "hurricane/Relation.h"
@ -44,6 +42,7 @@ namespace Hurricane {
class NetExternalComponents { class NetExternalComponents {
public: public:
static Components get ( const Net* ); static Components get ( const Net* );
static void setInternal ( Component* );
static void setExternal ( Component* ); static void setExternal ( Component* );
static bool isExternal ( Component* ); static bool isExternal ( Component* );
static void toJson ( JsonWriter*, const Net* ); static void toJson ( JsonWriter*, const Net* );
@ -69,5 +68,3 @@ namespace Hurricane {
} // Hurricane namespace. } // Hurricane namespace.
#endif // HURRICANE_NET_EXTERNAL_COMPONENTS_H

View File

@ -61,6 +61,26 @@ extern "C" {
} }
static PyObject* PyNetInternalComponents_setInternal ( PyObject*, PyObject *args )
{
cdebug_log(20,0) << "PyNetInternalComponents_setInternal()" << endl;
HTRY
PyObject* pyComponent;
if (PyArg_ParseTuple( args, "O", &pyComponent )) {
if (not PyObject_IsInstance(pyComponent,(PyObject*)&PyTypeComponent)) {
PyErr_SetString( ConstructorError, "NetInternalComponents.setInternal(): First argument is not of type Component." );
return NULL;
}
NetExternalComponents::setInternal( PYCOMPONENT_O(pyComponent) );
} else {
PyErr_SetString( ConstructorError, "Bad parameters given to NetInternalComponents.setInternal()." );
return NULL;
}
HCATCH
Py_RETURN_NONE;
}
static PyObject* PyNetExternalComponents_setExternal ( PyObject*, PyObject *args ) static PyObject* PyNetExternalComponents_setExternal ( PyObject*, PyObject *args )
{ {
cdebug_log(20,0) << "PyNetExternalComponents_setExternal()" << endl; cdebug_log(20,0) << "PyNetExternalComponents_setExternal()" << endl;
@ -110,6 +130,8 @@ extern "C" {
PyMethodDef PyNetExternalComponents_Methods[] = PyMethodDef PyNetExternalComponents_Methods[] =
{ { "isExternal" , (PyCFunction)PyNetExternalComponents_isExternal , METH_VARARGS|METH_CLASS { { "isExternal" , (PyCFunction)PyNetExternalComponents_isExternal , METH_VARARGS|METH_CLASS
, "Tells if Component belong to the externals of the Net." } , "Tells if Component belong to the externals of the Net." }
, { "setInternal", (PyCFunction)PyNetInternalComponents_setInternal, METH_VARARGS|METH_CLASS
, "Remove the Component from the external part of it's Net." }
, { "setExternal", (PyCFunction)PyNetExternalComponents_setExternal, METH_VARARGS|METH_CLASS , { "setExternal", (PyCFunction)PyNetExternalComponents_setExternal, METH_VARARGS|METH_CLASS
, "Flag the Component as belonging to to the external part of it's Net." } , "Flag the Component as belonging to to the external part of it's Net." }
, { "get" , (PyCFunction)PyNetExternalComponents_get , METH_VARARGS|METH_CLASS , { "get" , (PyCFunction)PyNetExternalComponents_get , METH_VARARGS|METH_CLASS