coriolis/hurricane/src/isobar/PyPoint.cpp

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.