49 int line_no = sal.
line;
59 const std::vector<off_t> *offsets;
65 int cur_line_no, cur_line;
82 int lines_in_file = offsets->size ();
83 int max_line_nr = lines_in_file;
84 int digits_needed = 1 + (int)log10 ((
double) max_line_nr);
85 int trailing_space = 1;
86 m_digits = digits_needed + trailing_space;
90 const char *iter = srclines.c_str ();
92 while (cur_line < nlines)
118 m_content[cur_line].line = std::move (text);
149 if (cursal.
symtab == NULL)
159 const std::vector<off_t> *offsets;
161 && line_no > offsets->size ())
166 cursal.
line = line_no;
169 win_info->update_source_window_as_is (arch, cursal);
177 &&
m_content[line_no].line_or_addr.u.line_no ==
loc->line_number
178 &&
loc->symtab != NULL
194 &&
m_content[i].line_or_addr.u.line_no == line)
204 int start_line = (sal.
line - ((
height - 2) / 2)) + 1;
208 bool source_already_displayed = (sal.
symtab != 0
213 sal.
line = start_line;
241 int lineno =
m_content[offset].line_or_addr.u.line_no;
248 text[i] = (i ==
m_digits) ?
'\0' : space;
252 xsnprintf (text,
sizeof (text),
256 waddstr (
handle.get (), text);
bool get_source_lines(struct symtab *s, int first_line, int last_line, std::string *lines_out)
bool get_line_charpos(struct symtab *s, const std::vector< off_t > **offsets)
CORE_ADDR get_frame_pc(frame_info_ptr frame)
struct gdbarch * get_frame_arch(frame_info_ptr this_frame)
frame_info_ptr get_selected_frame(const char *message)
source_cache g_source_cache
const char * symtab_to_fullname(struct symtab *s)
const char * symtab_to_filename_for_display(struct symtab *symtab)
struct symtab_and_line get_current_source_symtab_and_line(void)
struct objfile * objfile() const
struct gdbarch * arch() const
struct compunit_symtab * compunit() const
enum tui_line_or_address_kind loa
union tui_line_or_address::@192 u
const std::string & full_name() const
struct tui_line_or_address line_or_addr
struct tui_line_or_address m_start_line_or_addr
void update_source_window(struct gdbarch *gdbarch, const struct symtab_and_line &sal)
struct gdbarch * m_gdbarch
std::vector< tui_source_element > m_content
void set_is_exec_point_at(struct tui_line_or_address l)
bool set_contents(struct gdbarch *gdbarch, const struct symtab_and_line &sal) override
void display_start_addr(struct gdbarch **gdbarch_p, CORE_ADDR *addr_p) override
void show_line_number(int lineno) const override
void maybe_update(frame_info_ptr fi, symtab_and_line sal) override
bool showing_source_p(const char *filename) const
bool location_matches_p(struct bp_location *loc, int line_no) override
gdb::unique_xmalloc_ptr< char > m_fullname
bool line_is_displayed(int line) const
void do_scroll_vertical(int num_to_scroll) override
void set_title(std::string &&new_title)
std::unique_ptr< WINDOW, curses_deleter > handle
bool find_line_pc(struct symtab *symtab, int line, CORE_ADDR *pc)
struct symtab * find_pc_line_symtab(CORE_ADDR pc)
tui_location_tracker tui_location
bool tui_left_margin_verbose
std::string tui_copy_source_line(const char **ptr, int *length)