150 lines
5.3 KiB
C++
150 lines
5.3 KiB
C++
// -*- C++ -*-
|
|
//
|
|
// This file is part of the Coriolis Software.
|
|
// Copyright (c) Sorbonne Université 2016-2021, 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/PyBora.cpp" |
|
|
// +-----------------------------------------------------------------+
|
|
|
|
|
|
#include "hurricane/isobar/PyHurricane.h"
|
|
#include "hurricane/isobar/PyCell.h"
|
|
#include "bora/PyParameterRange.h"
|
|
#include "bora/PyStepParameterRange.h"
|
|
#include "bora/PyMatrixParameterRange.h"
|
|
#include "bora/PySlicingNode.h"
|
|
#include "bora/PyHSlicingNode.h"
|
|
#include "bora/PyVSlicingNode.h"
|
|
#include "bora/PyDSlicingNode.h"
|
|
#include "bora/PyRHSlicingNode.h"
|
|
#include "bora/PyRVSlicingNode.h"
|
|
#include "bora/PyBoraEngine.h"
|
|
#include "bora/PyGraphicBoraEngine.h"
|
|
|
|
|
|
namespace Bora {
|
|
|
|
using std::cerr;
|
|
using std::endl;
|
|
using Hurricane::tab;
|
|
using Isobar::getPyHash;
|
|
using Isobar::__cs;
|
|
using CRL::PyTypeToolEngine;
|
|
using CRL::PyTypeGraphicTool;
|
|
|
|
|
|
#if !defined(__PYTHON_MODULE__)
|
|
|
|
// +=================================================================+
|
|
// | "PyBora" Shared Library Code Part |
|
|
// +=================================================================+
|
|
|
|
|
|
#else // PyBora Shared Library Code Part.
|
|
|
|
|
|
// +=================================================================+
|
|
// | "PyBora" Python Module Code Part |
|
|
// +=================================================================+
|
|
|
|
|
|
extern "C" {
|
|
|
|
|
|
static PyMethodDef PyBora_Methods[] =
|
|
{ {NULL, NULL, 0, NULL} /* sentinel */
|
|
};
|
|
|
|
|
|
static PyModuleDef PyBora_ModuleDef =
|
|
{ PyModuleDef_HEAD_INIT
|
|
, .m_name = "Bora"
|
|
, .m_doc = "Analog Place & Global Route."
|
|
, .m_size = -1
|
|
, .m_methods = PyBora_Methods
|
|
};
|
|
|
|
|
|
// ---------------------------------------------------------------
|
|
// Module Initialization : "PyInit_Bora ()"
|
|
|
|
PyMODINIT_FUNC PyInit_Bora ( void )
|
|
{
|
|
cdebug.log(61) << "PyInit_Bora()" << endl;
|
|
|
|
PyParameterRange_LinkPyType();
|
|
PyStepParameterRange_LinkPyType();
|
|
PyMatrixParameterRange_LinkPyType();
|
|
PySlicingNode_LinkPyType();
|
|
PyHSlicingNode_LinkPyType();
|
|
PyVSlicingNode_LinkPyType();
|
|
PyDSlicingNode_LinkPyType();
|
|
PyRHSlicingNode_LinkPyType();
|
|
PyRVSlicingNode_LinkPyType();
|
|
PyBoraEngine_LinkPyType();
|
|
PyGraphicBoraEngine_LinkPyType();
|
|
|
|
PYTYPE_READY( ParameterRange )
|
|
PYTYPE_READY( SlicingNode )
|
|
|
|
PYTYPE_READY_SUB( StepParameterRange , ParameterRange );
|
|
PYTYPE_READY_SUB( MatrixParameterRange, ParameterRange );
|
|
PYTYPE_READY_SUB( HSlicingNode , SlicingNode );
|
|
PYTYPE_READY_SUB( VSlicingNode , SlicingNode );
|
|
PYTYPE_READY_SUB( DSlicingNode , SlicingNode );
|
|
PYTYPE_READY_SUB( RHSlicingNode , SlicingNode );
|
|
PYTYPE_READY_SUB( RVSlicingNode , SlicingNode );
|
|
PYTYPE_READY_SUB( BoraEngine , ToolEngine );
|
|
PYTYPE_READY_SUB( GraphicBoraEngine , GraphicTool );
|
|
|
|
PyObject* module = PyModule_Create( &PyBora_ModuleDef );
|
|
if (module == NULL) {
|
|
cerr << "[ERROR]\n"
|
|
<< " Failed to initialize Bora module." << endl;
|
|
return NULL;
|
|
}
|
|
|
|
Py_INCREF( &PyTypeParameterRange );
|
|
PyModule_AddObject( module, "ParameterRange" , (PyObject*)&PyTypeParameterRange );
|
|
Py_INCREF( &PyTypeStepParameterRange );
|
|
PyModule_AddObject( module, "StepParameterRange" , (PyObject*)&PyTypeStepParameterRange );
|
|
Py_INCREF( &PyTypeMatrixParameterRange );
|
|
PyModule_AddObject( module, "MatrixParameterRange", (PyObject*)&PyTypeMatrixParameterRange );
|
|
Py_INCREF( &PyTypeSlicingNode );
|
|
PyModule_AddObject( module, "SlicingNode" , (PyObject*)&PyTypeSlicingNode );
|
|
Py_INCREF( &PyTypeHSlicingNode );
|
|
PyModule_AddObject( module, "HSlicingNode" , (PyObject*)&PyTypeHSlicingNode );
|
|
Py_INCREF( &PyTypeVSlicingNode );
|
|
PyModule_AddObject( module, "VSlicingNode" , (PyObject*)&PyTypeVSlicingNode );
|
|
Py_INCREF( &PyTypeDSlicingNode );
|
|
PyModule_AddObject( module, "DSlicingNode" , (PyObject*)&PyTypeDSlicingNode );
|
|
Py_INCREF( &PyTypeRHSlicingNode );
|
|
PyModule_AddObject( module, "RHSlicingNode" , (PyObject*)&PyTypeRHSlicingNode );
|
|
Py_INCREF( &PyTypeRVSlicingNode );
|
|
PyModule_AddObject( module, "RVSlicingNode" , (PyObject*)&PyTypeRVSlicingNode );
|
|
Py_INCREF( &PyTypeBoraEngine );
|
|
PyModule_AddObject( module, "BoraEngine" , (PyObject*)&PyTypeBoraEngine );
|
|
Py_INCREF( &PyTypeGraphicBoraEngine );
|
|
PyModule_AddObject( module, "GraphicBoraEngine" , (PyObject*)&PyTypeGraphicBoraEngine );
|
|
|
|
PySlicingNode_postModuleInit();
|
|
PyBoraEngine_postModuleInit();
|
|
|
|
return module;
|
|
}
|
|
|
|
|
|
} // extern "C".
|
|
|
|
|
|
#endif // Python Module Code Part.
|
|
|
|
} // Bora namespace.
|