X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Ftui%2Ftui-source.h;h=c623f5e2941d49a874f74d4d40a3fde022d00841;hb=81c82c4b9005acf7865d8a19ee651968e059a848;hp=8ceb194e3923799f7a464595919d7e73483288b5;hpb=5813316fa4aeaf52f374c20c7fdb9747b88fa8ca;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/tui/tui-source.h b/gdb/tui/tui-source.h index 8ceb194e39..c623f5e294 100644 --- a/gdb/tui/tui-source.h +++ b/gdb/tui/tui-source.h @@ -23,20 +23,62 @@ #define TUI_TUI_SOURCE_H #include "tui/tui-data.h" +#include "tui-winsource.h" struct symtab; -struct tui_win_info; -extern void tui_set_source_content_nil (struct tui_source_window_base *, - const char *); +/* A TUI source window. */ + +struct tui_source_window : public tui_source_window_base +{ + tui_source_window (); + ~tui_source_window (); + + DISABLE_COPY_AND_ASSIGN (tui_source_window); + + const char *name () const override + { + return SRC_NAME; + } + + /* Return true if the location LOC corresponds to the line number + LINE_NO in this source window; false otherwise. */ + bool location_matches_p (struct bp_location *loc, int line_no) override; + + bool showing_source_p (const char *filename) const; + + void maybe_update (struct frame_info *fi, symtab_and_line sal, + int line_no, CORE_ADDR addr) + override; + + void erase_source_content () override + { + do_erase_source_content (NO_SRC_STRING); + } + +protected: + + void do_scroll_vertical (int num_to_scroll) override; + + enum tui_status set_contents + (struct gdbarch *gdbarch, + struct symtab *s, + struct tui_line_or_address line_or_addr) override; + +private: + + void style_changed (); + + /* Answer whether a particular line number or address is displayed + in the current source window. */ + bool line_is_displayed (int line) const; + + /* A token used to register and unregister an observer. */ + gdb::observers::token m_observable; +}; -extern enum tui_status tui_set_source_content (tui_source_window_base *, - struct symtab *, - int, int); extern void tui_show_symtab_source (tui_source_window_base *, struct gdbarch *, struct symtab *, - struct tui_line_or_address, - int); -extern int tui_source_is_displayed (const char *); + struct tui_line_or_address); #endif /* TUI_TUI_SOURCE_H */