blob: e7943dae9698016009c45f38c3cb510afefd093c [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 {
13 PyObject_HEAD
14 struct _traceback *tb_next;
15 struct _frame *tb_frame;
16 int tb_lasti;
17 int tb_lineno;
18} 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 *);
Amaury Forgeot d'Arc2252d112008-07-11 21:45:06 +000022PyAPI_FUNC(int) _Py_DisplaySourceLine(PyObject *, const char *, 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 Heimese93237d2007-12-19 02:37:44 +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 */