153 lines
4.9 KiB
C++
153 lines
4.9 KiB
C++
// -*- C++ -*-
|
|
//
|
|
// This file is part of the Coriolis Software.
|
|
// Copyright (c) UPMC 2008-2016, All Rights Reserved
|
|
//
|
|
// +-----------------------------------------------------------------+
|
|
// | C O R I O L I S |
|
|
// | I s o b a r - Hurricane / Python Interface |
|
|
// | |
|
|
// | Author : Jean-Paul CHAPUT |
|
|
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
|
// | =============================================================== |
|
|
// | C++ Module : "./PyNetExternalComponents.cpp" |
|
|
// +-----------------------------------------------------------------+
|
|
|
|
|
|
#include "hurricane/isobar/PyNet.h"
|
|
#include "hurricane/isobar/PyComponent.h"
|
|
#include "hurricane/isobar/PyComponentCollection.h"
|
|
#include "hurricane/isobar/PyNetExternalComponents.h"
|
|
|
|
|
|
namespace Isobar {
|
|
|
|
using namespace Hurricane;
|
|
|
|
extern "C" {
|
|
|
|
|
|
#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(NetExternalComponents,property,function)
|
|
|
|
|
|
// x=================================================================x
|
|
// | "PyNetExternalComponents" Python Module Code Part |
|
|
// x=================================================================x
|
|
|
|
#if defined(__PYTHON_MODULE__)
|
|
|
|
|
|
static void PyNetExternalComponents_DeAlloc ( PyNetExternalComponents* self )
|
|
{
|
|
cdebug_log(20,0) << "PySingletonObject_DeAlloc(" << hex << self << ")" << endl;
|
|
}
|
|
|
|
|
|
static PyObject* PyNetExternalComponents_isExternal ( PyObject*, PyObject *args )
|
|
{
|
|
cdebug_log(20,0) << "PyNetExternalComponents_isExternal()" << endl;
|
|
|
|
bool isExternal = false;
|
|
|
|
HTRY
|
|
PyObject* arg0;
|
|
if ( not ParseOneArg ( "NetExternalComponents.isExternal()", args, COMP_ARG, &arg0) ) return NULL;
|
|
|
|
isExternal = NetExternalComponents::isExternal(PYCOMPONENT_O(arg0));
|
|
HCATCH
|
|
|
|
if ( isExternal ) Py_RETURN_TRUE;
|
|
Py_RETURN_FALSE;
|
|
}
|
|
|
|
|
|
static PyObject* PyNetExternalComponents_setExternal ( PyObject*, PyObject *args )
|
|
{
|
|
cdebug_log(20,0) << "PyNetExternalComponents_setExternal()" << endl;
|
|
|
|
HTRY
|
|
PyObject* pyComponent;
|
|
if (PyArg_ParseTuple( args, "O", &pyComponent )) {
|
|
if (not PyObject_IsInstance(pyComponent,(PyObject*)&PyTypeComponent)) {
|
|
PyErr_SetString( ConstructorError, "NetExternalComponents.setExternal(): First argument is not of type Component." );
|
|
return NULL;
|
|
}
|
|
NetExternalComponents::setExternal( PYCOMPONENT_O(pyComponent) );
|
|
} else {
|
|
PyErr_SetString( ConstructorError, "Bad parameters given to NetExternalComponents.setExternal()." );
|
|
return NULL;
|
|
}
|
|
HCATCH
|
|
|
|
Py_RETURN_NONE;
|
|
}
|
|
|
|
|
|
static PyObject* PyNetExternalComponents_get ( PyObject*, PyObject* args )
|
|
{
|
|
cdebug_log(20,0) << "PyNetExternalComponents_getExternalComponents()" << endl;
|
|
|
|
PyObject* arg0;
|
|
|
|
PyComponentCollection* pyComponentCollection = NULL;
|
|
|
|
HTRY
|
|
|
|
if ( not ParseOneArg ( "getExternalComponents", args, ":ent", &arg0) ) return NULL;
|
|
Components* components = new Components(NetExternalComponents::get(PYNET_O(arg0)));
|
|
|
|
pyComponentCollection = PyObject_NEW(PyComponentCollection, &PyTypeComponentCollection);
|
|
if (pyComponentCollection == NULL) { return NULL; }
|
|
|
|
pyComponentCollection->_object = components;
|
|
|
|
HCATCH
|
|
|
|
return (PyObject*)pyComponentCollection;
|
|
}
|
|
|
|
|
|
PyMethodDef PyNetExternalComponents_Methods[] =
|
|
{ { "isExternal" , (PyCFunction)PyNetExternalComponents_isExternal , METH_VARARGS|METH_CLASS
|
|
, "Tells if Component belong to the externals of the Net." }
|
|
, { "setExternal", (PyCFunction)PyNetExternalComponents_setExternal, METH_VARARGS|METH_CLASS
|
|
, "Flag the Component as belonging to to the external part of it's Net." }
|
|
, { "get" , (PyCFunction)PyNetExternalComponents_get , METH_VARARGS|METH_CLASS
|
|
, "Returns the Collection of external components of the Net." }
|
|
, {NULL, NULL, 0, NULL} /* sentinel */
|
|
};
|
|
|
|
|
|
PyTypeObjectLinkPyTypeWithoutObject(NetExternalComponents,NetExternalComponents)
|
|
|
|
|
|
// extern void PyNetExternalComponents_LinkPyType()
|
|
// {
|
|
// cdebug_log(20,0) << "PyNetExternalComponents_LinkType()" << endl;
|
|
|
|
// PyTypeNetExternalComponents.tp_new = (newfunc) PyType_GenericNew;
|
|
// PyTypeNetExternalComponents.tp_dealloc = (destructor)PyNetExternalComponents_DeAlloc;
|
|
// PyTypeNetExternalComponents.tp_methods = PyNetExternalComponents_Methods;
|
|
// }
|
|
|
|
|
|
#else // End of Python Module Code Part.
|
|
|
|
|
|
// x=================================================================x
|
|
// | "PyNetExternalComponents" Shared Library Code Part |
|
|
// x=================================================================x
|
|
|
|
|
|
PyTypeObjectDefinitions(NetExternalComponents)
|
|
|
|
|
|
# endif // End of Shared Library Code Part.
|
|
|
|
|
|
} // End of extern "C".
|
|
|
|
|
|
} // Isobar namespace.
|
|
|