diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2013-02-16 18:21:40 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2013-02-16 18:21:40 +0400 |
commit | b35a893249bed1a70f40b86615531d7d75fe12f3 (patch) | |
tree | b3e8bbbad81873f6270f4dd00d35bc3a0526f3af /source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp | |
parent | aa9c01f384d38a8e75bfd25bbdadba3fe2246e5b (diff) |
Freestyle Python API improvements - part 4.
Major API updates were made as in part 3 to address code review comments.
This revision focuses on Python wrappers of C++ iterators.
* Most getter/setter methods were reimplemented as attributes using PyGetSetDef.
* The naming of methods and attributes was fixed to follow the naming conventions
of the Blender Python API (i.e., lower case + underscores for methods and attributes,
and CamelCase for classes). The only irregular naming change is the following, to
better indicate the functionality:
- ChainingIterator: getVertex --> next_vertex
* In addition, some code clean-up was done in both C++ and Python. Also duplicated
definitions of predicate classes were removed.
Diffstat (limited to 'source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp')
-rw-r--r-- | source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp | 87 |
1 files changed, 44 insertions, 43 deletions
diff --git a/source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp b/source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp index 6643913c32a..fb9ec03648a 100644 --- a/source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp +++ b/source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp @@ -10,7 +10,7 @@ extern "C" { //------------------------INSTANCE METHODS ---------------------------------- -static char Interface0DIterator___doc__[] = +PyDoc_STRVAR(Interface0DIterator_doc, "Class hierarchy: :class:`Iterator` > :class:`Interface0DIterator`\n" "\n" "Class defining an iterator over Interface0D elements. An instance of\n" @@ -21,24 +21,26 @@ static char Interface0DIterator___doc__[] = " Copy constructor.\n" "\n" " :arg it: An Interface0DIterator object.\n" -" :type it: :class:`Interface0DIterator`\n"; +" :type it: :class:`Interface0DIterator`"); -static int Interface0DIterator___init__(BPy_Interface0DIterator *self, PyObject *args ) -{ +static int Interface0DIterator_init(BPy_Interface0DIterator *self, PyObject *args) +{ PyObject *obj = 0; - if (!( PyArg_ParseTuple(args, "O!", &Interface0DIterator_Type, &obj) )) - return -1; + if (!PyArg_ParseTuple(args, "O!", &Interface0DIterator_Type, &obj)) + return -1; - self->if0D_it = new Interface0DIterator(*( ((BPy_Interface0DIterator *) obj)->if0D_it )); + self->if0D_it = new Interface0DIterator(*(((BPy_Interface0DIterator *)obj)->if0D_it)); self->py_it.it = self->if0D_it; self->reversed = 0; - + return 0; } -static PyObject * Interface0DIterator_iternext( BPy_Interface0DIterator *self ) { +static PyObject * Interface0DIterator_iternext(BPy_Interface0DIterator *self) +{ Interface0D *if0D; + if (self->reversed) { if (self->if0D_it->isBegin()) { PyErr_SetNone(PyExc_StopIteration); @@ -54,51 +56,50 @@ static PyObject * Interface0DIterator_iternext( BPy_Interface0DIterator *self ) if0D = self->if0D_it->operator->(); self->if0D_it->increment(); } - return Any_BPy_Interface0D_from_Interface0D( *if0D ); + return Any_BPy_Interface0D_from_Interface0D(*if0D); } -static char Interface0DIterator_t___doc__[] = -".. method:: t()\n" -"\n" -" Returns the curvilinear abscissa.\n" +static PyMethodDef BPy_Interface0DIterator_methods[] = { + {NULL, NULL, 0, NULL} +}; + +/*----------------------Interface0DIterator get/setters ----------------------------*/ + +PyDoc_STRVAR(Interface0DIterator_object_doc, +"The Interface0D object currently pointed by this iterator.\n" "\n" -" :return: The curvilinear abscissa.\n" -" :rtype: float\n"; +":type: :class:`Interface0D`"); -static PyObject * Interface0DIterator_t( BPy_Interface0DIterator *self ) { - return PyFloat_FromDouble( self->if0D_it->t() ); +static PyObject *Interface0DIterator_object_get(BPy_Interface0DIterator *self, void *UNUSED(closure)) +{ + return Any_BPy_Interface0D_from_Interface0D(self->if0D_it->operator*()); } -static char Interface0DIterator_u___doc__[] = -".. method:: u()\n" -"\n" -" Returns the point parameter in the curve 0<=u<=1.\n" +PyDoc_STRVAR(Interface0DIterator_t_doc, +"The curvilinear abscissa of the current point.\n" "\n" -" :return: The point parameter.\n" -" :rtype: float\n"; +":type: float"); -static PyObject * Interface0DIterator_u( BPy_Interface0DIterator *self ) { - return PyFloat_FromDouble( self->if0D_it->u() ); +static PyObject *Interface0DIterator_t_get(BPy_Interface0DIterator *self, void *UNUSED(closure)) +{ + return PyFloat_FromDouble(self->if0D_it->t()); } -static char Interface0DIterator_getObject___doc__[] = -".. method:: getObject()\n" +PyDoc_STRVAR(Interface0DIterator_u_doc, +"The point parameter at the current point in the 1D element (0 <= u <= 1).\n" "\n" -" Returns the pointed Interface0D.\n" -"\n" -" :return: The pointed Interface0D.\n" -" :rtype: :class:`Interface0D`\n"; +":type: float"); -static PyObject * Interface0DIterator_getObject(BPy_Interface0DIterator *self) { - return Any_BPy_Interface0D_from_Interface0D( self->if0D_it->operator*() ); +static PyObject *Interface0DIterator_u_get(BPy_Interface0DIterator *self, void *UNUSED(closure)) +{ + return PyFloat_FromDouble(self->if0D_it->u()); } -/*----------------------Interface0DIterator instance definitions ----------------------------*/ -static PyMethodDef BPy_Interface0DIterator_methods[] = { - {"t", ( PyCFunction ) Interface0DIterator_t, METH_NOARGS, Interface0DIterator_t___doc__}, - {"u", ( PyCFunction ) Interface0DIterator_u, METH_NOARGS, Interface0DIterator_u___doc__}, - {"getObject", ( PyCFunction ) Interface0DIterator_getObject, METH_NOARGS, Interface0DIterator_getObject___doc__}, - {NULL, NULL, 0, NULL} +static PyGetSetDef BPy_Interface0DIterator_getseters[] = { + {(char *)"object", (getter)Interface0DIterator_object_get, (setter)NULL, (char *)Interface0DIterator_object_doc, NULL}, + {(char *)"t", (getter)Interface0DIterator_t_get, (setter)NULL, (char *)Interface0DIterator_t_doc, NULL}, + {(char *)"u", (getter)Interface0DIterator_u_get, (setter)NULL, (char *)Interface0DIterator_u_doc, NULL}, + {NULL, NULL, NULL, NULL, NULL} /* Sentinel */ }; /*-----------------------BPy_Interface0DIterator type definition ------------------------------*/ @@ -124,7 +125,7 @@ PyTypeObject Interface0DIterator_Type = { 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ - Interface0DIterator___doc__, /* tp_doc */ + Interface0DIterator_doc, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ @@ -133,13 +134,13 @@ PyTypeObject Interface0DIterator_Type = { (iternextfunc)Interface0DIterator_iternext, /* tp_iternext */ BPy_Interface0DIterator_methods, /* tp_methods */ 0, /* tp_members */ - 0, /* tp_getset */ + BPy_Interface0DIterator_getseters, /* tp_getset */ &Iterator_Type, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ - (initproc)Interface0DIterator___init__, /* tp_init */ + (initproc)Interface0DIterator_init, /* tp_init */ 0, /* tp_alloc */ 0, /* tp_new */ }; |