#ifndef GDB_EVENTS_H
#define GDB_EVENTS_H
#ifndef WITH_GDB_EVENTS
#define WITH_GDB_EVENTS 1
#endif
typedef void (gdb_events_breakpoint_create_ftype) (int b);
typedef void (gdb_events_breakpoint_delete_ftype) (int b);
typedef void (gdb_events_breakpoint_modify_ftype) (int b);
typedef void (gdb_events_tracepoint_create_ftype) (int number);
typedef void (gdb_events_tracepoint_delete_ftype) (int number);
typedef void (gdb_events_tracepoint_modify_ftype) (int number);
typedef void (gdb_events_architecture_changed_ftype) (void);
typedef void (gdb_events_target_changed_ftype) (void);
typedef void (gdb_events_selected_frame_level_changed_ftype) (int level);
typedef void (gdb_events_selected_thread_changed_ftype) (int thread_num);
struct gdb_events
{
gdb_events_breakpoint_create_ftype *breakpoint_create;
gdb_events_breakpoint_delete_ftype *breakpoint_delete;
gdb_events_breakpoint_modify_ftype *breakpoint_modify;
gdb_events_tracepoint_create_ftype *tracepoint_create;
gdb_events_tracepoint_delete_ftype *tracepoint_delete;
gdb_events_tracepoint_modify_ftype *tracepoint_modify;
gdb_events_architecture_changed_ftype *architecture_changed;
gdb_events_target_changed_ftype *target_changed;
gdb_events_selected_frame_level_changed_ftype *selected_frame_level_changed;
gdb_events_selected_thread_changed_ftype *selected_thread_changed;
};
extern void breakpoint_create_event (int b);
extern void breakpoint_delete_event (int b);
extern void breakpoint_modify_event (int b);
extern void tracepoint_create_event (int number);
extern void tracepoint_delete_event (int number);
extern void tracepoint_modify_event (int number);
extern void architecture_changed_event (void);
extern void target_changed_event (void);
extern void selected_frame_level_changed_event (int level);
extern void selected_thread_changed_event (int thread_num);
#if !WITH_GDB_EVENTS
#define breakpoint_create_event(b) 0
#define breakpoint_delete_event(b) 0
#define breakpoint_modify_event(b) 0
#define tracepoint_create_event(number) 0
#define tracepoint_delete_event(number) 0
#define tracepoint_modify_event(number) 0
#define architecture_changed_event() 0
#define target_changed_event() 0
#define selected_frame_level_changed_event(level) 0
#define selected_thread_changed_event(thread_num) 0
#endif
extern struct gdb_events *set_gdb_event_hooks (struct gdb_events *vector);
extern void gdb_events_deliver (struct gdb_events *vector);
extern void clear_gdb_event_hooks (void);
#if !WITH_GDB_EVENTS
#define set_gdb_events(x) 0
#define set_gdb_event_hooks(x) 0
#define gdb_events_deliver(x) 0
#endif
#endif