Make it simpler to add events to Python

The first patch in this series went through several iterations as I'd
forgotten how many places had to be touched to add a new event and a
new event type.

This patch simplifies the process using two new ".def" files.  Now, a
new event type can be added by adding a line to "py-event-types.def",
and a new event registry can be added by adding a line to
"py-all-events.def".

ChangeLog
2017-09-11  Tom Tromey  <tom@tromey.com>

	* python/python.c (do_start_initialization): Use
	py-event-types.def to initialize types.
	Define all object type structures.
	* python/python-internal.h: Don't declare event initialization
	functions.
	* python/py-threadevent.c (thread_event_object_type): Don't
	define.
	* python/py-stopevent.c (stop_event_object_type): Don't define.
	* python/py-signalevent.c (signal_event_object_type): Don't
	declare or define.
	* python/py-newobjfileevent.c (new_objfile_event_object_type)
	(clear_objfiles_event_object_type): Don't declare or define.
	* python/py-infevents.c (inferior_call_pre_event_object_type)
	(inferior_call_post_event_object_type)
	(register_changed_event_object_type)
	(memory_changed_event_object_type): Don't declare or define.
	* python/py-inferior.c (new_thread_event_object_type)
	(new_inferior_event_object_type)
	(inferior_deleted_event_object_type): Don't declare or define.
	* python/py-exitedevent.c (exited_event_object_type): Don't
	declare or define.
	* python/py-evts.c (gdbpy_initialize_py_events): Use
	py-all-events.def.
	* python/py-events.h (thread_event_object_type): Don't declare.
	(events_object): Use py-all-events.def.
	* python/py-event.h (GDBPY_NEW_EVENT_TYPE): Remove.  Use
	py-event-types.def.
	* python/py-event-types.def: New file.
	* python/py-continueevent.c (create_continue_event_object): Don't
	declare or define.
	* python/py-bpevent.c (breakpoint_event_object_type): Don't
	declare or define.
	* python/py-all-events.def: New file.
This commit is contained in:
Tom Tromey 2017-09-08 15:38:12 -06:00
parent 35c61a1dd5
commit 7d221d749c
17 changed files with 250 additions and 303 deletions

View file

@ -21,15 +21,6 @@
#include "py-event.h"
#include "py-ref.h"
extern PyTypeObject inferior_call_pre_event_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
extern PyTypeObject inferior_call_post_event_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
extern PyTypeObject register_changed_event_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
extern PyTypeObject memory_changed_event_object_type
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
/* Construct either a gdb.InferiorCallPreEvent or a
gdb.InferiorCallPostEvent. */
@ -172,28 +163,3 @@ emit_register_changed_event (struct frame_info* frame, int regnum)
return evpy_emit_event (event.get (), gdb_py_events.register_changed);
return -1;
}
GDBPY_NEW_EVENT_TYPE (inferior_call_pre,
"gdb.InferiorCallPreEvent",
"InferiorCallPreEvent",
"GDB inferior function pre-call event object",
event_object_type);
GDBPY_NEW_EVENT_TYPE (inferior_call_post,
"gdb.InferiorCallPostEvent",
"InferiorCallPostEvent",
"GDB inferior function post-call event object",
event_object_type);
GDBPY_NEW_EVENT_TYPE (register_changed,
"gdb.RegisterChangedEvent",
"RegisterChangedEvent",
"GDB register change event object",
event_object_type);
GDBPY_NEW_EVENT_TYPE (memory_changed,
"gdb.MemoryChangedEvent",
"MemoryChangedEvent",
"GDB memory change event object",
event_object_type);