diff options
-rw-r--r-- | libdimension-python/Makefile.am | 7 | ||||
-rw-r--r-- | libdimension-python/Scene.c | 9 | ||||
-rw-r--r-- | libdimension-python/Scene.h | 30 | ||||
-rw-r--r-- | libdimension-python/Vector.c | 18 | ||||
-rw-r--r-- | libdimension-python/Vector.h | 35 | ||||
-rw-r--r-- | libdimension-python/dimension.c | 8 | ||||
-rw-r--r-- | libdimension-python/dimension.h | 23 |
7 files changed, 103 insertions, 27 deletions
diff --git a/libdimension-python/Makefile.am b/libdimension-python/Makefile.am index 239f051..89bfd1d 100644 --- a/libdimension-python/Makefile.am +++ b/libdimension-python/Makefile.am @@ -26,9 +26,8 @@ AM_CFLAGS = $(Python_CFLAGS) AM_LDFLAGS = $(Python_LDFLAGS) pyexec_LTLIBRARIES = dimension.la -dimension_la_SOURCES = dimension.c +dimension_la_SOURCES = Vector.c \ + Scene.c \ + dimension.c dimension_la_LDFLAGS = -avoid-version -module dimension_la_LIBADD = $(top_builddir)/libdimension/libdimension.la - -EXTRA_DIST = Scene.c \ - Vector.c diff --git a/libdimension-python/Scene.c b/libdimension-python/Scene.c index 48a41cb..bfbab63 100644 --- a/libdimension-python/Scene.c +++ b/libdimension-python/Scene.c @@ -18,10 +18,7 @@ * <http://www.gnu.org/licenses/>. * *************************************************************************/ -typedef struct dmnsn_py_Scene { - PyObject_HEAD - dmnsn_scene *scene; -} dmnsn_py_Scene; +#include "Scene.h" static PyObject * dmnsn_py_Scene_new(PyTypeObject *type, PyObject *args, PyObject *kwds) @@ -53,7 +50,7 @@ static PyGetSetDef dmnsn_py_Scene_getsetters[] = { { NULL } }; -static PyTypeObject dmnsn_py_SceneType = { +PyTypeObject dmnsn_py_SceneType = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "dimension.Scene", .tp_basicsize = sizeof(dmnsn_py_Scene), @@ -66,7 +63,7 @@ static PyTypeObject dmnsn_py_SceneType = { .tp_new = dmnsn_py_Scene_new, }; -static bool +bool dmnsn_py_init_SceneType(void) { Py_INCREF(&dmnsn_py_SceneType); diff --git a/libdimension-python/Scene.h b/libdimension-python/Scene.h new file mode 100644 index 0000000..11ea622 --- /dev/null +++ b/libdimension-python/Scene.h @@ -0,0 +1,30 @@ +/************************************************************************* + * Copyright (C) 2009-2011 Tavian Barnes <tavianator@tavianator.com> * + * * + * This file is part of The Dimension Python Module. * + * * + * The Dimension Python Module is free software; you can redistribute it * + * and/ or modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either version * + * 3 of the License, or (at your option) any later version. * + * * + * The Dimension Python Module is distributed in the hope that it will * + * be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See * + * the GNU Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this program. If not, see * + * <http://www.gnu.org/licenses/>. * + *************************************************************************/ + +#include "dimension.h" + +typedef struct dmnsn_py_Scene { + PyObject_HEAD + dmnsn_scene *scene; +} dmnsn_py_Scene; + +extern PyTypeObject dmnsn_py_SceneType; + +bool dmnsn_py_init_SceneType(void); diff --git a/libdimension-python/Vector.c b/libdimension-python/Vector.c index ca7d4e1..d4ed533 100644 --- a/libdimension-python/Vector.c +++ b/libdimension-python/Vector.c @@ -18,12 +18,8 @@ * <http://www.gnu.org/licenses/>. * *************************************************************************/ -typedef struct dmnsn_py_Vector { - PyObject_HEAD - dmnsn_vector v; -} dmnsn_py_Vector; - -static PyTypeObject dmnsn_py_VectorType; +#include "Vector.h" +#include "dimension.h" static int dmnsn_py_Vector_init(dmnsn_py_Vector *self, PyObject *args, PyObject *kwds) @@ -228,7 +224,7 @@ dmnsn_py_Vector_negative(PyObject *rhs) return (PyObject *)ret; } -static PyObject * +PyObject * dmnsn_py_Vector_cross(PyObject *self, PyObject *args) { dmnsn_py_Vector *lhs, *rhs; @@ -244,7 +240,7 @@ dmnsn_py_Vector_cross(PyObject *self, PyObject *args) return (PyObject *)ret; } -static PyObject * +PyObject * dmnsn_py_Vector_dot(PyObject *self, PyObject *args) { dmnsn_py_Vector *lhs, *rhs; @@ -256,7 +252,7 @@ dmnsn_py_Vector_dot(PyObject *self, PyObject *args) return PyFloat_FromDouble(dmnsn_vector_dot(lhs->v, rhs->v)); } -static PyObject * +PyObject * dmnsn_py_Vector_proj(PyObject *self, PyObject *args) { dmnsn_py_Vector *u, *d; @@ -331,7 +327,7 @@ static PyGetSetDef dmnsn_py_Vector_getsetters[] = { { NULL } }; -static PyTypeObject dmnsn_py_VectorType = { +PyTypeObject dmnsn_py_VectorType = { PyVarObject_HEAD_INIT(NULL, 0) .tp_name = "dimension.Vector", .tp_basicsize = sizeof(dmnsn_py_Vector), @@ -346,7 +342,7 @@ static PyTypeObject dmnsn_py_VectorType = { .tp_init = (initproc)dmnsn_py_Vector_init, }; -static bool +bool dmnsn_py_init_VectorType(void) { dmnsn_py_VectorType.tp_new = PyType_GenericNew; diff --git a/libdimension-python/Vector.h b/libdimension-python/Vector.h new file mode 100644 index 0000000..0ec288d --- /dev/null +++ b/libdimension-python/Vector.h @@ -0,0 +1,35 @@ +/************************************************************************* + * Copyright (C) 2009-2011 Tavian Barnes <tavianator@tavianator.com> * + * * + * This file is part of The Dimension Python Module. * + * * + * The Dimension Python Module is free software; you can redistribute it * + * and/ or modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either version * + * 3 of the License, or (at your option) any later version. * + * * + * The Dimension Python Module is distributed in the hope that it will * + * be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See * + * the GNU Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this program. If not, see * + * <http://www.gnu.org/licenses/>. * + *************************************************************************/ + +#include "dimension.h" + +typedef struct dmnsn_py_Vector { + PyObject_HEAD + dmnsn_vector v; +} dmnsn_py_Vector; + +extern PyTypeObject dmnsn_py_VectorType; + +bool dmnsn_py_init_VectorType(void); + +/* Global methods */ +PyObject *dmnsn_py_Vector_cross(PyObject *self, PyObject *args); +PyObject *dmnsn_py_Vector_dot(PyObject *self, PyObject *args); +PyObject *dmnsn_py_Vector_proj(PyObject *self, PyObject *args); diff --git a/libdimension-python/dimension.c b/libdimension-python/dimension.c index 511f197..91d32dc 100644 --- a/libdimension-python/dimension.c +++ b/libdimension-python/dimension.c @@ -18,13 +18,9 @@ * <http://www.gnu.org/licenses/>. * *************************************************************************/ -#define PY_SSIZE_T_CLEAN -#include <Python.h> -#include <structmember.h> #include "dimension.h" - -#include "Vector.c" -#include "Scene.c" +#include "Vector.h" +#include "Scene.h" static PyObject * dmnsn_py_dieOnWarnings(PyObject *self, PyObject *args) diff --git a/libdimension-python/dimension.h b/libdimension-python/dimension.h new file mode 100644 index 0000000..aa32b51 --- /dev/null +++ b/libdimension-python/dimension.h @@ -0,0 +1,23 @@ +/************************************************************************* + * Copyright (C) 2009-2011 Tavian Barnes <tavianator@tavianator.com> * + * * + * This file is part of The Dimension Python Module. * + * * + * The Dimension Python Module is free software; you can redistribute it * + * and/ or modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either version * + * 3 of the License, or (at your option) any later version. * + * * + * The Dimension Python Module is distributed in the hope that it will * + * be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See * + * the GNU Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this program. If not, see * + * <http://www.gnu.org/licenses/>. * + *************************************************************************/ + +#define PY_SSIZE_T_CLEAN +#include <Python.h> +#include "../libdimension/dimension.h" |