GDB (xrefs)
py-evts.c
Go to the documentation of this file.
1 /* Python interface to inferior events.
2 
3  Copyright (C) 2009-2018 Free Software Foundation, Inc.
4 
5  This file is part of GDB.
6 
7  This program is free software; you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation; either version 3 of the License, or
10  (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program. If not, see <http://www.gnu.org/licenses/>. */
19 
20 #include "defs.h"
21 #include "py-events.h"
22 
23 #ifdef IS_PY3K
24 static struct PyModuleDef EventModuleDef =
25 {
26  PyModuleDef_HEAD_INIT,
27  "gdb.events",
28  NULL,
29  -1,
30  NULL,
31  NULL,
32  NULL,
33  NULL,
34  NULL
35 };
36 #endif
37 
38 /* Initialize python events. */
39 
41 add_new_registry (eventregistry_object **registryp, const char *name)
42 {
43  *registryp = create_eventregistry_object ();
44 
45  if (*registryp == NULL)
46  return -1;
47 
49  name,
50  (PyObject *)(*registryp));
51 }
52 
53 int
55 {
56 #ifdef IS_PY3K
57  gdb_py_events.module = PyModule_Create (&EventModuleDef);
58 #else
59  gdb_py_events.module = Py_InitModule ("events", NULL);
60 #endif
61 
62  if (!gdb_py_events.module)
63  return -1;
64 
65 #define GDB_PY_DEFINE_EVENT(name) \
66  if (add_new_registry (&gdb_py_events.name, #name) < 0) \
67  return -1;
68 #include "py-all-events.def"
69 #undef GDB_PY_DEFINE_EVENT
70 
72  "events",
73  (PyObject *) gdb_py_events.module) < 0)
74  return -1;
75 
76  return 0;
77 }
int gdb_pymodule_addobject(PyObject *module, const char *name, PyObject *object)
Definition: py-utils.c:376
int gdbpy_initialize_py_events(void)
Definition: py-evts.c:54
PyObject * module
Definition: py-events.h:47
eventregistry_object * create_eventregistry_object(void)
const char *const name
Definition: aarch64-tdep.c:76
#define CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION
static int CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION add_new_registry(eventregistry_object **registryp, const char *name)
Definition: py-evts.c:41
events_object gdb_py_events
PyObject * gdb_module
Definition: python.c:116