1 #ifndef __PYGI_UTIL_H__
2 #define __PYGI_UTIL_H__
6 #include "pygobject-internal.h"
7 #include <pyglib-python-compat.h>
11 PyObject * pyg_integer_richcompare(PyObject *v, PyObject *w, int op);
13 #if PY_VERSION_HEX >= 0x03000000
15 #define _PyGI_ERROR_PREFIX(format, ...) G_STMT_START { \
16 PyObject *py_error_prefix; \
17 py_error_prefix = PyUnicode_FromFormat(format, ## __VA_ARGS__); \
18 if (py_error_prefix != NULL) { \
19 PyObject *py_error_type, *py_error_value, *py_error_traceback; \
20 PyErr_Fetch(&py_error_type, &py_error_value, &py_error_traceback); \
21 if (PyUnicode_Check(py_error_value)) { \
23 new = PyUnicode_Concat(py_error_prefix, py_error_value); \
24 Py_DECREF(py_error_value); \
26 py_error_value = new; \
29 PyErr_Restore(py_error_type, py_error_value, py_error_traceback); \
30 Py_DECREF(py_error_prefix); \
36 #define _PyGI_ERROR_PREFIX(format, ...) G_STMT_START { \
37 PyObject *py_error_prefix; \
38 py_error_prefix = PyString_FromFormat(format, ## __VA_ARGS__); \
39 if (py_error_prefix != NULL) { \
40 PyObject *py_error_type, *py_error_value, *py_error_traceback; \
41 PyErr_Fetch(&py_error_type, &py_error_value, &py_error_traceback); \
42 if (PyString_Check(py_error_value)) { \
43 PyString_ConcatAndDel(&py_error_prefix, py_error_value); \
44 if (py_error_prefix != NULL) { \
45 py_error_value = py_error_prefix; \
48 PyErr_Restore(py_error_type, py_error_value, py_error_traceback); \
56 #endif /* __PYGI_UTIL_H__ */