171 lines
5.2 KiB
C++
171 lines
5.2 KiB
C++
// -*- C++ -*-
|
|
//
|
|
// This file is part of the Coriolis Software.
|
|
// Copyright (c) UPMC 2006-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@lip6.fr |
|
|
// | =============================================================== |
|
|
// | C++ Module : "./PyPoint.cpp" |
|
|
// +-----------------------------------------------------------------+
|
|
|
|
|
|
#include "hurricane/isobar/PyPoint.h"
|
|
|
|
|
|
namespace Isobar {
|
|
|
|
using namespace Hurricane;
|
|
|
|
extern "C" {
|
|
|
|
|
|
#define METHOD_HEAD(function) GENERIC_METHOD_HEAD(Point,point,function)
|
|
|
|
|
|
// x=================================================================x
|
|
// | "PyPoint" Python Module Code Part |
|
|
// x=================================================================x
|
|
|
|
#if defined(__PYTHON_MODULE__)
|
|
|
|
|
|
// x-------------------------------------------------------------x
|
|
// | "PyPoint" Attribute Methods |
|
|
// x-------------------------------------------------------------x
|
|
|
|
|
|
// ---------------------------------------------------------------
|
|
// Attribute Method : "PyPoint_NEW ()"
|
|
|
|
static PyObject* PyPoint_NEW ( PyObject* module, PyObject *args )
|
|
{
|
|
trace << "PyPoint_NEW()" << endl;
|
|
|
|
Point* point;
|
|
PyObject* arg0;
|
|
PyObject* arg1;
|
|
|
|
__cs.init ("Point.Point");
|
|
if ( ! PyArg_ParseTuple(args,"|O&O&:Point.Point"
|
|
,Converter,&arg0
|
|
,Converter,&arg1
|
|
)) {
|
|
PyErr_SetString ( ConstructorError, "invalid number of parameters for Point constructor." );
|
|
return NULL;
|
|
}
|
|
|
|
if ( __cs.getObjectIds() == NO_ARG ) { point = new Point (); }
|
|
else if ( __cs.getObjectIds() == POINT_ARG ) { point = new Point ( *PYPOINT_O(arg0) ); }
|
|
else if ( __cs.getObjectIds() == INTS2_ARG ) { point = new Point ( PyInt_AsLong(arg0)
|
|
, PyInt_AsLong(arg1) ); }
|
|
else {
|
|
PyErr_SetString ( ConstructorError, "invalid number of parameters for Point constructor." );
|
|
return NULL;
|
|
}
|
|
|
|
PyPoint* pyPoint = PyObject_NEW(PyPoint, &PyTypePoint);
|
|
if (pyPoint == NULL) { return NULL; }
|
|
|
|
HTRY
|
|
pyPoint->_object = point;
|
|
HCATCH
|
|
|
|
return ( (PyObject*)pyPoint );
|
|
}
|
|
|
|
|
|
static int PyPoint_Init ( PyPoint* self, PyObject* args, PyObject* kwargs )
|
|
{
|
|
trace << "PyPoint_Init(): " << (void*)self << endl;
|
|
return 0;
|
|
}
|
|
|
|
|
|
// ---------------------------------------------------------------
|
|
// Attribute Method : "PyPoint_Translate ()"
|
|
|
|
static PyObject* PyPoint_Translate ( PyPoint *self, PyObject* args )
|
|
{
|
|
trace << "PyPoint_Translate()" << endl;
|
|
|
|
HTRY
|
|
|
|
METHOD_HEAD ( "Box.Translate()" )
|
|
|
|
PyObject* arg0;
|
|
PyObject* arg1;
|
|
if ( ! ParseTwoArg ( "Box.Translate", args, INTS2_ARG, &arg0, &arg1 ) ) return ( NULL );
|
|
|
|
point->translate ( PyInt_AsLong(arg0), PyInt_AsLong(arg1) );
|
|
|
|
HCATCH
|
|
|
|
Py_RETURN_NONE;
|
|
}
|
|
|
|
|
|
|
|
|
|
// Standart Accessors (Attributes).
|
|
DirectGetLongAttribute(PyPoint_getX,getX,PyPoint,Point)
|
|
DirectGetLongAttribute(PyPoint_getY,getY,PyPoint,Point)
|
|
DirectSetLongAttribute(PyPoint_SetX,setX,"Point.setX",PyPoint,Point)
|
|
DirectSetLongAttribute(PyPoint_SetY,setY,"Point.setY",PyPoint,Point)
|
|
|
|
|
|
// Standart destroy (Attribute).
|
|
DirectDestroyAttribute(PyPoint_destroy, PyPoint)
|
|
|
|
|
|
|
|
|
|
// ---------------------------------------------------------------
|
|
// PyPoint Attribute Method table.
|
|
|
|
PyMethodDef PyPoint_Methods[] =
|
|
{ { "getX" , (PyCFunction)PyPoint_getX , METH_NOARGS , "Return the Point X value." }
|
|
, { "getY" , (PyCFunction)PyPoint_getY , METH_NOARGS , "Return the Point Y value." }
|
|
, { "setX" , (PyCFunction)PyPoint_SetX , METH_VARARGS, "Modify the Point X value." }
|
|
, { "setY" , (PyCFunction)PyPoint_SetY , METH_VARARGS, "Modify the Point Y value." }
|
|
, { "translate", (PyCFunction)PyPoint_Translate, METH_VARARGS, "Translate the point of dx and dy." }
|
|
, { "destroy" , (PyCFunction)PyPoint_destroy , METH_NOARGS
|
|
, "Destroy associated hurricane object The python object remains." }
|
|
, {NULL, NULL, 0, NULL} /* sentinel */
|
|
};
|
|
|
|
|
|
|
|
|
|
// x-------------------------------------------------------------x
|
|
// | "PyPoint" Object Methods |
|
|
// x-------------------------------------------------------------x
|
|
|
|
|
|
|
|
DirectDeleteMethod(PyPoint_DeAlloc,PyPoint)
|
|
PyTypeObjectLinkPyTypeNewInit(Point)
|
|
//PyTypeObjectLinkPyType(Point)
|
|
|
|
#else // End of Python Module Code Part.
|
|
|
|
|
|
// x=================================================================x
|
|
// | "PyPoint" Shared Library Code Part |
|
|
// x=================================================================x
|
|
|
|
|
|
PyTypeObjectDefinitions(Point)
|
|
|
|
|
|
#endif // Shared Library Code Part.
|
|
|
|
} // extern "C".
|
|
|
|
} // Isobar namespace.
|
|
|