Class-ify ui_out_level
This patch changes struct ui_out_level to be a real C++ class. No behavioral changes. gdb/ChangeLog: * ui-out.c (struct ui_out_level): Replace with ... (class ui_out_level): ... this. (current_level): Update. (push_level): Update. (pop_level): Update. (verify_field): Update. (ui_out_new): Update.
This commit is contained in:
parent
37e20dd659
commit
909c0aa582
|
@ -1,3 +1,13 @@
|
||||||
|
2016-12-01 Simon Marchi <simon.marchi@polymtl.ca>
|
||||||
|
|
||||||
|
* ui-out.c (struct ui_out_level): Replace with ...
|
||||||
|
(class ui_out_level): ... this.
|
||||||
|
(current_level): Update.
|
||||||
|
(push_level): Update.
|
||||||
|
(pop_level): Update.
|
||||||
|
(verify_field): Update.
|
||||||
|
(ui_out_new): Update.
|
||||||
|
|
||||||
2016-12-01 Simon Marchi <simon.marchi@polymtl.ca>
|
2016-12-01 Simon Marchi <simon.marchi@polymtl.ca>
|
||||||
|
|
||||||
* ui-out.c (struct ui_out_hdr): Replace with ...
|
* ui-out.c (struct ui_out_hdr): Replace with ...
|
||||||
|
|
65
gdb/ui-out.c
65
gdb/ui-out.c
|
@ -90,13 +90,41 @@ class ui_out_hdr
|
||||||
std::string m_header;
|
std::string m_header;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ui_out_level
|
/* A level of nesting (either a list or a tuple) in a ui_out output. */
|
||||||
|
|
||||||
|
class ui_out_level
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
explicit ui_out_level (ui_out_type type)
|
||||||
|
: m_type (type),
|
||||||
|
m_field_count (0)
|
||||||
{
|
{
|
||||||
/* Count each field; the first element is for non-list fields. */
|
}
|
||||||
int field_count;
|
|
||||||
/* The type of this level. */
|
ui_out_type type () const
|
||||||
enum ui_out_type type;
|
{
|
||||||
};
|
return m_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
int field_count () const
|
||||||
|
{
|
||||||
|
return m_field_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
void inc_field_count ()
|
||||||
|
{
|
||||||
|
m_field_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
/* The type of this level. */
|
||||||
|
ui_out_type m_type;
|
||||||
|
|
||||||
|
/* Count each field; the first element is for non-list fields. */
|
||||||
|
int m_field_count;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Tables are special. Maintain a separate structure that tracks
|
/* Tables are special. Maintain a separate structure that tracks
|
||||||
|
@ -153,7 +181,7 @@ struct ui_out
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The current (inner most) level. */
|
/* The current (inner most) level. */
|
||||||
static struct ui_out_level *
|
static ui_out_level *
|
||||||
current_level (struct ui_out *uiout)
|
current_level (struct ui_out *uiout)
|
||||||
{
|
{
|
||||||
return uiout->levels[uiout->level].get ();
|
return uiout->levels[uiout->level].get ();
|
||||||
|
@ -164,13 +192,10 @@ static int
|
||||||
push_level (struct ui_out *uiout,
|
push_level (struct ui_out *uiout,
|
||||||
enum ui_out_type type)
|
enum ui_out_type type)
|
||||||
{
|
{
|
||||||
std::unique_ptr<ui_out_level> current (new ui_out_level ());
|
std::unique_ptr<ui_out_level> level (new ui_out_level (type));
|
||||||
|
|
||||||
current->field_count = 0;
|
|
||||||
current->type = type;
|
|
||||||
|
|
||||||
|
uiout->levels.push_back (std::move (level));
|
||||||
uiout->level++;
|
uiout->level++;
|
||||||
uiout->levels.push_back (std::move (current));
|
|
||||||
|
|
||||||
return uiout->level;
|
return uiout->level;
|
||||||
}
|
}
|
||||||
|
@ -183,7 +208,7 @@ pop_level (struct ui_out *uiout,
|
||||||
{
|
{
|
||||||
/* We had better not underflow the buffer. */
|
/* We had better not underflow the buffer. */
|
||||||
gdb_assert (uiout->level > 0);
|
gdb_assert (uiout->level > 0);
|
||||||
gdb_assert (current_level (uiout)->type == type);
|
gdb_assert (current_level (uiout)->type () == type);
|
||||||
|
|
||||||
uiout->levels.pop_back ();
|
uiout->levels.pop_back ();
|
||||||
uiout->level--;
|
uiout->level--;
|
||||||
|
@ -798,7 +823,7 @@ static void
|
||||||
verify_field (struct ui_out *uiout, int *fldno, int *width,
|
verify_field (struct ui_out *uiout, int *fldno, int *width,
|
||||||
enum ui_align *align)
|
enum ui_align *align)
|
||||||
{
|
{
|
||||||
struct ui_out_level *current = current_level (uiout);
|
ui_out_level *current = current_level (uiout);
|
||||||
const char *text;
|
const char *text;
|
||||||
|
|
||||||
if (uiout->table.flag)
|
if (uiout->table.flag)
|
||||||
|
@ -814,13 +839,13 @@ specified after table_body and inside a list."));
|
||||||
level is zero. */
|
level is zero. */
|
||||||
}
|
}
|
||||||
|
|
||||||
current->field_count += 1;
|
current->inc_field_count ();
|
||||||
|
|
||||||
if (uiout->table.body_flag
|
if (uiout->table.body_flag
|
||||||
&& uiout->table.entry_level == uiout->level
|
&& uiout->table.entry_level == uiout->level
|
||||||
&& get_next_header (uiout, fldno, width, align, &text))
|
&& get_next_header (uiout, fldno, width, align, &text))
|
||||||
{
|
{
|
||||||
if (*fldno != current->field_count)
|
if (*fldno != current->field_count ())
|
||||||
internal_error (__FILE__, __LINE__,
|
internal_error (__FILE__, __LINE__,
|
||||||
_("ui-out internal error in handling headers."));
|
_("ui-out internal error in handling headers."));
|
||||||
}
|
}
|
||||||
|
@ -828,7 +853,7 @@ specified after table_body and inside a list."));
|
||||||
{
|
{
|
||||||
*width = 0;
|
*width = 0;
|
||||||
*align = ui_noalign;
|
*align = ui_noalign;
|
||||||
*fldno = current->field_count;
|
*fldno = current->field_count ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -875,7 +900,6 @@ ui_out_new (const struct ui_out_impl *impl, void *data,
|
||||||
int flags)
|
int flags)
|
||||||
{
|
{
|
||||||
struct ui_out *uiout = new ui_out ();
|
struct ui_out *uiout = new ui_out ();
|
||||||
std::unique_ptr<ui_out_level> current (new ui_out_level ());
|
|
||||||
|
|
||||||
uiout->data = data;
|
uiout->data = data;
|
||||||
uiout->impl = impl;
|
uiout->impl = impl;
|
||||||
|
@ -885,9 +909,8 @@ ui_out_new (const struct ui_out_impl *impl, void *data,
|
||||||
uiout->level = 0;
|
uiout->level = 0;
|
||||||
|
|
||||||
/* Create uiout->level 0, the default level. */
|
/* Create uiout->level 0, the default level. */
|
||||||
current->type = ui_out_type_tuple;
|
std::unique_ptr<ui_out_level> level (new ui_out_level (ui_out_type_tuple));
|
||||||
current->field_count = 0;
|
uiout->levels.push_back (std::move (level));
|
||||||
uiout->levels.push_back (std::move (current));
|
|
||||||
|
|
||||||
uiout->table.headers_iterator = uiout->table.headers.end ();
|
uiout->table.headers_iterator = uiout->table.headers.end ();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue