diff options
| author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2006-12-11 20:30:19 +0000 |
|---|---|---|
| committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2006-12-11 20:30:19 +0000 |
| commit | 8ab339978d34b8c14dcf53aa6fbf228efb9130c6 (patch) | |
| tree | 516e847b0c249f0235d9a8a89b977dd0fc23795b /_dbus_bindings/float.c | |
| parent | 14df12b437c1d8e0ce79aa90c99d58c820a94048 (diff) | |
| download | dbus-python-8ab339978d34b8c14dcf53aa6fbf228efb9130c6.tar.gz | |
Separate out remaining types (abstract, bytes, containers, int, float, signature, string) into separate translation units
Diffstat (limited to '_dbus_bindings/float.c')
| -rw-r--r-- | _dbus_bindings/float.c | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/_dbus_bindings/float.c b/_dbus_bindings/float.c new file mode 100644 index 0000000..72afec1 --- /dev/null +++ b/_dbus_bindings/float.c @@ -0,0 +1,157 @@ +/* Simple D-Bus types: Double and (with appropriate #defines) Float + * + * Copyright (C) 2006 Collabora Ltd. + * + * Licensed under the Academic Free License version 2.1 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include <Python.h> +#include <structmember.h> + +#include <stdint.h> + +#include "dbus_bindings-internal.h" +#include "types-internal.h" + +PyDoc_STRVAR(Double_tp_doc, +"A double-precision floating point number (a subtype of float)."); + +#ifdef WITH_DBUS_FLOAT32 +PyDoc_STRVAR(Float_tp_doc, +"A single-precision floating point number (a subtype of float)."); +#endif + +PyTypeObject DBusPyDouble_Type = { + PyObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type)) + 0, + "dbus.Double", + 0, + 0, + 0, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 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 | Py_TPFLAGS_BASETYPE, /* tp_flags */ + Double_tp_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + DEFERRED_ADDRESS(&DBusPythonFloatType), /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ +}; + +#ifdef WITH_DBUS_FLOAT32 + +PyTypeObject DBusPyFloat_Type = { + PyObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type)) + 0, + "dbus.Float", + 0, + 0, + 0, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_compare */ + 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 | Py_TPFLAGS_BASETYPE, /* tp_flags */ + Float_tp_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + DEFERRED_ADDRESS(&DBusPythonFloatType), /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ +}; +#endif /* defined(WITH_DBUS_FLOAT32) */ + +dbus_bool_t +dbus_py_init_float_types(void) +{ + DBusPyDouble_Type.tp_base = &DBusPyFloatBase_Type; + if (PyType_Ready(&DBusPyDouble_Type) < 0) return 0; + DBusPyDouble_Type.tp_print = NULL; + +#ifdef WITH_DBUS_FLOAT32 + DBusPyFloat_Type.tp_base = &DBusPyFloatBase_Type; + if (PyType_Ready(&DBusPyFloat_Type) < 0) return 0; + DBusPyFloat_Type.tp_print = NULL; +#endif + + return 1; +} + +dbus_bool_t +dbus_py_insert_float_types(PyObject *this_module) +{ + Py_INCREF(&DBusPyDouble_Type); + if (PyModule_AddObject(this_module, "Double", + (PyObject *)&DBusPyDouble_Type) < 0) return 0; +#ifdef WITH_DBUS_FLOAT32 + Py_INCREF(&DBusPyFloat_Type); + if (PyModule_AddObject(this_module, "Float", + (PyObject *)&DBusPyFloat_Type) < 0) return 0; +#endif + + return 1; +} |
