static PyObject *
BaseRowProxy_getitem(PyObject *self, Py_ssize_t i)
{
    PyObject *index;

#if PY_MAJOR_VERSION >= 3
    index = PyLong_FromSsize_t(i);
#else
    index = PyInt_FromSsize_t(i);
#endif
    return BaseRowProxy_subscript((BaseRowProxy*)self, index);
}
static PyObject *
BaseRowProxy_getattro(BaseRowProxy *self, PyObject *name)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    PyObject *err_bytes;
#endif

    if (!(tmp = PyObject_GenericGetAttr((PyObject *)self, name))) {
        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
            return NULL;
        PyErr_Clear();
    }
    else
        return tmp;

    tmp = BaseRowProxy_subscript(self, name);
    if (tmp == NULL && PyErr_ExceptionMatches(PyExc_KeyError)) {

#if PY_MAJOR_VERSION >= 3
        err_bytes = PyUnicode_AsASCIIString(name);
        if (err_bytes == NULL)
            return NULL;
        PyErr_Format(
                PyExc_AttributeError,
                "Could not locate column in row for column '%.200s'",
                PyBytes_AS_STRING(err_bytes)
            );
#else
        PyErr_Format(
                PyExc_AttributeError,
                "Could not locate column in row for column '%.200s'",
                PyString_AsString(name)
            );
#endif
        return NULL;
    }
    return tmp;
}
Exemplo n.º 3
0
static PyObject *
BaseRowProxy_getattro(BaseRowProxy *self, PyObject *name)
{
    PyObject *tmp;

    if (!(tmp = PyObject_GenericGetAttr((PyObject *)self, name))) {
        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
            return NULL;
        PyErr_Clear();
    }
    else
        return tmp;

    tmp = BaseRowProxy_subscript(self, name);
    if (tmp == NULL && PyErr_ExceptionMatches(PyExc_KeyError)) {
        PyErr_Format(
                PyExc_AttributeError, 
                "Could not locate column in row for column '%.200s'",
                PyString_AsString(name)
            );
        return NULL;
    }
    return tmp;
}
Exemplo n.º 4
0
static PyObject *
BaseRowProxy_getitem(PyObject *self, Py_ssize_t i)
{
    return BaseRowProxy_subscript((BaseRowProxy*)self, PyInt_FromSsize_t(i));
}