From 87bc3cb4fcaf0e3ead4c41e8c56a06cf481875c0 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Mon, 16 May 2011 08:07:27 -0600 Subject: Start Python interface. --- libdimension-python/Makefile.am | 27 ++++++++++++++ libdimension-python/dimension.c | 81 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 libdimension-python/Makefile.am create mode 100644 libdimension-python/dimension.c (limited to 'libdimension-python') diff --git a/libdimension-python/Makefile.am b/libdimension-python/Makefile.am new file mode 100644 index 0000000..a362964 --- /dev/null +++ b/libdimension-python/Makefile.am @@ -0,0 +1,27 @@ +########################################################################### +## Copyright (C) 2009-2011 Tavian Barnes ## +## ## +## This file is part of The Dimension Build Suite. ## +## ## +## The Dimension Build Suite is free software; you can redistribute it ## +## and/or modify it under the terms of the GNU 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 Build Suite 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 ## +## General Public License for more details. ## +## ## +## You should have received a copy of the GNU General Public License ## +## along with this program. If not, see . ## +########################################################################### + +INCLUDES = -I$(top_srcdir)/libdimension + +AM_CFLAGS = $(Python_CFLAGS) +AM_LDFLAGS = $(Python_LDFLAGS) + +pyexec_LTLIBRARIES = dimension.la +dimension_la_SOURCES = dimension.c +dimension_la_LDFLAGS = -avoid-version -module diff --git a/libdimension-python/dimension.c b/libdimension-python/dimension.c new file mode 100644 index 0000000..35b9f4c --- /dev/null +++ b/libdimension-python/dimension.c @@ -0,0 +1,81 @@ +/************************************************************************* + * Copyright (C) 2009-2011 Tavian Barnes * + * * + * This file is part of The Dimension Python Extension. * + * * + * The Dimension Python Extension 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 Extension 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 * + * . * + *************************************************************************/ + +#include +#include "dimension.h" + +typedef struct { + PyObject_HEAD + dmnsn_scene *scene; +} dmnsn_SceneObject; + +static PyTypeObject dmnsn_SceneType = { + PyVarObject_HEAD_INIT(NULL, 0) + "dimension.Scene", /* tp_name */ + sizeof(dmnsn_SceneObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + 0, /* 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 */ +}; + +static PyMethodDef DimensionMethods[] = { + { NULL, NULL, 0, NULL } /* Sentinel */ +}; + +static struct PyModuleDef dimensionmodule = { + PyModuleDef_HEAD_INIT, + "dimension", + NULL, + -1, + DimensionMethods +}; + +PyMODINIT_FUNC +PyInit_dimension(void) +{ + dmnsn_SceneType.tp_new = PyType_GenericNew; + if (PyType_Ready(&dmnsn_SceneType) < 0) { + return NULL; + } + + PyObject *m = PyModule_Create(&dimensionmodule); + if (!m) { + return NULL; + } + + Py_INCREF(&dmnsn_SceneType); + PyModule_AddObject(m, "Scene", (PyObject *)&dmnsn_SceneType); + return m; +} -- cgit v1.2.3