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>2014-01-31 08:40:24 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2014-02-02 17:05:28 +0400
commitb58beed604f69ff8136d55f91ad75003cc5f575f (patch)
treef7bff176aecedc317851337bf3488d6a0b019d65 /source/blender/freestyle/intern/python/Iterator/BPy_orientedViewEdgeIterator.cpp
parent41cc86a666d22501f25c58d81b1b94020b8c997f (diff)
Imported D222 Diff 2 (ID 781) by flokkievids (Folkert de Vries).
Diffstat (limited to 'source/blender/freestyle/intern/python/Iterator/BPy_orientedViewEdgeIterator.cpp')
-rw-r--r--source/blender/freestyle/intern/python/Iterator/BPy_orientedViewEdgeIterator.cpp49
1 files changed, 37 insertions, 12 deletions
diff --git a/source/blender/freestyle/intern/python/Iterator/BPy_orientedViewEdgeIterator.cpp b/source/blender/freestyle/intern/python/Iterator/BPy_orientedViewEdgeIterator.cpp
index 12ca3d6cc4a..b7cb53b9dd0 100644
--- a/source/blender/freestyle/intern/python/Iterator/BPy_orientedViewEdgeIterator.cpp
+++ b/source/blender/freestyle/intern/python/Iterator/BPy_orientedViewEdgeIterator.cpp
@@ -60,36 +60,61 @@ static int orientedViewEdgeIterator_init(BPy_orientedViewEdgeIterator *self, PyO
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist, &orientedViewEdgeIterator_Type, &brother))
return -1;
- if (!brother)
+ if (!brother) {
self->ove_it = new ViewVertexInternal::orientedViewEdgeIterator();
- else
+ self->at_start = true;
+ self->reversed = false;
+ }
+ else {
self->ove_it = new ViewVertexInternal::orientedViewEdgeIterator(*(((BPy_orientedViewEdgeIterator *)brother)->ove_it));
- self->py_it.it = self->ove_it;
- self->reversed = 0;
+ self->at_start = ((BPy_orientedViewEdgeIterator *)brother)->at_start;
+ self->reversed = ((BPy_orientedViewEdgeIterator *)brother)->reversed;
+ }
+ self->py_it.it = self->ove_it;
return 0;
}
-static PyObject *orientedViewEdgeIterator_iternext(BPy_orientedViewEdgeIterator *self)
+static PyObject *orientedViewEdgeIterator_iter(BPy_orientedViewEdgeIterator *self)
{
- ViewVertex::directedViewEdge *dve;
+ Py_INCREF(self);
+ self->at_start = true;
+ return (PyObject *) self;
+}
+static PyObject *orientedViewEdgeIterator_iternext(BPy_orientedViewEdgeIterator *self)
+{
if (self->reversed) {
if (self->ove_it->isBegin()) {
PyErr_SetNone(PyExc_StopIteration);
return NULL;
}
- self->ove_it->decrement();
- dve = self->ove_it->operator->();
+ if (self->at_start)
+ self->at_start = false;
+ else {
+ self->ove_it->decrement();
+ if (self->ove_it->isBegin()) {
+ PyErr_SetNone(PyExc_StopIteration);
+ return NULL;
+ }
+ }
}
else {
if (self->ove_it->isEnd()) {
PyErr_SetNone(PyExc_StopIteration);
return NULL;
}
- dve = self->ove_it->operator->();
- self->ove_it->increment();
+ if (self->at_start)
+ self->at_start = false;
+ else {
+ self->ove_it->increment();
+ if (self->ove_it->isEnd()) {
+ PyErr_SetNone(PyExc_StopIteration);
+ return NULL;
+ }
+ }
}
- return BPy_directedViewEdge_from_directedViewEdge(*dve);
+ ViewVertex::directedViewEdge *dve = self->ove_it->operator->();
+ return BPy_directedViewEdge_from_directedViewEdge(*dve);
}
/*----------------------orientedViewEdgeIterator get/setters ----------------------------*/
@@ -144,7 +169,7 @@ PyTypeObject orientedViewEdgeIterator_Type = {
0, /* tp_clear */
0, /* tp_richcompare */
0, /* tp_weaklistoffset */
- PyObject_SelfIter, /* tp_iter */
+ (getiterfunc)orientedViewEdgeIterator_iter, /* tp_iter */
(iternextfunc)orientedViewEdgeIterator_iternext, /* tp_iternext */
0, /* tp_methods */
0, /* tp_members */