summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libdimension-python/dimension.c21
-rw-r--r--libdimension-python/scene.c100
-rwxr-xr-xlibdimension-python/tests/demo.py3
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()