Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2013-02-16 18:21:40 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2013-02-16 18:21:40 +0400
commitb35a893249bed1a70f40b86615531d7d75fe12f3 (patch)
treeb3e8bbbad81873f6270f4dd00d35bc3a0526f3af /source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp
parentaa9c01f384d38a8e75bfd25bbdadba3fe2246e5b (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.cpp87
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 */
};