Blame _dbus_bindings/generic.c

Packit 130fc8
/* General Python glue code, used in _dbus_bindings but not actually anything
Packit 130fc8
 * to do with D-Bus.
Packit 130fc8
 *
Packit 130fc8
 * Copyright (C) 2006 Collabora Ltd. <http://www.collabora.co.uk/>
Packit 130fc8
 *
Packit 130fc8
 * Permission is hereby granted, free of charge, to any person
Packit 130fc8
 * obtaining a copy of this software and associated documentation
Packit 130fc8
 * files (the "Software"), to deal in the Software without
Packit 130fc8
 * restriction, including without limitation the rights to use, copy,
Packit 130fc8
 * modify, merge, publish, distribute, sublicense, and/or sell copies
Packit 130fc8
 * of the Software, and to permit persons to whom the Software is
Packit 130fc8
 * furnished to do so, subject to the following conditions:
Packit 130fc8
 *
Packit 130fc8
 * The above copyright notice and this permission notice shall be
Packit 130fc8
 * included in all copies or substantial portions of the Software.
Packit 130fc8
 *
Packit 130fc8
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
Packit 130fc8
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
Packit 130fc8
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
Packit 130fc8
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
Packit 130fc8
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
Packit 130fc8
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Packit 130fc8
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
Packit 130fc8
 * DEALINGS IN THE SOFTWARE.
Packit 130fc8
 */
Packit 130fc8
Packit 130fc8
#include "dbus_bindings-internal.h"
Packit 130fc8
Packit 130fc8
/* The empty tuple, held globally since dbus-python turns out to use it quite
Packit 130fc8
 * a lot
Packit 130fc8
 */
Packit 130fc8
PyObject *dbus_py_empty_tuple = NULL;
Packit 130fc8
Packit 130fc8
int
Packit 130fc8
dbus_py_immutable_setattro(PyObject *obj UNUSED,
Packit 130fc8
                           PyObject *name UNUSED,
Packit 130fc8
                           PyObject *value UNUSED)
Packit 130fc8
{
Packit 130fc8
    PyErr_SetString(PyExc_AttributeError, "Object is immutable");
Packit 130fc8
    return -1;
Packit 130fc8
}
Packit 130fc8
Packit 130fc8
/* Take the global interpreter lock and decrement the reference count.
Packit 130fc8
 * Suitable for calling from a C callback. */
Packit 130fc8
void
Packit 130fc8
dbus_py_take_gil_and_xdecref(PyObject *obj)
Packit 130fc8
{
Packit 130fc8
    PyGILState_STATE gil = PyGILState_Ensure();
Packit 130fc8
    Py_CLEAR(obj);
Packit 130fc8
    PyGILState_Release(gil);
Packit 130fc8
}
Packit 130fc8
Packit 130fc8
dbus_bool_t
Packit 130fc8
dbus_py_init_generic(void)
Packit 130fc8
{
Packit 130fc8
    dbus_py_empty_tuple = PyTuple_New(0);
Packit 130fc8
    if (!dbus_py_empty_tuple) return 0;
Packit 130fc8
    return 1;
Packit 130fc8
}
Packit 130fc8
Packit 130fc8
/* vim:set ft=c cino< sw=4 sts=4 et: */