Python: [skip ci] change order of supported arguments in UnitPy::PyInit

This commit is contained in:
wmayer
2020-05-27 22:03:05 +02:00
parent b32821d2f2
commit 4538963192

View File

@@ -41,8 +41,41 @@ PyObject *UnitPy::PyMake(struct _typeobject *, PyObject *, PyObject *) // Pytho
// constructor method
int UnitPy::PyInit(PyObject* args, PyObject* /*kwd*/)
{
PyObject *object;
Unit *self = getUnitPtr();
// get quantity
if (PyArg_ParseTuple(args,"O!",&(Base::QuantityPy::Type), &object)) {
// Note: must be static_cast, not reinterpret_cast
*self = static_cast<Base::QuantityPy*>(object)->getQuantityPtr()->getUnit();
return 0;
}
PyErr_Clear(); // set by PyArg_ParseTuple()
// get unit
if (PyArg_ParseTuple(args,"O!",&(Base::UnitPy::Type), &object)) {
// Note: must be static_cast, not reinterpret_cast
*self = *(static_cast<Base::UnitPy*>(object)->getUnitPtr());
return 0;
}
PyErr_Clear(); // set by PyArg_ParseTuple()
// get string
char* string;
if (PyArg_ParseTuple(args,"et", "utf-8", &string)) {
QString qstr = QString::fromUtf8(string);
PyMem_Free(string);
try {
*self = Quantity::parse(qstr).getUnit();
return 0;
}
catch (const Base::Exception& e) {
PyErr_SetString(PyExc_RuntimeError, e.what());
return -1;
}
}
PyErr_Clear(); // set by PyArg_ParseTuple()
int i1=0;
int i2=0;
int i3=0;
@@ -61,36 +94,6 @@ int UnitPy::PyInit(PyObject* args, PyObject* /*kwd*/)
return -1;
}
}
PyErr_Clear(); // set by PyArg_ParseTuple()
PyObject *object;
if (PyArg_ParseTuple(args,"O!",&(Base::QuantityPy::Type), &object)) {
// Note: must be static_cast, not reinterpret_cast
*self = static_cast<Base::QuantityPy*>(object)->getQuantityPtr()->getUnit();
return 0;
}
PyErr_Clear(); // set by PyArg_ParseTuple()
if (PyArg_ParseTuple(args,"O!",&(Base::UnitPy::Type), &object)) {
// Note: must be static_cast, not reinterpret_cast
*self = *(static_cast<Base::UnitPy*>(object)->getUnitPtr());
return 0;
}
PyErr_Clear(); // set by PyArg_ParseTuple()
char* string;
if (PyArg_ParseTuple(args,"et", "utf-8", &string)) {
QString qstr = QString::fromUtf8(string);
PyMem_Free(string);
try {
*self = Quantity::parse(qstr).getUnit();
return 0;
}
catch (const Base::Exception& e) {
PyErr_SetString(PyExc_RuntimeError, e.what());
return -1;
}
}
PyErr_SetString(PyExc_TypeError, "Either string, (float,8 ints), Unit() or Quantity()");
return -1;