-static PyObject *
-Journal___process_field(Journal *self, PyObject *key, const void *value, ssize_t value_len)
-{
- PyObject *callable=NULL, *return_value=NULL;
- if (PyDict_Check(self->call_dict))
- callable = PyDict_GetItem(self->call_dict, key);
-
- if (PyCallable_Check(callable)) {
-#if PY_MAJOR_VERSION >=3
- return_value = PyObject_CallFunction(callable, "y#", value, value_len);
-#else
- return_value = PyObject_CallFunction(callable, "s#", value, value_len);
-#endif
- if (!return_value)
- PyErr_Clear();
- }
- if (!return_value && PyCallable_Check(self->default_call))
-#if PY_MAJOR_VERSION >=3
- return_value = PyObject_CallFunction(self->default_call, "y#", value, value_len);
-#else
- return_value = PyObject_CallFunction(self->default_call, "s#", value, value_len);
-#endif
- if (!return_value) {
- PyErr_Clear();
-#if PY_MAJOR_VERSION >=3
- return_value = PyBytes_FromStringAndSize(value, value_len);
-#else
- return_value = PyString_FromStringAndSize(value, value_len);
-#endif
- }
- if (!return_value) {
- return_value = Py_None;
- }
- return return_value;
-}
-