/*[clinic]
module spam
spam.ham

    data: Py_buffer
    /

[clinic]*/

PyDoc_STRVAR(spam_ham__doc__,
"ham(data)");

#define SPAM_HAM_METHODDEF    \
    {"ham", (PyCFunction)spam_ham, METH_VARARGS, spam_ham__doc__},

static PyObject *
spam_ham_impl(PyModuleDef *module, Py_buffer *data);

static PyObject *
spam_ham(PyModuleDef *module, PyObject *args)
{
    PyObject *return_value = NULL;
    Py_buffer data;

    if (!PyArg_ParseTuple(args,
        "y*:ham",
        &data))
        goto exit;
    return_value = spam_ham_impl(module, &data);

exit:
    /* Cleanup for data */
    if (data.buf)
       PyBuffer_Release(&data);

    return return_value;
}

static PyObject *
spam_ham_impl(PyModuleDef *module, Py_buffer *data)
/*[clinic checksum: 0617a28ab6e05a7e9bb761a815974591a14b2fcd]*/
