// -*- C++ -*- // // This file is part of the Coriolis Software. // Copyright (c) UPMC 2019-2019, All Rights Reserved // // +-----------------------------------------------------------------+ // | C O R I O L I S | // | B o r a - A n a l o g S l i c i n g T r e e | // | | // | Author : Jean-Paul Chaput | // | E-mail : Jean-Paul.Chaput@lip6.fr | // | =============================================================== | // | C++ Module : "./bora/PyMatrixParameterRange.cpp" | // +-----------------------------------------------------------------+ #include "hurricane/analog/PyMatrix.h" #include "bora/PyMatrixParameterRange.h" namespace Bora { using namespace Hurricane; using namespace Isobar; extern "C" { #undef ACCESS_OBJECT #undef ACCESS_CLASS #define ACCESS_OBJECT _baseObject._object #define ACCESS_CLASS(_pyObject) &(_pyObject->_baseObject) #define METHOD_HEAD(function) GENERIC_METHOD_HEAD(MatrixParameterRange,range,function) // +=================================================================+ // | "PyMatrixParameterRange" Python Module Code Part | // +=================================================================+ #if defined(__PYTHON_MODULE__) static PyObject* PyMatrixParameterRange_NEW ( PyObject* , PyObject* args ) { MatrixParameterRange* range = NULL; HTRY range = new MatrixParameterRange(); HCATCH return PyMatrixParameterRange_Link(range); } static int PyMatrixParameterRange_Init ( PyMatrixParameterRange* self, PyObject* args, PyObject* kwargs ) { cdebug_log(20,0) << "PyMatrixParameterRange_Init(): " << (void*)self << endl; return 0; } static PyObject* PyMatrixParameterRange_addValue ( PyMatrixParameterRange* self, PyObject* args ) { PyObject* pyMatrix = NULL; METHOD_HEAD( "MatrixParameterRange.addValue()" ); HTRY if (not PyArg_ParseTuple( args,"O:MatrixParameterRange.addValue", &pyMatrix ) ) { PyErr_SetString ( ConstructorError, "MatrixParameterRange.addValue(): Invalid/bad number of parameters ." ); return NULL; } if (not IsPyMatrix(pyMatrix)) { if (not PyList_Check(pyMatrix)) { PyErr_SetString( ConstructorError, "MatrixParameterRange.addValue(): Argument is neither of type Matrix not list of list." ); return NULL; } Matrix m = Matrix_FromListOfList( pyMatrix ); if (m.empty()) return NULL; range->addValue( &m ); } else { range->addValue( PYMATRIX_O(pyMatrix) ); } HCATCH Py_RETURN_NONE; } static PyObject* PyMatrixParameterRange_getValue ( PyMatrixParameterRange* self, PyObject* args ) { PyMatrix* pyMatrix = NULL; METHOD_HEAD( "MatrixParameterRange.getValue()" ); HTRY pyMatrix = PyObject_NEW( PyMatrix, &PyTypeMatrix ); if (pyMatrix == NULL) { return NULL; } pyMatrix->_object = new Matrix( range->getValue() ); HCATCH return (PyObject*)pyMatrix; } DirectDeleteMethod(PyMatrixParameterRange_DeAlloc,PyMatrixParameterRange) // --------------------------------------------------------------- // PyMatrixParameterRange Attribute Method table. PyMethodDef PyMatrixParameterRange_Methods[] = { { "getValue" , (PyCFunction)PyMatrixParameterRange_getValue , METH_NOARGS , "To be documented." } , { "addValue" , (PyCFunction)PyMatrixParameterRange_addValue , METH_VARARGS, "To be documented." } , { NULL, NULL, 0, NULL } /* sentinel */ }; // +-------------------------------------------------------------+ // | "PyMatrixParameterRange" Object Methods | // +-------------------------------------------------------------+ PyTypeObjectLinkPyTypeNewInit(MatrixParameterRange) #else // End of Python Module Code Part. // +=================================================================+ // | "PyMatrixParameterRange" Shared Library Code Part | // +=================================================================+ extern LinkCreateMethod(MatrixParameterRange); PyTypeInheritedObjectDefinitions(MatrixParameterRange, ParameterRange) #endif // End of Shared Library Code Part. } // extern "C". } // Bora namespace.