diff options
Diffstat (limited to 'source/blender/freestyle/intern/python/BPy_ViewShape.cpp')
-rw-r--r-- | source/blender/freestyle/intern/python/BPy_ViewShape.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/source/blender/freestyle/intern/python/BPy_ViewShape.cpp b/source/blender/freestyle/intern/python/BPy_ViewShape.cpp index 2c767eacaec..6c6e821a1e4 100644 --- a/source/blender/freestyle/intern/python/BPy_ViewShape.cpp +++ b/source/blender/freestyle/intern/python/BPy_ViewShape.cpp @@ -207,12 +207,13 @@ PyDoc_STRVAR(ViewShape_vertices_doc, static PyObject *ViewShape_vertices_get(BPy_ViewShape *self, void *UNUSED(closure)) { - PyObject *py_vertices = PyList_New(0); - vector<ViewVertex *> vertices = self->vs->vertices(); vector<ViewVertex *>::iterator it; + PyObject *py_vertices = PyList_New(vertices.size()); + unsigned int i = 0; + for (it = vertices.begin(); it != vertices.end(); it++) { - PyList_Append( py_vertices, Any_BPy_ViewVertex_from_ViewVertex(*(*it))); + PyList_SET_ITEM(py_vertices, i++, Any_BPy_ViewVertex_from_ViewVertex(*(*it))); } return py_vertices; } @@ -227,8 +228,10 @@ static int ViewShape_vertices_set(BPy_ViewShape *self, PyObject *value, void *UN PyErr_SetString(PyExc_TypeError, "value must be a list of ViewVertex objects"); return -1; } - for (int i = 0; i < PyList_Size(list); i++) { - item = PyList_GetItem(list, i); + + v.reserve(PyList_Size(list)); + for (unsigned int i = 0; i < PyList_Size(list); i++) { + item = PyList_GET_ITEM(list, i); if (BPy_ViewVertex_Check(item)) { v.push_back(((BPy_ViewVertex *)item)->vv); } @@ -248,13 +251,13 @@ PyDoc_STRVAR(ViewShape_edges_doc, static PyObject *ViewShape_edges_get(BPy_ViewShape *self, void *UNUSED(closure)) { - PyObject *py_edges = PyList_New(0); - vector<ViewEdge *> edges = self->vs->edges(); vector<ViewEdge *>::iterator it; + PyObject *py_edges = PyList_New(edges.size()); + unsigned int i = 0; for (it = edges.begin(); it != edges.end(); it++) { - PyList_Append(py_edges, BPy_ViewEdge_from_ViewEdge(*(*it))); + PyList_SET_ITEM(py_edges, i++, BPy_ViewEdge_from_ViewEdge(*(*it))); } return py_edges; } @@ -269,8 +272,10 @@ static int ViewShape_edges_set(BPy_ViewShape *self, PyObject *value, void *UNUSE PyErr_SetString(PyExc_TypeError, "value must be a list of ViewEdge objects"); return -1; } + + v.reserve(PyList_Size(list)); for (int i = 0; i < PyList_Size(list); i++) { - item = PyList_GetItem(list, i); + item = PyList_GET_ITEM(list, i); if (BPy_ViewEdge_Check(item)) { v.push_back(((BPy_ViewEdge *)item)->ve); } |