Browse Source

Make intrusive_list_node's next/prev private

Tromey noticed that intrusive_list_node leaves its data members
public, which seems sub-optimal.

This commit makes intrusive_list_node's data fields private.
intrusive_list_iterator, intrusive_list_reverse_iterator, and
intrusive_list do need to access the fields, so they are made friends.

Change-Id: Ia8b306b40344cc218d423c8dfb8355207a612ac5
binutils-2_39-branch
Pedro Alves 4 years ago
parent
commit
50b032ebc0
  1. 13
      gdbsupport/intrusive_list.h

13
gdbsupport/intrusive_list.h

@ -24,15 +24,26 @@
/* A list node. The elements put in an intrusive_list either inherit
from this, or have a field of this type. */
template<typename T>
struct intrusive_list_node
class intrusive_list_node
{
public:
bool is_linked () const
{
return next != INTRUSIVE_LIST_UNLINKED_VALUE;
}
private:
T *next = INTRUSIVE_LIST_UNLINKED_VALUE;
T *prev = INTRUSIVE_LIST_UNLINKED_VALUE;
template<typename T2, typename AsNode>
friend struct intrusive_list_iterator;
template<typename T2, typename AsNode>
friend struct intrusive_list_reverse_iterator;
template<typename T2, typename AsNode>
friend struct intrusive_list;
};
/* Follows a couple types used by intrusive_list as template parameter to find

Loading…
Cancel
Save