1 #include "BPy_UnaryFunction1DVectorViewShape.h"
3 #include "../BPy_Convert.h"
4 #include "../BPy_Interface1D.h"
5 #include "../BPy_IntegrationType.h"
7 #include "UnaryFunction1D_vector_ViewShape/BPy_GetOccludeeF1D.h"
8 #include "UnaryFunction1D_vector_ViewShape/BPy_GetOccludersF1D.h"
9 #include "UnaryFunction1D_vector_ViewShape/BPy_GetShapeF1D.h"
15 ///////////////////////////////////////////////////////////////////////////////////////////
17 /*--------------- Python API function prototypes for UnaryFunction1DVectorViewShape instance -----------*/
18 static int UnaryFunction1DVectorViewShape___init__(BPy_UnaryFunction1DVectorViewShape* self, PyObject *args);
19 static void UnaryFunction1DVectorViewShape___dealloc__(BPy_UnaryFunction1DVectorViewShape* self);
20 static PyObject * UnaryFunction1DVectorViewShape___repr__(BPy_UnaryFunction1DVectorViewShape* self);
22 static PyObject * UnaryFunction1DVectorViewShape_getName( BPy_UnaryFunction1DVectorViewShape *self);
23 static PyObject * UnaryFunction1DVectorViewShape___call__( BPy_UnaryFunction1DVectorViewShape *self, PyObject *args, PyObject *kwds);
24 static PyObject * UnaryFunction1DVectorViewShape_setIntegrationType(BPy_UnaryFunction1DVectorViewShape* self, PyObject *args);
25 static PyObject * UnaryFunction1DVectorViewShape_getIntegrationType(BPy_UnaryFunction1DVectorViewShape* self);
27 /*----------------------UnaryFunction1DVectorViewShape instance definitions ----------------------------*/
28 static PyMethodDef BPy_UnaryFunction1DVectorViewShape_methods[] = {
29 {"getName", ( PyCFunction ) UnaryFunction1DVectorViewShape_getName, METH_NOARGS, "() Returns the string of the name of the unary 1D function."},
30 {"setIntegrationType", ( PyCFunction ) UnaryFunction1DVectorViewShape_setIntegrationType, METH_VARARGS, "(IntegrationType i) Sets the integration method" },
31 {"getIntegrationType", ( PyCFunction ) UnaryFunction1DVectorViewShape_getIntegrationType, METH_NOARGS, "() Returns the integration method." },
35 /*-----------------------BPy_UnaryFunction1DVectorViewShape type definition ------------------------------*/
37 PyTypeObject UnaryFunction1DVectorViewShape_Type = {
38 PyObject_HEAD_INIT(NULL)
39 "UnaryFunction1DVectorViewShape", /* tp_name */
40 sizeof(BPy_UnaryFunction1DVectorViewShape), /* tp_basicsize */
42 (destructor)UnaryFunction1DVectorViewShape___dealloc__, /* tp_dealloc */
47 (reprfunc)UnaryFunction1DVectorViewShape___repr__, /* tp_repr */
49 0, /* tp_as_sequence */
50 0, /* tp_as_mapping */
52 (ternaryfunc)UnaryFunction1DVectorViewShape___call__, /* tp_call */
57 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
58 "UnaryFunction1DVectorViewShape objects", /* tp_doc */
61 0, /* tp_richcompare */
62 0, /* tp_weaklistoffset */
65 BPy_UnaryFunction1DVectorViewShape_methods, /* tp_methods */
68 &UnaryFunction1D_Type, /* tp_base */
72 0, /* tp_dictoffset */
73 (initproc)UnaryFunction1DVectorViewShape___init__, /* tp_init */
78 //-------------------MODULE INITIALIZATION--------------------------------
80 int UnaryFunction1DVectorViewShape_Init( PyObject *module ) {
85 if( PyType_Ready( &UnaryFunction1DVectorViewShape_Type ) < 0 )
87 Py_INCREF( &UnaryFunction1DVectorViewShape_Type );
88 PyModule_AddObject(module, "UnaryFunction1DVectorViewShape", (PyObject *)&UnaryFunction1DVectorViewShape_Type);
90 if( PyType_Ready( &GetOccludeeF1D_Type ) < 0 )
92 Py_INCREF( &GetOccludeeF1D_Type );
93 PyModule_AddObject(module, "GetOccludeeF1D", (PyObject *)&GetOccludeeF1D_Type);
95 if( PyType_Ready( &GetOccludersF1D_Type ) < 0 )
97 Py_INCREF( &GetOccludersF1D_Type );
98 PyModule_AddObject(module, "GetOccludersF1D", (PyObject *)&GetOccludersF1D_Type);
100 if( PyType_Ready( &GetShapeF1D_Type ) < 0 )
102 Py_INCREF( &GetShapeF1D_Type );
103 PyModule_AddObject(module, "GetShapeF1D", (PyObject *)&GetShapeF1D_Type);
109 //------------------------INSTANCE METHODS ----------------------------------
111 int UnaryFunction1DVectorViewShape___init__(BPy_UnaryFunction1DVectorViewShape* self, PyObject *args)
115 if( !PyArg_ParseTuple(args, "|O!", &IntegrationType_Type, &obj) )
119 self->uf1D_vectorviewshape = new UnaryFunction1D< std::vector<ViewShape*> >();
121 self->uf1D_vectorviewshape = new UnaryFunction1D< std::vector<ViewShape*> >( IntegrationType_from_BPy_IntegrationType(obj) );
124 self->uf1D_vectorviewshape->py_uf1D = (PyObject *)self;
129 void UnaryFunction1DVectorViewShape___dealloc__(BPy_UnaryFunction1DVectorViewShape* self)
131 if (self->uf1D_vectorviewshape)
132 delete self->uf1D_vectorviewshape;
133 UnaryFunction1D_Type.tp_dealloc((PyObject*)self);
137 PyObject * UnaryFunction1DVectorViewShape___repr__(BPy_UnaryFunction1DVectorViewShape* self)
139 return PyUnicode_FromFormat("type: %s - address: %p", self->uf1D_vectorviewshape->getName().c_str(), self->uf1D_vectorviewshape );
142 PyObject * UnaryFunction1DVectorViewShape_getName( BPy_UnaryFunction1DVectorViewShape *self )
144 return PyUnicode_FromFormat( self->uf1D_vectorviewshape->getName().c_str() );
147 PyObject * UnaryFunction1DVectorViewShape___call__( BPy_UnaryFunction1DVectorViewShape *self, PyObject *args, PyObject *kwds)
152 PyErr_SetString(PyExc_TypeError, "keyword argument(s) not supported");
155 if( !PyArg_ParseTuple(args, "O!", &Interface1D_Type, &obj) )
158 if( typeid(*(self->uf1D_vectorviewshape)) == typeid(UnaryFunction1D< std::vector<ViewShape*> >) ) {
159 PyErr_SetString(PyExc_TypeError, "__call__ method not properly overridden");
162 if (self->uf1D_vectorviewshape->operator()(*( ((BPy_Interface1D *) obj)->if1D )) < 0) {
163 if (!PyErr_Occurred()) {
164 string msg(self->uf1D_vectorviewshape->getName() + " __call__ method failed");
165 PyErr_SetString(PyExc_RuntimeError, msg.c_str());
169 PyObject *list = PyList_New(NULL);
171 for( unsigned int i = 0; i < self->uf1D_vectorviewshape->result.size(); i++)
172 PyList_Append(list, BPy_ViewShape_from_ViewShape(*( self->uf1D_vectorviewshape->result[i] )) );
177 PyObject * UnaryFunction1DVectorViewShape_setIntegrationType(BPy_UnaryFunction1DVectorViewShape* self, PyObject *args)
181 if( !PyArg_ParseTuple(args, "O!", &IntegrationType_Type, &obj) )
184 self->uf1D_vectorviewshape->setIntegrationType( IntegrationType_from_BPy_IntegrationType(obj) );
188 PyObject * UnaryFunction1DVectorViewShape_getIntegrationType(BPy_UnaryFunction1DVectorViewShape* self) {
189 return BPy_IntegrationType_from_IntegrationType( self->uf1D_vectorviewshape->getIntegrationType() );
192 ///////////////////////////////////////////////////////////////////////////////////////////