diff --git a/src/Mod/Material/App/Array2DPyImpl.cpp b/src/Mod/Material/App/Array2DPyImpl.cpp index 706f62ddde..8f286d6f4a 100644 --- a/src/Mod/Material/App/Array2DPyImpl.cpp +++ b/src/Mod/Material/App/Array2DPyImpl.cpp @@ -64,17 +64,18 @@ int Array2DPy::PyInit(PyObject* /*args*/, PyObject* /*kwd*/) Py::List Array2DPy::getArray() const { Py::List list; + auto array = getMaterial2DArrayPtr()->getArray(); for (auto& row : array) { - Py::List* rowList = new Py::List(); + Py::List rowList; for (auto& column : *row) { auto quantity = new Base::QuantityPy(new Base::Quantity(column.value())); - rowList->append(Py::Object(quantity)); + rowList.append(Py::asObject(quantity)); } - list.append(*rowList); + list.append(rowList); } return list; @@ -104,7 +105,7 @@ PyObject* Array2DPy::getRow(PyObject* args) for (auto& column : *arrayRow) { auto quantity = new Base::QuantityPy(new Base::Quantity(column.value())); - list.append(Py::Object(quantity)); + list.append(Py::asObject(quantity)); } return Py::new_reference_to(list); diff --git a/src/Mod/Material/App/Array3DPyImpl.cpp b/src/Mod/Material/App/Array3DPyImpl.cpp index e4650c5930..c1a956da5b 100644 --- a/src/Mod/Material/App/Array3DPyImpl.cpp +++ b/src/Mod/Material/App/Array3DPyImpl.cpp @@ -67,17 +67,17 @@ Py::List Array3DPy::getArray() const auto array = getMaterial3DArrayPtr()->getArray(); for (auto& depth : array) { - Py::List* depthList = new Py::List(); + Py::List depthList; for (auto& row : *std::get<1>(depth)) { - Py::List* rowList = new Py::List(); + Py::List rowList; for (auto& column : *row) { auto quantity = new Base::QuantityPy(new Base::Quantity(column)); - rowList->append(Py::Object(quantity)); + rowList.append(Py::asObject(quantity)); } - depthList->append(*rowList); + depthList.append(rowList); } - list.append(*depthList); + list.append(depthList); } return list; diff --git a/src/Mod/Material/App/MaterialManagerPyImpl.cpp b/src/Mod/Material/App/MaterialManagerPyImpl.cpp index bdc9113fc5..80f26cdaef 100644 --- a/src/Mod/Material/App/MaterialManagerPyImpl.cpp +++ b/src/Mod/Material/App/MaterialManagerPyImpl.cpp @@ -163,17 +163,17 @@ PyObject* MaterialManagerPy::materialsWithModel(PyObject* args) } auto materials = getMaterialManagerPtr()->materialsWithModel(QString::fromStdString(uuid)); - PyObject* dict = PyDict_New(); + Py::Dict dict; for (auto it = materials->begin(); it != materials->end(); it++) { QString key = it->first; auto material = it->second; PyObject* materialPy = new MaterialPy(new Material(*material)); - PyDict_SetItem(dict, PyUnicode_FromString(key.toStdString().c_str()), materialPy); + dict.setItem(key.toStdString(), Py::asObject(materialPy)); } - return dict; + return Py::new_reference_to(dict); } PyObject* MaterialManagerPy::materialsWithModelComplete(PyObject* args) @@ -185,17 +185,17 @@ PyObject* MaterialManagerPy::materialsWithModelComplete(PyObject* args) auto materials = getMaterialManagerPtr()->materialsWithModelComplete(QString::fromStdString(uuid)); - PyObject* dict = PyDict_New(); + Py::Dict dict; for (auto it = materials->begin(); it != materials->end(); it++) { QString key = it->first; auto material = it->second; PyObject* materialPy = new MaterialPy(new Material(*material)); - PyDict_SetItem(dict, PyUnicode_FromString(key.toStdString().c_str()), materialPy); + dict.setItem(key.toStdString(), Py::asObject(materialPy)); } - return dict; + return Py::new_reference_to(dict); } PyObject* MaterialManagerPy::save(PyObject* args, PyObject* kwds)