Add a Python hook into Kite. Python support for DebugSession.
* New: In Isobar, export the DebugSession mechanism. * New: In Kite, In KiteEngine, add the ability to run a Python script (hook) after the initialization of the KiteEngine.
This commit is contained in:
parent
9e3f9e4082
commit
e29221274e
|
@ -1,7 +1,6 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
//
|
//
|
||||||
// Copyright (c) BULL S.A. 2000-2009, All Rights Reserved
|
// Copyright (c) BULL S.A. 2000-2014, All Rights Reserved
|
||||||
//
|
//
|
||||||
// This file is part of Hurricane.
|
// This file is part of Hurricane.
|
||||||
//
|
//
|
||||||
|
@ -19,12 +18,7 @@
|
||||||
// License along with Hurricane. If not, see
|
// License along with Hurricane. If not, see
|
||||||
// <http://www.gnu.org/licenses/>.
|
// <http://www.gnu.org/licenses/>.
|
||||||
//
|
//
|
||||||
// ===================================================================
|
// +-----------------------------------------------------------------+
|
||||||
//
|
|
||||||
// $Id$
|
|
||||||
//
|
|
||||||
// x-----------------------------------------------------------------x
|
|
||||||
// | |
|
|
||||||
// | H U R R I C A N E |
|
// | H U R R I C A N E |
|
||||||
// | V L S I B a c k e n d D a t a - B a s e |
|
// | V L S I B a c k e n d D a t a - B a s e |
|
||||||
// | |
|
// | |
|
||||||
|
@ -32,25 +26,19 @@
|
||||||
// | E-mail : Jean-Paul.Chaput@lip6.fr |
|
// | E-mail : Jean-Paul.Chaput@lip6.fr |
|
||||||
// | =============================================================== |
|
// | =============================================================== |
|
||||||
// | C++ Header : "./hurricane/DebugSession.h" |
|
// | C++ Header : "./hurricane/DebugSession.h" |
|
||||||
// | *************************************************************** |
|
// +-----------------------------------------------------------------+
|
||||||
// | U p d a t e s |
|
|
||||||
// | |
|
|
||||||
// x-----------------------------------------------------------------x
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __HURRICANE_DEBUG_SESSION_H__
|
#ifndef HURRICANE_DEBUG_SESSION_H
|
||||||
#define __HURRICANE_DEBUG_SESSION_H__
|
#define HURRICANE_DEBUG_SESSION_H
|
||||||
|
|
||||||
|
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <stack>
|
#include <stack>
|
||||||
|
|
||||||
#include "hurricane/Commons.h"
|
#include "hurricane/Commons.h"
|
||||||
|
|
||||||
|
|
||||||
namespace Hurricane {
|
namespace Hurricane {
|
||||||
|
|
||||||
|
|
||||||
class Name;
|
class Name;
|
||||||
class Net;
|
class Net;
|
||||||
class Cell;
|
class Cell;
|
||||||
|
@ -62,7 +50,6 @@ namespace Hurricane {
|
||||||
// -------------------------------------------------------------------
|
// -------------------------------------------------------------------
|
||||||
// Class : "Hurricane::DebugSession".
|
// Class : "Hurricane::DebugSession".
|
||||||
|
|
||||||
|
|
||||||
class DebugSession {
|
class DebugSession {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -104,7 +91,6 @@ namespace Hurricane {
|
||||||
|
|
||||||
// Inline Functions.
|
// Inline Functions.
|
||||||
|
|
||||||
|
|
||||||
void DebugSession::open ( const void* symbol, unsigned int traceLevel )
|
void DebugSession::open ( const void* symbol, unsigned int traceLevel )
|
||||||
{
|
{
|
||||||
if ( _singleton->_isTraced(symbol) )
|
if ( _singleton->_isTraced(symbol) )
|
||||||
|
@ -136,10 +122,10 @@ namespace Hurricane {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} // End of Hurricane namespace.
|
} // Hurricane namespace.
|
||||||
|
|
||||||
|
|
||||||
INSPECTOR_P_SUPPORT(Hurricane::DebugSession);
|
INSPECTOR_P_SUPPORT(Hurricane::DebugSession);
|
||||||
|
|
||||||
|
|
||||||
#endif // __HURRICANE_DEBUG_SESSION__
|
#endif // HURRICANE_DEBUG_SESSION_H
|
||||||
|
|
|
@ -65,6 +65,7 @@
|
||||||
PyOrientation.cpp
|
PyOrientation.cpp
|
||||||
PyDbU.cpp
|
PyDbU.cpp
|
||||||
PyUpdateSession.cpp
|
PyUpdateSession.cpp
|
||||||
|
PyDebugSession.cpp
|
||||||
PyVertical.cpp
|
PyVertical.cpp
|
||||||
PyQueryMask.cpp
|
PyQueryMask.cpp
|
||||||
PyQuery.cpp
|
PyQuery.cpp
|
||||||
|
@ -127,6 +128,7 @@
|
||||||
hurricane/isobar/PyOrientation.h
|
hurricane/isobar/PyOrientation.h
|
||||||
hurricane/isobar/PyDbU.h
|
hurricane/isobar/PyDbU.h
|
||||||
hurricane/isobar/PyUpdateSession.h
|
hurricane/isobar/PyUpdateSession.h
|
||||||
|
hurricane/isobar/PyDebugSession.h
|
||||||
hurricane/isobar/PyVertical.h
|
hurricane/isobar/PyVertical.h
|
||||||
hurricane/isobar/PyQueryMask.h
|
hurricane/isobar/PyQueryMask.h
|
||||||
hurricane/isobar/PyQuery.h
|
hurricane/isobar/PyQuery.h
|
||||||
|
|
|
@ -0,0 +1,153 @@
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Software.
|
||||||
|
// Copyright (c) UPMC 2014-2014, 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 : "./PyDebugSession.cpp" |
|
||||||
|
// +-----------------------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
#include "hurricane/isobar/PyDebugSession.h"
|
||||||
|
#include "hurricane/isobar/PyEntity.h"
|
||||||
|
#include "hurricane/isobar/PyCell.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace Isobar {
|
||||||
|
|
||||||
|
using namespace Hurricane;
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
|
||||||
|
|
||||||
|
#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(DebugSession,session,function)
|
||||||
|
|
||||||
|
|
||||||
|
// +=================================================================+
|
||||||
|
// | "PyDebugSession" Python Module Code Part |
|
||||||
|
// +=================================================================+
|
||||||
|
|
||||||
|
#if defined(__PYTHON_MODULE__)
|
||||||
|
|
||||||
|
|
||||||
|
static void* PyObject_AsHurricaneSymbol ( PyObject* object )
|
||||||
|
{
|
||||||
|
return (void*)EntityCast( object );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void PyDebugSession_DeAlloc ( PyDebugSession* self )
|
||||||
|
{
|
||||||
|
trace << "PyDebugSession_DeAlloc(" << hex << self << ")" << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static PyObject* PyDebugSession_open ( PyObject*, PyObject* args )
|
||||||
|
{
|
||||||
|
trace << "PyDebugSession_open()" << endl;
|
||||||
|
|
||||||
|
HTRY
|
||||||
|
PyObject* pySymbol = NULL;
|
||||||
|
unsigned int traceLevel = 10000;
|
||||||
|
if (PyArg_ParseTuple( args
|
||||||
|
, "OI:DebugSession.open"
|
||||||
|
, &pySymbol
|
||||||
|
, &traceLevel
|
||||||
|
)) {
|
||||||
|
void* symbol = PyObject_AsHurricaneSymbol( pySymbol );
|
||||||
|
if (not symbol) {
|
||||||
|
Py_RETURN_NONE;
|
||||||
|
}
|
||||||
|
DebugSession::open( symbol, traceLevel );
|
||||||
|
} else {
|
||||||
|
PyErr_SetString( ConstructorError, "Bad parameters given to DebugSession.open()." );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
HCATCH
|
||||||
|
|
||||||
|
Py_RETURN_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static PyObject* PyDebugSession_close ( PyObject* )
|
||||||
|
{
|
||||||
|
trace << "PyDebugSession_close()" << endl;
|
||||||
|
|
||||||
|
HTRY
|
||||||
|
DebugSession::close ();
|
||||||
|
HCATCH
|
||||||
|
|
||||||
|
Py_RETURN_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static PyObject* PyDebugSession_addToTrace ( PyObject*, PyObject* args )
|
||||||
|
{
|
||||||
|
trace << "PyDebugSession_addToTrace()" << endl;
|
||||||
|
|
||||||
|
HTRY
|
||||||
|
PyObject* pySymbol = NULL;
|
||||||
|
char* netName = NULL;
|
||||||
|
if (PyArg_ParseTuple( args
|
||||||
|
, "O|s:DebugSession.addToTrace"
|
||||||
|
, &pySymbol
|
||||||
|
, &netName
|
||||||
|
)) {
|
||||||
|
if (netName) {
|
||||||
|
if (not IsPyCell(pySymbol)) Py_RETURN_NONE;
|
||||||
|
Cell* cell = PYCELL_O( pySymbol );
|
||||||
|
DebugSession::addToTrace( cell, netName );
|
||||||
|
} else {
|
||||||
|
void* symbol = PyObject_AsHurricaneSymbol( pySymbol );
|
||||||
|
if (not symbol) {
|
||||||
|
Py_RETURN_NONE;
|
||||||
|
}
|
||||||
|
DebugSession::addToTrace( symbol );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
PyErr_SetString( ConstructorError, "Bad parameters given to DebugSession.addToTrace()." );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
HCATCH
|
||||||
|
|
||||||
|
Py_RETURN_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PyMethodDef PyDebugSession_Methods[] =
|
||||||
|
{ { "open" , (PyCFunction)PyDebugSession_open , METH_VARARGS|METH_CLASS
|
||||||
|
, "Opens a new Debug Session, tracing the given symbol." }
|
||||||
|
, { "close" , (PyCFunction)PyDebugSession_close , METH_NOARGS|METH_CLASS
|
||||||
|
, "Closes an Update Session." }
|
||||||
|
, { "addToTrace", (PyCFunction)PyDebugSession_addToTrace, METH_VARARGS|METH_CLASS
|
||||||
|
, "Adds a new object to be traced." }
|
||||||
|
, {NULL, NULL, 0, NULL} /* sentinel */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
PyTypeObjectLinkPyTypeWithoutObject(DebugSession,DebugSession)
|
||||||
|
|
||||||
|
|
||||||
|
#else // End of Python Module Code Part.
|
||||||
|
|
||||||
|
|
||||||
|
// +=================================================================+
|
||||||
|
// | "PyDebugSession" Shared Library Code Part |
|
||||||
|
// +=================================================================+
|
||||||
|
|
||||||
|
|
||||||
|
PyTypeObjectDefinitions(DebugSession)
|
||||||
|
|
||||||
|
|
||||||
|
# endif // Shared Library Code Part.
|
||||||
|
|
||||||
|
} // extern "C".
|
||||||
|
|
||||||
|
} // Isobar namespace.
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
|
// -*- C++ -*-
|
||||||
//
|
//
|
||||||
// $Id: PyEntity.cpp,v 1.8 2007/04/26 13:38:47 d2 Exp $
|
// This file is part of the Coriolis Software.
|
||||||
|
// Copyright (c) UPMC 2010-2014, All Rights Reserved
|
||||||
//
|
//
|
||||||
// x-----------------------------------------------------------------x
|
// +-----------------------------------------------------------------+
|
||||||
// | |
|
|
||||||
// | C O R I O L I S |
|
// | C O R I O L I S |
|
||||||
// | I s o b a r - Hurricane / Python Interface |
|
// | I s o b a r - Hurricane / Python Interface |
|
||||||
// | |
|
// | |
|
||||||
|
@ -10,10 +11,8 @@
|
||||||
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||||
// | =============================================================== |
|
// | =============================================================== |
|
||||||
// | C++ Module : "./PyEntity.cpp" |
|
// | C++ Module : "./PyEntity.cpp" |
|
||||||
// | *************************************************************** |
|
// +-----------------------------------------------------------------+
|
||||||
// | U p d a t e s |
|
|
||||||
// | |
|
|
||||||
// x-----------------------------------------------------------------x
|
|
||||||
|
|
||||||
#include "hurricane/isobar/PyNet.h"
|
#include "hurricane/isobar/PyNet.h"
|
||||||
#include "hurricane/isobar/PyLayer.h"
|
#include "hurricane/isobar/PyLayer.h"
|
||||||
|
@ -34,25 +33,24 @@
|
||||||
|
|
||||||
namespace Isobar {
|
namespace Isobar {
|
||||||
|
|
||||||
|
|
||||||
using namespace Hurricane;
|
using namespace Hurricane;
|
||||||
|
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
||||||
|
|
||||||
// x=================================================================x
|
// +=================================================================+
|
||||||
// | "PyEntity" Python Module Code Part |
|
// | "PyEntity" Python Module Code Part |
|
||||||
// x=================================================================x
|
// +=================================================================+
|
||||||
|
|
||||||
#if defined(__PYTHON_MODULE__)
|
#if defined(__PYTHON_MODULE__)
|
||||||
|
|
||||||
#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(Entity,entity,function)
|
#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(Entity,entity,function)
|
||||||
|
|
||||||
|
|
||||||
// x-------------------------------------------------------------x
|
// +-------------------------------------------------------------+
|
||||||
// | "PyEntity" Attribute Methods |
|
// | "PyEntity" Attribute Methods |
|
||||||
// x-------------------------------------------------------------x
|
// +-------------------------------------------------------------+
|
||||||
|
|
||||||
// Standart destroy (Attribute).
|
// Standart destroy (Attribute).
|
||||||
DBoDestroyAttribute(PyEntity_destroy ,PyEntity)
|
DBoDestroyAttribute(PyEntity_destroy ,PyEntity)
|
||||||
|
@ -74,8 +72,6 @@ extern "C" {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
// PyEntity Attribute Method table.
|
// PyEntity Attribute Method table.
|
||||||
|
|
||||||
|
@ -87,11 +83,9 @@ extern "C" {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// +-------------------------------------------------------------+
|
||||||
|
|
||||||
// x-------------------------------------------------------------x
|
|
||||||
// | "PyEntity" Object Methods |
|
// | "PyEntity" Object Methods |
|
||||||
// x-------------------------------------------------------------x
|
// +-------------------------------------------------------------+
|
||||||
|
|
||||||
DBoDeleteMethod(Entity)
|
DBoDeleteMethod(Entity)
|
||||||
PyTypeObjectLinkPyType(Entity)
|
PyTypeObjectLinkPyType(Entity)
|
||||||
|
@ -100,9 +94,9 @@ extern "C" {
|
||||||
#else // End of Python Module Code Part.
|
#else // End of Python Module Code Part.
|
||||||
|
|
||||||
|
|
||||||
// x=================================================================x
|
// +=================================================================+
|
||||||
// | "PyEntity" Shared Library Code Part |
|
// | "PyEntity" Shared Library Code Part |
|
||||||
// x=================================================================x
|
// +=================================================================+
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
|
@ -156,16 +150,19 @@ extern "C" {
|
||||||
|
|
||||||
PyTypeRootObjectDefinitions(Entity)
|
PyTypeRootObjectDefinitions(Entity)
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
// PyEntity Object Definitions.
|
// PyEntity Object Definitions.
|
||||||
|
|
||||||
|
|
||||||
#endif // End of Shared Library Code Part.
|
#endif // Shared Library Code Part.
|
||||||
|
|
||||||
|
} // extern "C".
|
||||||
} // End of extern "C".
|
|
||||||
|
|
||||||
|
|
||||||
|
// +=================================================================+
|
||||||
|
// | "PyEntity" Shared Library Code Part |
|
||||||
|
// +=================================================================+
|
||||||
|
|
||||||
|
|
||||||
# if !defined(__PYTHON_MODULE__)
|
# if !defined(__PYTHON_MODULE__)
|
||||||
|
@ -187,5 +184,4 @@ Hurricane::Entity* EntityCast ( PyObject* derivedObject ) {
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
} // Isobar namespace.
|
||||||
} // End of Isobar namespace.
|
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
#include "hurricane/isobar/PyHurricane.h"
|
#include "hurricane/isobar/PyHurricane.h"
|
||||||
#include "hurricane/isobar/PyBreakpoint.h"
|
#include "hurricane/isobar/PyBreakpoint.h"
|
||||||
|
#include "hurricane/isobar/PyDebugSession.h"
|
||||||
#include "hurricane/isobar/PyUpdateSession.h"
|
#include "hurricane/isobar/PyUpdateSession.h"
|
||||||
#include "hurricane/isobar/PyDbU.h"
|
#include "hurricane/isobar/PyDbU.h"
|
||||||
#include "hurricane/isobar/PyPoint.h"
|
#include "hurricane/isobar/PyPoint.h"
|
||||||
|
@ -496,6 +497,7 @@ extern "C" {
|
||||||
DL_EXPORT(void) initHurricane () {
|
DL_EXPORT(void) initHurricane () {
|
||||||
trace << "initHurricane()" << endl;
|
trace << "initHurricane()" << endl;
|
||||||
|
|
||||||
|
PyDebugSession_LinkPyType ();
|
||||||
PyUpdateSession_LinkPyType ();
|
PyUpdateSession_LinkPyType ();
|
||||||
PyDbU_LinkPyType ();
|
PyDbU_LinkPyType ();
|
||||||
PyPoint_LinkPyType ();
|
PyPoint_LinkPyType ();
|
||||||
|
@ -556,6 +558,7 @@ extern "C" {
|
||||||
PyQuery_LinkPyType ();
|
PyQuery_LinkPyType ();
|
||||||
PyQueryMask_LinkPyType ();
|
PyQueryMask_LinkPyType ();
|
||||||
|
|
||||||
|
PYTYPE_READY ( DebugSession )
|
||||||
PYTYPE_READY ( UpdateSession )
|
PYTYPE_READY ( UpdateSession )
|
||||||
PYTYPE_READY ( Point )
|
PYTYPE_READY ( Point )
|
||||||
PYTYPE_READY ( DbU )
|
PYTYPE_READY ( DbU )
|
||||||
|
@ -745,6 +748,8 @@ extern "C" {
|
||||||
PyModule_AddObject ( module, "ContactLayer" , (PyObject*)&PyTypeContactLayer );
|
PyModule_AddObject ( module, "ContactLayer" , (PyObject*)&PyTypeContactLayer );
|
||||||
Py_INCREF ( &PyTypeNetExternalComponents );
|
Py_INCREF ( &PyTypeNetExternalComponents );
|
||||||
PyModule_AddObject ( module, "NetExternalComponents", (PyObject*)&PyTypeNetExternalComponents );
|
PyModule_AddObject ( module, "NetExternalComponents", (PyObject*)&PyTypeNetExternalComponents );
|
||||||
|
Py_INCREF ( &PyTypeDebugSession );
|
||||||
|
PyModule_AddObject ( module, "DebugSession" , (PyObject*)&PyTypeDebugSession );
|
||||||
Py_INCREF ( &PyTypeUpdateSession );
|
Py_INCREF ( &PyTypeUpdateSession );
|
||||||
PyModule_AddObject ( module, "UpdateSession" , (PyObject*)&PyTypeUpdateSession );
|
PyModule_AddObject ( module, "UpdateSession" , (PyObject*)&PyTypeUpdateSession );
|
||||||
Py_INCREF ( &PyTypeBreakpoint );
|
Py_INCREF ( &PyTypeBreakpoint );
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Software.
|
||||||
|
// Copyright (c) UPMC 2014-2014, 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++ Header : "./PyDebugSession.h" |
|
||||||
|
// +-----------------------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef ISOBAR_PY_DEBUG_SESSION_H
|
||||||
|
#define ISOBAR_PY_DEBUG_SESSION_H
|
||||||
|
|
||||||
|
#include "hurricane/isobar/PyHurricane.h"
|
||||||
|
#include "hurricane/DebugSession.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace Isobar {
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------
|
||||||
|
// Python Object : "PyDebugSession".
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
PyObject_HEAD
|
||||||
|
} PyDebugSession;
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------
|
||||||
|
// Functions & Types exported to "PyHurricane.cpp".
|
||||||
|
|
||||||
|
extern PyTypeObject PyTypeDebugSession;
|
||||||
|
extern PyMethodDef PyDebugSession_Methods[];
|
||||||
|
|
||||||
|
extern void PyDebugSession_LinkPyType ();
|
||||||
|
|
||||||
|
|
||||||
|
#define IsPyDebugSession(v) ( (v)->ob_type == &PyTypeDebugSession )
|
||||||
|
#define PYUPDATESESSION(v) ( (PyDebugSession*)(v) )
|
||||||
|
#define PYUPDATESESSION_O(v) ( PY_UPDATE_SESSION(v)->_object )
|
||||||
|
|
||||||
|
|
||||||
|
} // extern "C".
|
||||||
|
|
||||||
|
} // Isobar namespace.
|
||||||
|
|
||||||
|
# endif
|
|
@ -1,70 +1,28 @@
|
||||||
|
|
||||||
// -*- C++ -*-
|
// -*- C++ -*-
|
||||||
//
|
//
|
||||||
// This file is part of the Coriolis Project.
|
// This file is part of the Coriolis Software.
|
||||||
// Copyright (C) Laboratoire LIP6 - Departement ASIM
|
// Copyright (c) UPMC 2010-2014, All Rights Reserved
|
||||||
// Universite Pierre et Marie Curie
|
|
||||||
//
|
//
|
||||||
// Main contributors :
|
// +-----------------------------------------------------------------+
|
||||||
// Christophe Alexandre <Christophe.Alexandre@lip6.fr>
|
|
||||||
// Sophie Belloeil <Sophie.Belloeil@lip6.fr>
|
|
||||||
// Hugo Clément <Hugo.Clement@lip6.fr>
|
|
||||||
// Jean-Paul Chaput <Jean-Paul.Chaput@lip6.fr>
|
|
||||||
// Damien Dupuis <Damien.Dupuis@lip6.fr>
|
|
||||||
// Christian Masson <Christian.Masson@lip6.fr>
|
|
||||||
// Marek Sroka <Marek.Sroka@lip6.fr>
|
|
||||||
//
|
|
||||||
// The Coriolis Project is free software; you can redistribute it
|
|
||||||
// and/or modify it under the terms of the GNU General Public License
|
|
||||||
// as published by the Free Software Foundation; either version 2 of
|
|
||||||
// the License, or (at your option) any later version.
|
|
||||||
//
|
|
||||||
// The Coriolis Project is distributed in the hope that it will be
|
|
||||||
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
|
||||||
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with the Coriolis Project; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
||||||
// USA
|
|
||||||
//
|
|
||||||
// License-Tag
|
|
||||||
// Authors-Tag
|
|
||||||
// ===================================================================
|
|
||||||
//
|
|
||||||
// $Id: PyEntity.h,v 1.3 2006/05/03 14:00:02 jpc Exp $
|
|
||||||
//
|
|
||||||
// x-----------------------------------------------------------------x
|
|
||||||
// | |
|
|
||||||
// | C O R I O L I S |
|
// | C O R I O L I S |
|
||||||
// | I s o b a r - Hurricane / Python Interface |
|
// | I s o b a r - Hurricane / Python Interface |
|
||||||
// | |
|
// | |
|
||||||
// | Author : Sophie BELLOEIL |
|
// | Author : Sophie BELLOEIL |
|
||||||
// | E-mail : Sophie.Belloeil@asim.lip6.fr |
|
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||||
// | =============================================================== |
|
// | =============================================================== |
|
||||||
// | C++ Header : "./PyEntity.h" |
|
// | C++ Header : "./hurricane/isobar/PyEntity.h" |
|
||||||
// | *************************************************************** |
|
// +-----------------------------------------------------------------+
|
||||||
// | U p d a t e s |
|
|
||||||
// | |
|
|
||||||
// x-----------------------------------------------------------------x
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef ISOBAR_PY_ENTITY_H
|
||||||
|
#define ISOBAR_PY_ENTITY_H
|
||||||
|
|
||||||
#ifndef __PYENTITY__
|
|
||||||
#define __PYENTITY__
|
|
||||||
|
|
||||||
|
|
||||||
#include "hurricane/isobar/PyHurricane.h"
|
#include "hurricane/isobar/PyHurricane.h"
|
||||||
|
|
||||||
#include "hurricane/Entity.h"
|
#include "hurricane/Entity.h"
|
||||||
|
|
||||||
|
|
||||||
namespace Isobar {
|
namespace Isobar {
|
||||||
|
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
||||||
|
|
||||||
|
@ -77,12 +35,9 @@ extern "C" {
|
||||||
} PyEntity;
|
} PyEntity;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// -------------------------------------------------------------------
|
// -------------------------------------------------------------------
|
||||||
// Functions & Types exported to "PyHurricane.ccp".
|
// Functions & Types exported to "PyHurricane.ccp".
|
||||||
|
|
||||||
|
|
||||||
extern PyObject* PyEntity_NEW ( Hurricane::Entity* entity );
|
extern PyObject* PyEntity_NEW ( Hurricane::Entity* entity );
|
||||||
extern void PyEntity_LinkPyType ();
|
extern void PyEntity_LinkPyType ();
|
||||||
|
|
||||||
|
@ -95,17 +50,12 @@ extern "C" {
|
||||||
#define PYENTITY_O(v) ( PYENTITY(v)->_object )
|
#define PYENTITY_O(v) ( PYENTITY(v)->_object )
|
||||||
|
|
||||||
|
|
||||||
} // End of extern "C".
|
} // extern "C".
|
||||||
|
|
||||||
|
|
||||||
Hurricane::Entity* EntityCast ( PyObject* derivedObject );
|
Hurricane::Entity* EntityCast ( PyObject* derivedObject );
|
||||||
|
|
||||||
|
|
||||||
|
} // Isobar namespace.
|
||||||
|
|
||||||
|
#endif // ISOBAR_PY_ENTITY_H
|
||||||
} // End of Isobar namespace.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -114,4 +114,7 @@
|
||||||
install ( FILES ${includes}
|
install ( FILES ${includes}
|
||||||
${mocIncludes}
|
${mocIncludes}
|
||||||
${pyIncludes} DESTINATION include/coriolis2/kite )
|
${pyIncludes} DESTINATION include/coriolis2/kite )
|
||||||
|
install ( FILES init/kiteInit.py
|
||||||
|
DESTINATION ${PYTHON_SITE_PACKAGES}/kite )
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,9 +14,11 @@
|
||||||
// +-----------------------------------------------------------------+
|
// +-----------------------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
#include <Python.h>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
#include "vlsisapd/utilities/Path.h"
|
||||||
#include "hurricane/DebugSession.h"
|
#include "hurricane/DebugSession.h"
|
||||||
#include "hurricane/Bug.h"
|
#include "hurricane/Bug.h"
|
||||||
#include "hurricane/Error.h"
|
#include "hurricane/Error.h"
|
||||||
|
@ -30,6 +32,7 @@
|
||||||
#include "hurricane/Instance.h"
|
#include "hurricane/Instance.h"
|
||||||
#include "hurricane/Vertical.h"
|
#include "hurricane/Vertical.h"
|
||||||
#include "hurricane/Horizontal.h"
|
#include "hurricane/Horizontal.h"
|
||||||
|
#include "hurricane/viewer/Script.h"
|
||||||
#include "crlcore/Measures.h"
|
#include "crlcore/Measures.h"
|
||||||
#include "knik/Vertex.h"
|
#include "knik/Vertex.h"
|
||||||
#include "knik/Edge.h"
|
#include "knik/Edge.h"
|
||||||
|
@ -43,6 +46,7 @@
|
||||||
#include "kite/TrackSegment.h"
|
#include "kite/TrackSegment.h"
|
||||||
#include "kite/NegociateWindow.h"
|
#include "kite/NegociateWindow.h"
|
||||||
#include "kite/KiteEngine.h"
|
#include "kite/KiteEngine.h"
|
||||||
|
#include "kite/PyKiteEngine.h"
|
||||||
|
|
||||||
|
|
||||||
namespace Kite {
|
namespace Kite {
|
||||||
|
@ -58,6 +62,7 @@ namespace Kite {
|
||||||
using std::setprecision;
|
using std::setprecision;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
using std::make_pair;
|
using std::make_pair;
|
||||||
|
using Hurricane::dbo_ptr;
|
||||||
using Hurricane::DebugSession;
|
using Hurricane::DebugSession;
|
||||||
using Hurricane::tab;
|
using Hurricane::tab;
|
||||||
using Hurricane::inltrace;
|
using Hurricane::inltrace;
|
||||||
|
@ -72,6 +77,7 @@ namespace Kite {
|
||||||
using Hurricane::Torus;
|
using Hurricane::Torus;
|
||||||
using Hurricane::Layer;
|
using Hurricane::Layer;
|
||||||
using Hurricane::Cell;
|
using Hurricane::Cell;
|
||||||
|
using CRL::System;
|
||||||
using CRL::addMeasure;
|
using CRL::addMeasure;
|
||||||
using CRL::Measures;
|
using CRL::Measures;
|
||||||
using CRL::MeasuresSet;
|
using CRL::MeasuresSet;
|
||||||
|
@ -119,6 +125,27 @@ namespace Kite {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void KiteEngine::_runKiteInit ()
|
||||||
|
{
|
||||||
|
Utilities::Path pythonSitePackages = System::getPath("pythonSitePackages");
|
||||||
|
Utilities::Path systemConfDir = pythonSitePackages / "kite";
|
||||||
|
Utilities::Path systemConfFile = systemConfDir / "kiteInit.py";
|
||||||
|
|
||||||
|
if (systemConfFile.exists()) {
|
||||||
|
Isobar::Script::addPath( systemConfDir.string() );
|
||||||
|
|
||||||
|
dbo_ptr<Isobar::Script> script = Isobar::Script::create( systemConfFile.stem().string() );
|
||||||
|
script->addKwArgument( "kite" , (PyObject*)PyKiteEngine_Link(this) );
|
||||||
|
script->runFunction ( "kiteHook", getCell() );
|
||||||
|
|
||||||
|
Isobar::Script::removePath( systemConfDir.string() );
|
||||||
|
} else {
|
||||||
|
cerr << Warning("Kite system configuration file:\n <%s> not found."
|
||||||
|
,systemConfFile.string().c_str()) << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void KiteEngine::_initDataBase ()
|
void KiteEngine::_initDataBase ()
|
||||||
{
|
{
|
||||||
ltrace(90) << "KiteEngine::_initDataBase()" << endl;
|
ltrace(90) << "KiteEngine::_initDataBase()" << endl;
|
||||||
|
@ -132,6 +159,7 @@ namespace Kite {
|
||||||
buildPowerRails();
|
buildPowerRails();
|
||||||
protectRoutingPads();
|
protectRoutingPads();
|
||||||
Session::close();
|
Session::close();
|
||||||
|
_runKiteInit();
|
||||||
|
|
||||||
ltraceout(90);
|
ltraceout(90);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
try:
|
||||||
|
import sys
|
||||||
|
import os.path
|
||||||
|
from helpers import ErrorMessage
|
||||||
|
from helpers import WarningMessage
|
||||||
|
import Viewer
|
||||||
|
except ImportError, e:
|
||||||
|
module = str(e).split()[-1]
|
||||||
|
|
||||||
|
print '[ERROR] The <%s> python module or symbol cannot be loaded.' % module
|
||||||
|
print ' Please check the integrity of the <coriolis> package.'
|
||||||
|
sys.exit(1)
|
||||||
|
except Exception, e:
|
||||||
|
print '[ERROR] A strange exception occurred while loading the basic Coriolis/Python'
|
||||||
|
print ' modules. Something may be wrong at Python/C API level.\n'
|
||||||
|
print ' %s' % e
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
|
||||||
|
def kiteHook ( **kw ):
|
||||||
|
kite = None
|
||||||
|
if kw.has_key('kite'):
|
||||||
|
kite = kw['kite']
|
||||||
|
else:
|
||||||
|
print ErrorMessage( 3, 'kiteHook(): Must be run from a KiteEngine.' )
|
||||||
|
return
|
||||||
|
|
||||||
|
userInit = os.path.join( os.getcwd(), '.coriolis2.kite.py' )
|
||||||
|
if (os.path.exists(userInit)):
|
||||||
|
execfile( userInit )
|
||||||
|
return
|
|
@ -110,6 +110,7 @@ namespace Kite {
|
||||||
void runGlobalRouter ( unsigned int mode );
|
void runGlobalRouter ( unsigned int mode );
|
||||||
virtual void loadGlobalRouting ( unsigned int method );
|
virtual void loadGlobalRouting ( unsigned int method );
|
||||||
virtual void finalizeLayout ();
|
virtual void finalizeLayout ();
|
||||||
|
void _runKiteInit ();
|
||||||
void _gutKite ();
|
void _gutKite ();
|
||||||
void _computeCagedConstraints ();
|
void _computeCagedConstraints ();
|
||||||
TrackElement* _lookup ( Segment* ) const;
|
TrackElement* _lookup ( Segment* ) const;
|
||||||
|
|
|
@ -90,7 +90,7 @@ namespace Unicorn {
|
||||||
|
|
||||||
Isobar::Script::removePath( systemConfDir.string() );
|
Isobar::Script::removePath( systemConfDir.string() );
|
||||||
} else {
|
} else {
|
||||||
cerr << Warning("System configuration file:\n <%s> not found."
|
cerr << Warning("Unicorn system configuration file:\n <%s> not found."
|
||||||
,systemConfFile.string().c_str()) << endl;
|
,systemConfFile.string().c_str()) << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue