diff options
-rw-r--r-- | libdimension-python/dimension.c | 21 | ||||
-rw-r--r-- | libdimension-python/scene.c | 100 | ||||
-rwxr-xr-x | libdimension-python/tests/demo.py | 3 |
3 files changed, 72 insertions, 52 deletions
diff --git a/libdimension-python/dimension.c b/libdimension-python/dimension.c index 81174a7..ca19844 100644 --- a/libdimension-python/dimension.c +++ b/libdimension-python/dimension.c @@ -18,13 +18,30 @@ * <http://www.gnu.org/licenses/>. * *************************************************************************/ +#define PY_SSIZE_T_CLEAN #include <Python.h> #include <structmember.h> #include "dimension.h" #include "scene.c" +static PyObject * +dmnsn_py_dieOnWarnings(PyObject *self, PyObject *args) +{ + int die; + + if (!PyArg_ParseTuple(args, "i", &die)) + return NULL; + + dmnsn_die_on_warnings(die); + + Py_INCREF(Py_None); + return Py_None; +} + static PyMethodDef DimensionMethods[] = { + { "dieOnWarnings", dmnsn_py_dieOnWarnings, METH_VARARGS, + "Turn Dimension warnings into fatal errors." }, { NULL, NULL, 0, NULL } }; @@ -39,13 +56,13 @@ static struct PyModuleDef dimensionmodule = { PyMODINIT_FUNC PyInit_dimension(void) { - if (!dmnsn_init_SceneType()) + if (!dmnsn_py_init_SceneType()) return NULL; PyObject *m = PyModule_Create(&dimensionmodule); if (!m) return NULL; - PyModule_AddObject(m, "Scene", (PyObject *)&dmnsn_SceneType); + PyModule_AddObject(m, "Scene", (PyObject *)&dmnsn_py_SceneType); return m; } diff --git a/libdimension-python/scene.c b/libdimension-python/scene.c index f742173..5b6066c 100644 --- a/libdimension-python/scene.c +++ b/libdimension-python/scene.c @@ -21,86 +21,86 @@ typedef struct { PyObject_HEAD dmnsn_scene *scene; -} dmnsn_SceneObject; +} dmnsn_py_SceneObject; static PyObject * -dmnsn_SceneNew(PyTypeObject *type, PyObject *args, PyObject *kwds) +dmnsn_py_SceneNew(PyTypeObject *type, PyObject *args, PyObject *kwds) { - dmnsn_SceneObject *self; - self = (dmnsn_SceneObject *)type->tp_alloc(type, 0); + dmnsn_py_SceneObject *self; + self = (dmnsn_py_SceneObject *)type->tp_alloc(type, 0); self->scene = dmnsn_new_scene(); return (PyObject *)self; } static int -dmnsn_SceneInit(dmnsn_SceneObject *self, PyObject *args, PyObject *kwds) +dmnsn_py_SceneInit(dmnsn_py_SceneObject *self, PyObject *args, PyObject *kwds) { return 0; } static void -dmnsn_SceneDealloc(dmnsn_SceneObject *self) +dmnsn_py_SceneDealloc(dmnsn_py_SceneObject *self) { dmnsn_delete_scene(self->scene); Py_TYPE(self)->tp_free((PyObject *)self); } -static PyMemberDef dmnsn_SceneMembers[] = { +static PyMemberDef dmnsn_py_SceneMembers[] = { { NULL } }; -static PyMethodDef dmnsn_SceneMethods[] = { +static PyMethodDef dmnsn_py_SceneMethods[] = { { NULL } }; -static PyGetSetDef dmnsn_SceneGetSetters[] = { +static PyGetSetDef dmnsn_py_SceneGetSetters[] = { { NULL } }; -static PyTypeObject dmnsn_SceneType = { +static PyTypeObject dmnsn_py_SceneType = { PyVarObject_HEAD_INIT(NULL, 0) - "dimension.Scene", /* tp_name */ - sizeof(dmnsn_SceneObject), /* tp_basicsize */ - 0, /* tp_itemsize */ - (destructor)dmnsn_SceneDealloc, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_reserved */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT, /* tp_flags */ - "Dimension scene", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - dmnsn_SceneMethods, /* tp_methods */ - dmnsn_SceneMembers, /* tp_members */ - dmnsn_SceneGetSetters, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - (initproc)dmnsn_SceneInit, /* tp_init */ - 0, /* tp_alloc */ - dmnsn_SceneNew, /* tp_new */ + "dimension.Scene", /* tp_name */ + sizeof(dmnsn_py_SceneObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)dmnsn_py_SceneDealloc, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_reserved */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + "Dimension scene", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + dmnsn_py_SceneMethods, /* tp_methods */ + dmnsn_py_SceneMembers, /* tp_members */ + dmnsn_py_SceneGetSetters, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + (initproc)dmnsn_py_SceneInit, /* tp_init */ + 0, /* tp_alloc */ + dmnsn_py_SceneNew, /* tp_new */ }; static bool -dmnsn_init_SceneType(void) +dmnsn_py_init_SceneType(void) { - Py_INCREF(&dmnsn_SceneType); - return PyType_Ready(&dmnsn_SceneType) >= 0; + Py_INCREF(&dmnsn_py_SceneType); + return PyType_Ready(&dmnsn_py_SceneType) >= 0; } diff --git a/libdimension-python/tests/demo.py b/libdimension-python/tests/demo.py index 10fe2ed..e9cdc7b 100755 --- a/libdimension-python/tests/demo.py +++ b/libdimension-python/tests/demo.py @@ -21,4 +21,7 @@ from dimension import * +# Treat warnings as errors for tests +dieOnWarnings(True) + scene = Scene() |