[gdb] Add template functions assign_return/set_if_changed
authorTom de Vries <tdevries@suse.de>
Mon, 19 Jun 2023 09:15:56 +0000 (11:15 +0200)
committerTom de Vries <tdevries@suse.de>
Mon, 19 Jun 2023 09:15:56 +0000 (11:15 +0200)
commit2e12e798825b9119a250f512416e04b62ed7a2a9
tree2a85823a60deeff308e615f58aba2fdde17e3a9c
parent71a75b51a62b5cbc12c68b9c4d1dcae0f8a59263
[gdb] Add template functions assign_return/set_if_changed

Add template functions assign_return_if_changed and assign_set_if_changed in
gdb/utils.h:
...
template<typename T> void assign_set_if_changed (T &lval, const T &val, bool &changed)
{ ... }
template<typename T> bool assign_return_if_changed (T &lval, const T &val)
{ ... }
...

This allows us to rewrite code like this:
...
  if (tui_border_attrs != entry->value)
    {
      tui_border_attrs = entry->value;
      need_redraw = true;
    }
...
into this:
...
  need_redraw |= assign_return_if_changed<int> (tui_border_attrs, entry->value);
...
or:
...
  assign_set_if_changed<int> (tui_border_attrs, entry->value, need_redraw);
...

The names are a composition of the functionality.  The functions:
- assign VAL to LVAL, and either
- return true if the assignment changed LVAL, or
- set CHANGED to true if the assignment changed LVAL.

Tested on x86_64-linux.
gdb/utils.c
gdb/utils.h