Imported D222 Diff 2 (ID 781) by flokkievids (Folkert de Vries).
This commit is contained in:
@@ -74,10 +74,14 @@ static int AdjacencyIterator_init(BPy_AdjacencyIterator *self, PyObject *args, P
|
||||
PyObject *obj1 = 0, *obj2 = 0, *obj3 = 0;
|
||||
|
||||
if (PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist_1, &AdjacencyIterator_Type, &obj1)) {
|
||||
if (!obj1)
|
||||
if (!obj1) {
|
||||
self->a_it = new AdjacencyIterator();
|
||||
else
|
||||
self->at_start = true;
|
||||
}
|
||||
else {
|
||||
self->a_it = new AdjacencyIterator(*(((BPy_AdjacencyIterator *)obj1)->a_it));
|
||||
self->at_start = ((BPy_AdjacencyIterator *)obj1)->at_start;
|
||||
}
|
||||
}
|
||||
else if (PyErr_Clear(), (obj2 = obj3 = 0),
|
||||
PyArg_ParseTupleAndKeywords(args, kwds, "O!|O!O!", (char **)kwlist_2,
|
||||
@@ -86,6 +90,7 @@ static int AdjacencyIterator_init(BPy_AdjacencyIterator *self, PyObject *args, P
|
||||
bool restrictToSelection = (!obj2) ? true : bool_from_PyBool(obj2);
|
||||
bool restrictToUnvisited = (!obj3) ? true : bool_from_PyBool(obj3);
|
||||
self->a_it = new AdjacencyIterator(((BPy_ViewVertex *)obj1)->vv, restrictToSelection, restrictToUnvisited);
|
||||
self->at_start = ((BPy_AdjacencyIterator *)obj1)->at_start;
|
||||
}
|
||||
else {
|
||||
PyErr_SetString(PyExc_TypeError, "invalid argument(s)");
|
||||
@@ -95,15 +100,31 @@ static int AdjacencyIterator_init(BPy_AdjacencyIterator *self, PyObject *args, P
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyObject *AdjacencyIterator_iter(BPy_AdjacencyIterator *self)
|
||||
{
|
||||
Py_INCREF(self);
|
||||
self->at_start = true;
|
||||
return (PyObject *) self;
|
||||
}
|
||||
|
||||
static PyObject *AdjacencyIterator_iternext(BPy_AdjacencyIterator *self)
|
||||
{
|
||||
if (self->a_it->isEnd()) {
|
||||
PyErr_SetNone(PyExc_StopIteration);
|
||||
return NULL;
|
||||
}
|
||||
ViewEdge *ve = self->a_it->operator*();
|
||||
self->a_it->increment();
|
||||
return BPy_ViewEdge_from_ViewEdge(*ve);
|
||||
|
||||
if (self->at_start)
|
||||
self->at_start = false;
|
||||
else {
|
||||
self->a_it->increment();
|
||||
if (self->a_it->isEnd()){
|
||||
PyErr_SetNone(PyExc_StopIteration);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
ViewEdge *ve = self->a_it->operator->();
|
||||
return BPy_ViewEdge_from_ViewEdge(*ve);
|
||||
}
|
||||
|
||||
/*----------------------AdjacencyIterator get/setters ----------------------------*/
|
||||
@@ -175,7 +196,7 @@ PyTypeObject AdjacencyIterator_Type = {
|
||||
0, /* tp_clear */
|
||||
0, /* tp_richcompare */
|
||||
0, /* tp_weaklistoffset */
|
||||
PyObject_SelfIter, /* tp_iter */
|
||||
(getiterfunc)AdjacencyIterator_iter, /* tp_iter */
|
||||
(iternextfunc)AdjacencyIterator_iternext, /* tp_iternext */
|
||||
0, /* tp_methods */
|
||||
0, /* tp_members */
|
||||
|
||||
@@ -45,6 +45,7 @@ extern PyTypeObject AdjacencyIterator_Type;
|
||||
typedef struct {
|
||||
BPy_Iterator py_it;
|
||||
AdjacencyIterator *a_it;
|
||||
bool at_start;
|
||||
} BPy_AdjacencyIterator;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -76,41 +76,66 @@ static int Interface0DIterator_init(BPy_Interface0DIterator *self, PyObject *arg
|
||||
|
||||
if (PyArg_ParseTupleAndKeywords(args, kwds, "O&", (char **)kwlist_1, convert_nested_it, &nested_it)) {
|
||||
self->if0D_it = new Interface0DIterator(nested_it->copy());
|
||||
self->at_start = true;
|
||||
self->reversed = false;
|
||||
}
|
||||
else if (PyErr_Clear(),
|
||||
PyArg_ParseTupleAndKeywords(args, kwds, "O!", (char **)kwlist_2, &Interface0DIterator_Type, &brother))
|
||||
{
|
||||
self->if0D_it = new Interface0DIterator(*(((BPy_Interface0DIterator *)brother)->if0D_it));
|
||||
self->at_start = ((BPy_Interface0DIterator *)brother)->at_start;
|
||||
self->reversed = ((BPy_Interface0DIterator *)brother)->reversed;
|
||||
}
|
||||
else {
|
||||
PyErr_SetString(PyExc_TypeError, "invalid argument(s)");
|
||||
return -1;
|
||||
}
|
||||
self->py_it.it = self->if0D_it;
|
||||
self->reversed = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyObject *Interface0DIterator_iter(BPy_Interface0DIterator *self)
|
||||
{
|
||||
Py_INCREF(self);
|
||||
self->at_start = true;
|
||||
return (PyObject *) self;
|
||||
}
|
||||
|
||||
static PyObject *Interface0DIterator_iternext(BPy_Interface0DIterator *self)
|
||||
{
|
||||
Interface0D *if0D;
|
||||
|
||||
if (self->reversed) {
|
||||
if (self->if0D_it->isBegin()) {
|
||||
PyErr_SetNone(PyExc_StopIteration);
|
||||
return NULL;
|
||||
}
|
||||
self->if0D_it->decrement();
|
||||
if0D = self->if0D_it->operator->();
|
||||
|
||||
if (self->at_start)
|
||||
self->at_start = false;
|
||||
else {
|
||||
self->if0D_it->decrement();
|
||||
if (self->if0D_it->isBegin()) {
|
||||
PyErr_SetNone(PyExc_StopIteration);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
if (self->if0D_it->isEnd()) {
|
||||
PyErr_SetNone(PyExc_StopIteration);
|
||||
return NULL;
|
||||
}
|
||||
if0D = self->if0D_it->operator->();
|
||||
self->if0D_it->increment();
|
||||
}
|
||||
if (self->at_start)
|
||||
self->at_start = false;
|
||||
else {
|
||||
self->if0D_it->increment();
|
||||
if (self->if0D_it->isEnd()) {
|
||||
PyErr_SetNone(PyExc_StopIteration);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
Interface0D *if0D = self->if0D_it->operator->();
|
||||
return Any_BPy_Interface0D_from_Interface0D(*if0D);
|
||||
}
|
||||
|
||||
@@ -186,7 +211,7 @@ PyTypeObject Interface0DIterator_Type = {
|
||||
0, /* tp_clear */
|
||||
0, /* tp_richcompare */
|
||||
0, /* tp_weaklistoffset */
|
||||
PyObject_SelfIter, /* tp_iter */
|
||||
(getiterfunc)Interface0DIterator_iter, /* tp_iter */
|
||||
(iternextfunc)Interface0DIterator_iternext, /* tp_iternext */
|
||||
0, /* tp_methods */
|
||||
0, /* tp_members */
|
||||
|
||||
@@ -45,7 +45,8 @@ extern PyTypeObject Interface0DIterator_Type;
|
||||
typedef struct {
|
||||
BPy_Iterator py_it;
|
||||
Interface0DIterator *if0D_it;
|
||||
int reversed;
|
||||
bool reversed;
|
||||
bool at_start;
|
||||
} BPy_Interface0DIterator;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -68,35 +68,68 @@ static int StrokeVertexIterator_init(BPy_StrokeVertexIterator *self, PyObject *a
|
||||
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O!", (char **)kwlist, &StrokeVertexIterator_Type, &brother))
|
||||
return -1;
|
||||
if (!brother)
|
||||
if (!brother) {
|
||||
self->sv_it = new StrokeInternal::StrokeVertexIterator();
|
||||
else
|
||||
self->reversed = false;
|
||||
self->at_start = true;
|
||||
}
|
||||
else {
|
||||
self->sv_it = new StrokeInternal::StrokeVertexIterator(*(((BPy_StrokeVertexIterator *)brother)->sv_it));
|
||||
self->reversed = ((BPy_StrokeVertexIterator *)brother)->reversed;
|
||||
self->at_start = ((BPy_StrokeVertexIterator *)brother)->at_start;
|
||||
}
|
||||
self->py_it.it = self->sv_it;
|
||||
self->reversed = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyObject *StrokeVertexIterator_iter(BPy_StrokeVertexIterator *self)
|
||||
{
|
||||
Py_INCREF(self);
|
||||
self->at_start = true;
|
||||
return (PyObject *) self;
|
||||
}
|
||||
|
||||
static PyObject *StrokeVertexIterator_iternext(BPy_StrokeVertexIterator *self)
|
||||
{
|
||||
StrokeVertex *sv;
|
||||
|
||||
if (self->reversed) {
|
||||
if (self->sv_it->isBegin()) {
|
||||
PyErr_SetNone(PyExc_StopIteration);
|
||||
return NULL;
|
||||
}
|
||||
self->sv_it->decrement();
|
||||
sv = self->sv_it->operator->();
|
||||
if (self->sv_it->isBegin()) {
|
||||
PyErr_SetNone(PyExc_StopIteration);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (self->at_start)
|
||||
self->at_start = false;
|
||||
else {
|
||||
self->sv_it->increment();
|
||||
if (self->sv_it->isBegin()){
|
||||
PyErr_SetNone(PyExc_StopIteration);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
if (self->sv_it->isEnd()) {
|
||||
PyErr_SetNone(PyExc_StopIteration);
|
||||
return NULL;
|
||||
}
|
||||
sv = self->sv_it->operator->();
|
||||
self->sv_it->increment();
|
||||
}
|
||||
if (self->sv_it->isEnd()) {
|
||||
PyErr_SetNone(PyExc_StopIteration);
|
||||
return NULL;
|
||||
}
|
||||
/* if at the start of the iterator, only return the object
|
||||
* and don't increment, to keep for-loops in sync */
|
||||
if (self->at_start)
|
||||
self->at_start = false;
|
||||
/* after incrementing, check if the iterator is at its end
|
||||
* exit the loop if it is. not doing so will result in a crash */
|
||||
else {
|
||||
self->sv_it->increment();
|
||||
if (self->sv_it->isEnd()){
|
||||
PyErr_SetNone(PyExc_StopIteration);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
sv = self->sv_it->operator->();
|
||||
return BPy_StrokeVertex_from_StrokeVertex(*sv);
|
||||
}
|
||||
|
||||
@@ -174,8 +207,8 @@ PyTypeObject StrokeVertexIterator_Type = {
|
||||
0, /* tp_traverse */
|
||||
0, /* tp_clear */
|
||||
0, /* tp_richcompare */
|
||||
0, /* tp_weaklistoffset */
|
||||
PyObject_SelfIter, /* tp_iter */
|
||||
0, /* tp_weaklistoffset */
|
||||
(getiterfunc)StrokeVertexIterator_iter, /* tp_iter */
|
||||
(iternextfunc)StrokeVertexIterator_iternext, /* tp_iternext */
|
||||
0, /* tp_methods */
|
||||
0, /* tp_members */
|
||||
|
||||
@@ -45,7 +45,9 @@ extern PyTypeObject StrokeVertexIterator_Type;
|
||||
typedef struct {
|
||||
BPy_Iterator py_it;
|
||||
StrokeInternal::StrokeVertexIterator *sv_it;
|
||||
int reversed;
|
||||
bool reversed;
|
||||
/* attribute to make next() work correctly */
|
||||
bool at_start;
|
||||
} BPy_StrokeVertexIterator;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -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_iter(BPy_orientedViewEdgeIterator *self)
|
||||
{
|
||||
Py_INCREF(self);
|
||||
self->at_start = true;
|
||||
return (PyObject *) self;
|
||||
}
|
||||
|
||||
static PyObject *orientedViewEdgeIterator_iternext(BPy_orientedViewEdgeIterator *self)
|
||||
{
|
||||
ViewVertex::directedViewEdge *dve;
|
||||
|
||||
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 */
|
||||
|
||||
@@ -47,7 +47,8 @@ extern PyTypeObject orientedViewEdgeIterator_Type;
|
||||
typedef struct {
|
||||
BPy_Iterator py_it;
|
||||
ViewVertexInternal::orientedViewEdgeIterator *ove_it;
|
||||
int reversed;
|
||||
bool reversed;
|
||||
bool at_start;
|
||||
} BPy_orientedViewEdgeIterator;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user