From 91bb88fe186f3e817ef27a4155221a7bee62eeba Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Wed, 5 Dec 2018 22:25:13 -0200 Subject: [PATCH] add App.Units.setSchema() python method --- src/Base/UnitsApi.h | 1 + src/Base/UnitsApiPy.cpp | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/Base/UnitsApi.h b/src/Base/UnitsApi.h index 0a4ac4eb1d..11a598b3f6 100644 --- a/src/Base/UnitsApi.h +++ b/src/Base/UnitsApi.h @@ -105,6 +105,7 @@ protected: // the python API wrapper methods static PyObject *sParseQuantity (PyObject *self,PyObject *args); static PyObject *sListSchemas (PyObject *self,PyObject *args); static PyObject *sGetSchema (PyObject *self,PyObject *args); + static PyObject *sSetSchema (PyObject *self,PyObject *args); static PyObject *sSchemaTranslate (PyObject *self,PyObject *args); }; diff --git a/src/Base/UnitsApiPy.cpp b/src/Base/UnitsApiPy.cpp index feddc6bb39..8aaa34b718 100644 --- a/src/Base/UnitsApiPy.cpp +++ b/src/Base/UnitsApiPy.cpp @@ -84,6 +84,10 @@ PyMethodDef UnitsApi::Methods[] = { "getSchema() -> int\n\n" "The int is the position of the tuple returned by listSchemas" }, + {"setSchema", (PyCFunction) UnitsApi::sSetSchema, METH_VARARGS, + "setSchema(int) -> None\n\n" + "Sets the current schema to the given number, if possible" + }, {"schemaTranslate", (PyCFunction) UnitsApi::sSchemaTranslate, METH_VARARGS, "schemaTranslate(Quantity, int) -> tuple\n\n" "Translate a quantity to a given schema" @@ -198,6 +202,21 @@ PyObject* UnitsApi::sGetSchema(PyObject * /*self*/, PyObject *args) return Py_BuildValue("i", static_cast(actSystem)); } +PyObject* UnitsApi::sSetSchema(PyObject * /*self*/, PyObject *args) +{ + PyErr_Clear(); + int index; + if (PyArg_ParseTuple(args, "i", &index)) { + int num = NumUnitSystemTypes; + if (index < 0 || index >= num) { + PyErr_SetString(PyExc_ValueError, "invalid schema value"); + return 0; + } + setSchema((UnitSystem)index); + } + Py_Return; +} + PyObject* UnitsApi::sSchemaTranslate(PyObject * /*self*/, PyObject *args) { PyObject* q;