blob: 69e3d05453bb6de04515fad484b427ca5dbc3076 [file] [log] [blame]
Guido van Rossumf70e43a1991-02-19 12:39:46 +00001
Fred Drake5eb6d4e2000-07-08 23:37:28 +00002#ifndef Py_TRACEBACK_H
3#define Py_TRACEBACK_H
4#ifdef __cplusplus
5extern "C" {
6#endif
7
Nicholas Bastina7604bf2004-03-21 18:37:23 +00008struct _frame;
9
Guido van Rossum3f5da241990-12-20 15:06:42 +000010/* Traceback interface */
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000011#ifndef Py_LIMITED_API
Nicholas Bastina7604bf2004-03-21 18:37:23 +000012typedef struct _traceback {
Victor Stinner0fe25a42010-06-17 23:08:50 +000013 PyObject_HEAD
14 struct _traceback *tb_next;
15 struct _frame *tb_frame;
16 int tb_lasti;
17 int tb_lineno;
Nicholas Bastina7604bf2004-03-21 18:37:23 +000018} PyTracebackObject;
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000019#endif
Guido van Rossum66cb3111994-12-30 15:33:50 +000020
Mark Hammond91a681d2002-08-12 07:21:58 +000021PyAPI_FUNC(int) PyTraceBack_Here(struct _frame *);
22PyAPI_FUNC(int) PyTraceBack_Print(PyObject *, PyObject *);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000023#ifndef Py_LIMITED_API
Victor Stinner0fe25a42010-06-17 23:08:50 +000024PyAPI_FUNC(int) _Py_DisplaySourceLine(PyObject *, PyObject *, int, int);
Martin v. Löwis4d0d4712010-12-03 20:14:31 +000025#endif
Guido van Rossuma3309961993-07-28 09:05:47 +000026
Andrew M. Kuchling913b9072002-03-19 16:02:35 +000027/* Reveal traceback type so we can typecheck traceback objects */
Mark Hammond91a681d2002-08-12 07:21:58 +000028PyAPI_DATA(PyTypeObject) PyTraceBack_Type;
Christian Heimes90aa7642007-12-19 02:45:37 +000029#define PyTraceBack_Check(v) (Py_TYPE(v) == &PyTraceBack_Type)
Guido van Rossum884afd61995-07-18 14:21:06 +000030
Guido van Rossuma3309961993-07-28 09:05:47 +000031#ifdef __cplusplus
32}
33#endif
34#endif /* !Py_TRACEBACK_H */