python27_sys/
pyerrors.rs

1use libc::{c_char, c_int};
2
3use crate::classobject::*;
4use crate::object::*;
5use crate::pyport::Py_ssize_t;
6use crate::stringobject::PyString_AS_STRING;
7#[cfg(py_sys_config = "Py_USING_UNICODE")]
8use crate::unicodeobject::Py_UNICODE;
9
10#[cfg_attr(windows, link(name = "pythonXY"))]
11extern "C" {
12    pub fn PyErr_SetNone(arg1: *mut PyObject);
13    pub fn PyErr_SetObject(arg1: *mut PyObject, arg2: *mut PyObject);
14    pub fn PyErr_SetString(arg1: *mut PyObject, arg2: *const c_char);
15    pub fn PyErr_Occurred() -> *mut PyObject;
16    pub fn PyErr_Clear();
17    pub fn PyErr_Fetch(
18        arg1: *mut *mut PyObject,
19        arg2: *mut *mut PyObject,
20        arg3: *mut *mut PyObject,
21    );
22    pub fn PyErr_Restore(arg1: *mut PyObject, arg2: *mut PyObject, arg3: *mut PyObject);
23    pub fn PyErr_GivenExceptionMatches(arg1: *mut PyObject, arg2: *mut PyObject) -> c_int;
24    pub fn PyErr_ExceptionMatches(arg1: *mut PyObject) -> c_int;
25    pub fn PyErr_NormalizeException(
26        arg1: *mut *mut PyObject,
27        arg2: *mut *mut PyObject,
28        arg3: *mut *mut PyObject,
29    );
30}
31
32#[inline]
33pub unsafe fn PyExceptionClass_Check(x: *mut PyObject) -> c_int {
34    (PyClass_Check(x) != 0
35        || (PyType_Check(x) != 0
36            && PyType_FastSubclass(x as *mut PyTypeObject, Py_TPFLAGS_BASE_EXC_SUBCLASS) != 0))
37        as c_int
38}
39
40#[inline]
41pub unsafe fn PyExceptionInstance_Check(x: *mut PyObject) -> c_int {
42    (PyInstance_Check(x) != 0
43        || PyType_FastSubclass((*x).ob_type, Py_TPFLAGS_BASE_EXC_SUBCLASS) != 0) as c_int
44}
45
46#[inline]
47pub unsafe fn PyExceptionClass_Name(x: *mut PyObject) -> *const c_char {
48    if PyClass_Check(x) != 0 {
49        PyString_AS_STRING((*(x as *mut PyClassObject)).cl_name)
50    } else {
51        (*(x as *mut PyTypeObject)).tp_name
52    }
53}
54
55#[inline]
56pub unsafe fn PyExceptionInstance_Class(x: *mut PyObject) -> *mut PyObject {
57    if PyInstance_Check(x) != 0 {
58        (*(x as *mut PyInstanceObject)).in_class as *mut PyObject
59    } else {
60        (*x).ob_type as *mut PyObject
61    }
62}
63
64#[cfg_attr(windows, link(name = "pythonXY"))]
65extern "C" {
66    pub static mut PyExc_BaseException: *mut PyObject;
67    pub static mut PyExc_Exception: *mut PyObject;
68    pub static mut PyExc_StopIteration: *mut PyObject;
69    pub static mut PyExc_GeneratorExit: *mut PyObject;
70    pub static mut PyExc_StandardError: *mut PyObject;
71    pub static mut PyExc_ArithmeticError: *mut PyObject;
72    pub static mut PyExc_LookupError: *mut PyObject;
73    pub static mut PyExc_AssertionError: *mut PyObject;
74    pub static mut PyExc_AttributeError: *mut PyObject;
75    pub static mut PyExc_EOFError: *mut PyObject;
76    pub static mut PyExc_FloatingPointError: *mut PyObject;
77    pub static mut PyExc_EnvironmentError: *mut PyObject;
78    pub static mut PyExc_IOError: *mut PyObject;
79    pub static mut PyExc_OSError: *mut PyObject;
80    pub static mut PyExc_ImportError: *mut PyObject;
81    pub static mut PyExc_IndexError: *mut PyObject;
82    pub static mut PyExc_KeyError: *mut PyObject;
83    pub static mut PyExc_KeyboardInterrupt: *mut PyObject;
84    pub static mut PyExc_MemoryError: *mut PyObject;
85    pub static mut PyExc_NameError: *mut PyObject;
86    pub static mut PyExc_OverflowError: *mut PyObject;
87    pub static mut PyExc_RuntimeError: *mut PyObject;
88    pub static mut PyExc_NotImplementedError: *mut PyObject;
89    pub static mut PyExc_SyntaxError: *mut PyObject;
90    pub static mut PyExc_IndentationError: *mut PyObject;
91    pub static mut PyExc_TabError: *mut PyObject;
92    pub static mut PyExc_ReferenceError: *mut PyObject;
93    pub static mut PyExc_SystemError: *mut PyObject;
94    pub static mut PyExc_SystemExit: *mut PyObject;
95    pub static mut PyExc_TypeError: *mut PyObject;
96    pub static mut PyExc_UnboundLocalError: *mut PyObject;
97    pub static mut PyExc_UnicodeError: *mut PyObject;
98    pub static mut PyExc_UnicodeEncodeError: *mut PyObject;
99    pub static mut PyExc_UnicodeDecodeError: *mut PyObject;
100    pub static mut PyExc_UnicodeTranslateError: *mut PyObject;
101    pub static mut PyExc_ValueError: *mut PyObject;
102    pub static mut PyExc_ZeroDivisionError: *mut PyObject;
103    #[cfg(windows)]
104    pub static mut PyExc_WindowsError: *mut PyObject;
105    pub static mut PyExc_BufferError: *mut PyObject;
106    pub static mut PyExc_MemoryErrorInst: *mut PyObject;
107    pub static mut PyExc_RecursionErrorInst: *mut PyObject;
108    pub static mut PyExc_Warning: *mut PyObject;
109    pub static mut PyExc_UserWarning: *mut PyObject;
110    pub static mut PyExc_DeprecationWarning: *mut PyObject;
111    pub static mut PyExc_PendingDeprecationWarning: *mut PyObject;
112    pub static mut PyExc_SyntaxWarning: *mut PyObject;
113    pub static mut PyExc_RuntimeWarning: *mut PyObject;
114    pub static mut PyExc_FutureWarning: *mut PyObject;
115    pub static mut PyExc_ImportWarning: *mut PyObject;
116    pub static mut PyExc_UnicodeWarning: *mut PyObject;
117    pub static mut PyExc_BytesWarning: *mut PyObject;
118
119    pub fn PyErr_BadArgument() -> c_int;
120    pub fn PyErr_NoMemory() -> *mut PyObject;
121    pub fn PyErr_SetFromErrno(arg1: *mut PyObject) -> *mut PyObject;
122    pub fn PyErr_SetFromErrnoWithFilenameObject(
123        arg1: *mut PyObject,
124        arg2: *mut PyObject,
125    ) -> *mut PyObject;
126    pub fn PyErr_SetFromErrnoWithFilename(
127        arg1: *mut PyObject,
128        arg2: *const c_char,
129    ) -> *mut PyObject;
130    pub fn PyErr_Format(arg1: *mut PyObject, arg2: *const c_char, ...) -> *mut PyObject;
131    pub fn PyErr_BadInternalCall();
132    pub fn _PyErr_BadInternalCall(filename: *mut c_char, lineno: c_int);
133    pub fn PyErr_NewException(
134        name: *mut c_char,
135        base: *mut PyObject,
136        dict: *mut PyObject,
137    ) -> *mut PyObject;
138    pub fn PyErr_NewExceptionWithDoc(
139        name: *mut c_char,
140        doc: *mut c_char,
141        base: *mut PyObject,
142        dict: *mut PyObject,
143    ) -> *mut PyObject;
144    pub fn PyErr_WriteUnraisable(arg1: *mut PyObject);
145    pub fn PyErr_CheckSignals() -> c_int;
146    pub fn PyErr_SetInterrupt();
147    pub fn PySignal_SetWakeupFd(fd: c_int) -> c_int;
148    pub fn PyErr_SyntaxLocation(arg1: *const c_char, arg2: c_int);
149    pub fn PyErr_ProgramText(arg1: *const c_char, arg2: c_int) -> *mut PyObject;
150}
151
152#[cfg(py_sys_config = "Py_USING_UNICODE")]
153#[cfg_attr(windows, link(name = "pythonXY"))]
154extern "C" {
155    pub fn PyUnicodeDecodeError_Create(
156        arg1: *const c_char,
157        arg2: *const c_char,
158        arg3: Py_ssize_t,
159        arg4: Py_ssize_t,
160        arg5: Py_ssize_t,
161        arg6: *const c_char,
162    ) -> *mut PyObject;
163    pub fn PyUnicodeEncodeError_Create(
164        arg1: *const c_char,
165        arg2: *const Py_UNICODE,
166        arg3: Py_ssize_t,
167        arg4: Py_ssize_t,
168        arg5: Py_ssize_t,
169        arg6: *const c_char,
170    ) -> *mut PyObject;
171    pub fn PyUnicodeTranslateError_Create(
172        arg1: *const Py_UNICODE,
173        arg2: Py_ssize_t,
174        arg3: Py_ssize_t,
175        arg4: Py_ssize_t,
176        arg5: *const c_char,
177    ) -> *mut PyObject;
178    pub fn PyUnicodeEncodeError_GetEncoding(arg1: *mut PyObject) -> *mut PyObject;
179    pub fn PyUnicodeDecodeError_GetEncoding(arg1: *mut PyObject) -> *mut PyObject;
180    pub fn PyUnicodeEncodeError_GetObject(arg1: *mut PyObject) -> *mut PyObject;
181    pub fn PyUnicodeDecodeError_GetObject(arg1: *mut PyObject) -> *mut PyObject;
182    pub fn PyUnicodeTranslateError_GetObject(arg1: *mut PyObject) -> *mut PyObject;
183    pub fn PyUnicodeEncodeError_GetStart(arg1: *mut PyObject, arg2: *mut Py_ssize_t) -> c_int;
184    pub fn PyUnicodeDecodeError_GetStart(arg1: *mut PyObject, arg2: *mut Py_ssize_t) -> c_int;
185    pub fn PyUnicodeTranslateError_GetStart(arg1: *mut PyObject, arg2: *mut Py_ssize_t) -> c_int;
186    pub fn PyUnicodeEncodeError_SetStart(arg1: *mut PyObject, arg2: Py_ssize_t) -> c_int;
187    pub fn PyUnicodeDecodeError_SetStart(arg1: *mut PyObject, arg2: Py_ssize_t) -> c_int;
188    pub fn PyUnicodeTranslateError_SetStart(arg1: *mut PyObject, arg2: Py_ssize_t) -> c_int;
189    pub fn PyUnicodeEncodeError_GetEnd(arg1: *mut PyObject, arg2: *mut Py_ssize_t) -> c_int;
190    pub fn PyUnicodeDecodeError_GetEnd(arg1: *mut PyObject, arg2: *mut Py_ssize_t) -> c_int;
191    pub fn PyUnicodeTranslateError_GetEnd(arg1: *mut PyObject, arg2: *mut Py_ssize_t) -> c_int;
192    pub fn PyUnicodeEncodeError_SetEnd(arg1: *mut PyObject, arg2: Py_ssize_t) -> c_int;
193    pub fn PyUnicodeDecodeError_SetEnd(arg1: *mut PyObject, arg2: Py_ssize_t) -> c_int;
194    pub fn PyUnicodeTranslateError_SetEnd(arg1: *mut PyObject, arg2: Py_ssize_t) -> c_int;
195    pub fn PyUnicodeEncodeError_GetReason(arg1: *mut PyObject) -> *mut PyObject;
196    pub fn PyUnicodeDecodeError_GetReason(arg1: *mut PyObject) -> *mut PyObject;
197    pub fn PyUnicodeTranslateError_GetReason(arg1: *mut PyObject) -> *mut PyObject;
198    pub fn PyUnicodeEncodeError_SetReason(arg1: *mut PyObject, arg2: *const c_char) -> c_int;
199    pub fn PyUnicodeDecodeError_SetReason(arg1: *mut PyObject, arg2: *const c_char) -> c_int;
200    pub fn PyUnicodeTranslateError_SetReason(arg1: *mut PyObject, arg2: *const c_char) -> c_int;
201}