diff options
author | Hui Zhu <teawater@gmail.com> | 2011-02-05 05:27:23 +0000 |
---|---|---|
committer | Hui Zhu <teawater@gmail.com> | 2011-02-05 05:27:23 +0000 |
commit | c17a9e46882cb057d7e1d150ac9974425dc55e03 (patch) | |
tree | fbd60a7c8eae30e33e904fe1877671b2ba378551 /gdb/python/py-exitedevent.c | |
parent | 55382fb77a791c87165d4a3f65a53dc00c80959c (diff) | |
download | gdb-c17a9e46882cb057d7e1d150ac9974425dc55e03.zip gdb-c17a9e46882cb057d7e1d150ac9974425dc55e03.tar.gz gdb-c17a9e46882cb057d7e1d150ac9974425dc55e03.tar.bz2 |
Add the file that prev commit forget.
Diffstat (limited to 'gdb/python/py-exitedevent.c')
-rw-r--r-- | gdb/python/py-exitedevent.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/gdb/python/py-exitedevent.c b/gdb/python/py-exitedevent.c new file mode 100644 index 0000000..457a4fe --- /dev/null +++ b/gdb/python/py-exitedevent.c @@ -0,0 +1,71 @@ +/* Python interface to inferior exit events. + + Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include "py-event.h" + +static PyTypeObject exited_event_object_type; + +PyObject * +create_exited_event_object (LONGEST exit_code) +{ + PyObject *exited_event; + + exited_event = create_event_object (&exited_event_object_type); + + if (!exited_event) + goto fail; + + if (evpy_add_attribute (exited_event, + "exit_code", + PyLong_FromLongLong (exit_code)) < 0) + goto fail; + + return exited_event; + + fail: + Py_XDECREF (exited_event); + return NULL; +} + +/* Callback that is used when an exit event occurs. This function + will create a new Python exited event object. */ + +int +emit_exited_event (LONGEST exit_code) +{ + PyObject *event; + + if (evregpy_no_listeners_p (gdb_py_events.exited)) + return 0; + + event = create_exited_event_object (exit_code); + + if (event) + return evpy_emit_event (event, gdb_py_events.exited); + + return -1; +} + + +GDBPY_NEW_EVENT_TYPE (exited, + "gdb.ExitedEvent", + "ExitedEvent", + "GDB exited event object", + event_object_type, + static); |