blob: fc0c586b8906a74c7d6b070da05fed8046b6b397 [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 */
11
Nicholas Bastina7604bf2004-03-21 18:37:23 +000012typedef struct _traceback {
Victor Stinner25bb0fd2010-06-17 23:23:37 +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;
Guido van Rossum66cb3111994-12-30 15:33:50 +000019
Mark Hammond91a681d2002-08-12 07:21:58 +000020PyAPI_FUNC(int) PyTraceBack_Here(struct _frame *);
21PyAPI_FUNC(int) PyTraceBack_Print(PyObject *, PyObject *);
Victor Stinner25bb0fd2010-06-17 23:23:37 +000022PyAPI_FUNC(int) _Py_DisplaySourceLine(PyObject *, PyObject *, int, int);
Guido van Rossuma3309961993-07-28 09:05:47 +000023
Andrew M. Kuchling913b9072002-03-19 16:02:35 +000024/* Reveal traceback type so we can typecheck traceback objects */
Mark Hammond91a681d2002-08-12 07:21:58 +000025PyAPI_DATA(PyTypeObject) PyTraceBack_Type;
Christian Heimes90aa7642007-12-19 02:45:37 +000026#define PyTraceBack_Check(v) (Py_TYPE(v) == &PyTraceBack_Type)
Guido van Rossum884afd61995-07-18 14:21:06 +000027
Guido van Rossuma3309961993-07-28 09:05:47 +000028#ifdef __cplusplus
29}
30#endif
31#endif /* !Py_TRACEBACK_H */