1c50c785cSJohn Marino /* Python interface to inferior events.
2c50c785cSJohn Marino
3*ef5ccd6cSJohn Marino Copyright (C) 2009-2013 Free Software Foundation, Inc.
4c50c785cSJohn Marino
5c50c785cSJohn Marino This file is part of GDB.
6c50c785cSJohn Marino
7c50c785cSJohn Marino This program is free software; you can redistribute it and/or modify
8c50c785cSJohn Marino it under the terms of the GNU General Public License as published by
9c50c785cSJohn Marino the Free Software Foundation; either version 3 of the License, or
10c50c785cSJohn Marino (at your option) any later version.
11c50c785cSJohn Marino
12c50c785cSJohn Marino This program is distributed in the hope that it will be useful,
13c50c785cSJohn Marino but WITHOUT ANY WARRANTY; without even the implied warranty of
14c50c785cSJohn Marino MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15c50c785cSJohn Marino GNU General Public License for more details.
16c50c785cSJohn Marino
17c50c785cSJohn Marino You should have received a copy of the GNU General Public License
18c50c785cSJohn Marino along with this program. If not, see <http://www.gnu.org/licenses/>. */
19c50c785cSJohn Marino
20*ef5ccd6cSJohn Marino #include "defs.h"
21c50c785cSJohn Marino #include "py-events.h"
22c50c785cSJohn Marino
23*ef5ccd6cSJohn Marino #ifdef IS_PY3K
24*ef5ccd6cSJohn Marino static struct PyModuleDef EventModuleDef =
25*ef5ccd6cSJohn Marino {
26*ef5ccd6cSJohn Marino PyModuleDef_HEAD_INIT,
27*ef5ccd6cSJohn Marino "gdb.events",
28*ef5ccd6cSJohn Marino NULL,
29*ef5ccd6cSJohn Marino -1,
30*ef5ccd6cSJohn Marino NULL,
31*ef5ccd6cSJohn Marino NULL,
32*ef5ccd6cSJohn Marino NULL,
33*ef5ccd6cSJohn Marino NULL,
34*ef5ccd6cSJohn Marino NULL
35*ef5ccd6cSJohn Marino };
36*ef5ccd6cSJohn Marino #endif
37*ef5ccd6cSJohn Marino
38c50c785cSJohn Marino /* Initialize python events. */
39c50c785cSJohn Marino
40c50c785cSJohn Marino static int
add_new_registry(eventregistry_object ** registryp,char * name)41c50c785cSJohn Marino add_new_registry (eventregistry_object **registryp, char *name)
42c50c785cSJohn Marino {
43c50c785cSJohn Marino *registryp = create_eventregistry_object ();
44c50c785cSJohn Marino
45c50c785cSJohn Marino if (*registryp == NULL)
46c50c785cSJohn Marino goto fail;
47c50c785cSJohn Marino
48c50c785cSJohn Marino if (PyModule_AddObject (gdb_py_events.module,
49c50c785cSJohn Marino name,
50c50c785cSJohn Marino (PyObject *)(*registryp)) < 0)
51c50c785cSJohn Marino goto fail;
52c50c785cSJohn Marino
53c50c785cSJohn Marino return 0;
54c50c785cSJohn Marino
55c50c785cSJohn Marino fail:
56c50c785cSJohn Marino Py_XDECREF (*registryp);
57c50c785cSJohn Marino return -1;
58c50c785cSJohn Marino }
59c50c785cSJohn Marino
60c50c785cSJohn Marino void
gdbpy_initialize_py_events(void)61c50c785cSJohn Marino gdbpy_initialize_py_events (void)
62c50c785cSJohn Marino {
63*ef5ccd6cSJohn Marino #ifdef IS_PY3K
64*ef5ccd6cSJohn Marino gdb_py_events.module = PyModule_Create (&EventModuleDef);
65*ef5ccd6cSJohn Marino #else
66c50c785cSJohn Marino gdb_py_events.module = Py_InitModule ("events", NULL);
67*ef5ccd6cSJohn Marino #endif
68c50c785cSJohn Marino
69c50c785cSJohn Marino if (!gdb_py_events.module)
70c50c785cSJohn Marino goto fail;
71c50c785cSJohn Marino
72c50c785cSJohn Marino if (add_new_registry (&gdb_py_events.stop, "stop") < 0)
73c50c785cSJohn Marino goto fail;
74c50c785cSJohn Marino
75c50c785cSJohn Marino if (add_new_registry (&gdb_py_events.cont, "cont") < 0)
76c50c785cSJohn Marino goto fail;
77c50c785cSJohn Marino
78c50c785cSJohn Marino if (add_new_registry (&gdb_py_events.exited, "exited") < 0)
79c50c785cSJohn Marino goto fail;
80c50c785cSJohn Marino
81a45ae5f8SJohn Marino if (add_new_registry (&gdb_py_events.new_objfile, "new_objfile") < 0)
82a45ae5f8SJohn Marino goto fail;
83a45ae5f8SJohn Marino
84*ef5ccd6cSJohn Marino #ifndef IS_PY3K
85c50c785cSJohn Marino Py_INCREF (gdb_py_events.module);
86*ef5ccd6cSJohn Marino #endif
87c50c785cSJohn Marino if (PyModule_AddObject (gdb_module,
88c50c785cSJohn Marino "events",
89c50c785cSJohn Marino (PyObject *) gdb_py_events.module) < 0)
90c50c785cSJohn Marino goto fail;
91c50c785cSJohn Marino
92c50c785cSJohn Marino return;
93c50c785cSJohn Marino
94c50c785cSJohn Marino fail:
95c50c785cSJohn Marino gdbpy_print_stack ();
96c50c785cSJohn Marino }
97