coriolis/crlcore/src/pyCRL/PyConstant.cpp

100 lines
3.1 KiB
C++

// -*- C++ -*-
//
// This file is part of the Coriolis Software.
// Copyright (c) UPMC 2018-2018, All Rights Reserved
//
// +-----------------------------------------------------------------+
// | C O R I O L I S |
// | Alliance / Hurricane Interface |
// | |
// | Author : Jean-Paul CHAPUT |
// | E-mail : Jean-Paul.Chaput@lip6.fr |
// | =============================================================== |
// | C++ Module : "./PyConstant.cpp" |
// +-----------------------------------------------------------------+
#include "hurricane/isobar/PyHurricane.h"
#include "crlcore/PyRoutingLayerGauge.h"
namespace Constant {
using std::cerr;
using std::endl;
using std::string;
using Hurricane::tab;
using Hurricane::Exception;
using Hurricane::Bug;
using Hurricane::Error;
using Hurricane::Warning;
using Isobar::ProxyProperty;
using Isobar::ProxyError;
using Isobar::ConstructorError;
using Isobar::HurricaneError;
using Isobar::HurricaneWarning;
using Isobar::getPyHash;
using Isobar::__cs;
#if !defined(__PYTHON_MODULE__)
// +=================================================================+
// | "PyConstant" Shared Library Code Part |
// +=================================================================+
# else // End of PyHurricane Shared Library Code Part.
// +=================================================================+
// | "PyConstant" Python Module Code Part |
// +=================================================================+
extern "C" {
static void LoadConstants ( PyObject* dictionnary ) {
PyObject* constant;
LoadObjectConstant( dictionnary, Constant::Horizontal, "Horizontal" )
LoadObjectConstant( dictionnary, Constant::Vertical , "Vertical" )
LoadObjectConstant( dictionnary, Constant::Default , "Default" )
LoadObjectConstant( dictionnary, Constant::PinOnly , "PinOnly" )
LoadObjectConstant( dictionnary, Constant::Superior , "Superior" )
LoadObjectConstant( dictionnary, Constant::Inferior , "Inferior" )
LoadObjectConstant( dictionnary, Constant::Nearest , "Nearest" )
LoadObjectConstant( dictionnary, Constant::Exact , "Exact" )
}
static PyMethodDef PyConstant_Methods[] =
{ {NULL, NULL, 0, NULL} /* sentinel */
};
DL_EXPORT(void) initConstant () {
cdebug_log(30,0) << "initConstant()" << endl;
PyObject* module = Py_InitModule( "Constant", PyConstant_Methods );
if (module == NULL) {
cerr << "[ERROR]\n"
<< " Failed to initialize Constant module." << endl;
return;
}
PyObject* dictionnary = PyModule_GetDict( module );
LoadConstants( dictionnary );
cdebug_log(30,0) << "Constant.so loaded " << (void*)&typeid(string) << endl;
}
} // extern "C".
#endif // Python Module Code Part.
} // Constant namespace.